git - 如何提取和合并我未提交的更改?

时间:2015-11-05 01:27:19

标签: git

在处理一些未提交的文件时,我需要提取新代码。有冲突,所以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。我现在如何将我的更改合并到新拉?如何在不破坏拉动的新变化的情况下应用我的藏品?

3 个答案:

答案 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将所有更改弹出到工作树中)直到你把它推到任何地方。

答案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

答案2

git stash pop    # this retrieves your changes
    # from last stash and put them as changes in worktree

此命令不会影响您使用fetch 系列fetchpull,...)中的任何命令获得的提交。

答案 2 :(得分:-1)

Git提供了有关其功能的出色文档。对于这种情况,您需要stach,您可以在以下几个示例中查找: https://git-scm.com/book/en/v1/Git-Tools-Stashing