在处理一些未提交的文件时,我需要提取新代码。有冲突,所以git拒绝拉:
error: Your local changes to the following files would be overwritten by merge:
...
Please, commit your changes or stash them before you can merge.
问题1:如何提取和合并我未提交的更改?我需要继续工作,我还没准备好提交,但我想要外部代码?
问题2:我最后做了stash
后跟pull
。我现在如何将我的更改合并到新拉?如何在不破坏拉动的新变化的情况下应用我的藏品?
答案 0 :(得分:15)
使用stash
,然后pull
,使用stash pop
。
git stash
git pull
git stash pop
答案 1 :(得分:2)
在深入合并之前,我需要注意,有两个类似的解决方案可以完成任务"从远程"获取最新的更改。 有关详细信息,请参阅git pull VS git fetch git rebase。 我更喜欢rebase,因为它不会产生冗余的合并提交。
不要害怕做出承诺。你可以轻松地用它做任何你喜欢的事情(用git commit --amend
修改它,丢弃它并用git reset HEAD~1
将所有更改弹出到工作树中)直到你把它推到任何地方。
git add . # stage all changes for commit
git commit -m 'Tmp' # make temporary commit
git fetch $RemoteName # fetch new changes from remote
git rebase $RemoteName/$BranchName # rebase my current working branch
# (with temporary commit) on top of fethed changes
git reset HEAD~1 # discard last commit
# and pop all changes from it into worktree
git stash pop # this retrieves your changes
# from last stash and put them as changes in worktree
此命令不会影响您使用fetch
系列(fetch
,pull
,...)中的任何命令获得的提交。
答案 2 :(得分:-1)
Git提供了有关其功能的出色文档。对于这种情况,您需要stach,您可以在以下几个示例中查找: https://git-scm.com/book/en/v1/Git-Tools-Stashing