我该如何从远程仓库中只拉取未更改的文件并保留本地更改,而不进行任何合并?
有人建议使用以下步骤:
git stash
git pull
git stash pop
然而,有一个显著的缺点:在最后一条命令上可能会出现冲突,我需要做些什么来解决它们(比如如果我有大量的冲突文件,这可能会变得烦人)。
在 TFS 中,我只需执行 "获取最新版本",不费吹灰之力。在这里是否有类似的功能?
我该如何从远程仓库中只拉取未更改的文件并保留本地更改,而不进行任何合并?
有人建议使用以下步骤:
git stash
git pull
git stash pop
然而,有一个显著的缺点:在最后一条命令上可能会出现冲突,我需要做些什么来解决它们(比如如果我有大量的冲突文件,这可能会变得烦人)。
在 TFS 中,我只需执行 "获取最新版本",不费吹灰之力。在这里是否有类似的功能?
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)时,你正在交换许多小的合并操作,而这通常不是最佳方式。
你总是可以只使用fetch
来获取变更,而不是使用pull
。
当你使用fetch
时,Git会将变更从服务器拉到远程分支上,例如当你使用fetch
master
时,它会更新origin/master
。这样你就可以查看新的变更而不会影响你本地的master
分支。
注意:当你使用pull
时,Git实际上是先fetch
变更,然后再将其合并到你的分支中。