<分区>
我如何才能只从远程存储库中 pull 未更改的文件,并保持本地更改不变,而不进行任何 merge ?
有人建议这个顺序:
git stash
git pull
git stash pop
但是,有一个明显的缺点:最后一个命令可能会发生冲突,我需要做一些事情来解决它们(比如如果我有大量冲突的文件,这会很麻烦)。
在 TFS 中,我只是“获取最新版本”,没有大惊小怪。这里有类似的东西吗?
标签 git
<分区>
我如何才能只从远程存储库中 pull 未更改的文件,并保持本地更改不变,而不进行任何 merge ?
有人建议这个顺序:
git stash
git pull
git stash pop
但是,有一个明显的缺点:最后一个命令可能会发生冲突,我需要做一些事情来解决它们(比如如果我有大量冲突的文件,这会很麻烦)。
在 TFS 中,我只是“获取最新版本”,没有大惊小怪。这里有类似的东西吗?
最佳答案
TFS get latest version 如果它们与您更改的文件有冲突,也会强制您进行 merge ,所以它实际上与 git pull 没有什么不同。
在提交时进行大量小 merge 通常比一次大 merge 更容易,这就是为什么 git 的工作流程是这样的。
在 git 中可以(如果不是一个好主意)做你要求的事情;基本上,您试图推迟对已更改文件的所有 merge ,直到您准备好提交到原始文件。为了让 git 正确跟踪这一点,您需要有一个与您 pull 入的分支分开的本地分支。
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 ...
当您准备好推送时,您将 mywork merge 到 master 并从那里推送。
再次注意,当您将 mywork merge 到 master 中时,当您为一个大 merge pull 更改时,您正在交易许多较小的 merge ,这通常不是最好的。
关于git - 在 Git 中仅 pull 未更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23806188/