只拉取Git中未更改的文件

3

我该如何从远程仓库中只拉取未更改的文件并保留本地更改,而不进行任何合并?

有人建议使用以下步骤:

git stash
git pull
git stash pop

然而,有一个显著的缺点:在最后一条命令上可能会出现冲突,我需要做些什么来解决它们(比如如果我有大量的冲突文件,这可能会变得烦人)。

在 TFS 中,我只需执行 "获取最新版本",不费吹灰之力。在这里是否有类似的功能?


这个问题有特定的条件,使它不同于建议的问题。 - antlersoft
1
@antlersoft,问题git pull保留本地更改是一个合适的重复问题。 - user456814
2个回答

6
TFS的“获取最新版本”也会在你的更改文件与冲突时强制进行合并,因此与git pull没有太大区别。通常,进行许多小型合并比在提交时进行一次大型合并更容易,这就是为什么git的工作流程是这样的原因。尽管不是很好的想法,但在git中实现你所要求的是可能的。基本上,你正在尝试推迟所有对你更改的文件的合并,直到你准备提交到origin。为了让git正确跟踪这个过程,你需要有一个与你拉取的分支不同的本地分支。
git checkout -b mywork # Create local branch
# ... hack away ...

# When you want to get changes from origin.  Note
# that you can script this part to do it as one step.
git commit          # Commit my changes to local branch
git checkout master # Go back to branch tracking origin
git pull            # Retrieve changes from origin
git checkout mywork

# Here's the tricky part; merge from master, taking your
# code wherever there's a conflict, and *not* recording as
# a merge; if recorded as a merge, you'll overwrite changes
# in master when you merge back
git merge --squash --strategy-option=ours master

# ... hack away ...

当你准备好推送时,你将我的工作合并到主分支(master)并从那里推送。

再次注意,当你拉取改动并将其合并到主分支(master)时,你正在交换许多小的合并操作,而这通常不是最佳方式。


1

你总是可以只使用fetch来获取变更,而不是使用pull

当你使用fetch时,Git会将变更从服务器拉到远程分支上,例如当你使用fetch master时,它会更新origin/master。这样你就可以查看新的变更而不会影响你本地的master分支。

注意:当你使用pull时,Git实际上是先fetch变更,然后再将其合并到你的分支中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接