使用临时分支进行更改
您目前在分支a 上并且有一些未提交的更改。让我们创建一个分支并将这些更改提交到该分支。 git 分店很便宜。随心所欲地创建它们,完成后删除它们。
git checkout -b a-temp
git add .
git commit
这将创建并切换到一个新分支a-temp。您的临时更改将提交给a-temp。 a 保持不变。现在,让我们切换到b 并尝试cherry-pick 他们:
git checkout b
git cherry-pick a-temp
成功的cherry-pick 会向b 添加一个提交,其中包含以前未提交的更改。让我们再次取消提交:
git reset HEAD^
现在,他们不再提交,b 就是它原来的样子。最初未提交的更改仍未提交。
失败的cherry-pick 表示未提交的更改与b 分支冲突。你自己去弄清楚为什么;但是,首先,让我们放松一下,回到以前的状态。
git cherry-pick --abort
git checkout a
git cherry-pick a-temp # guaranteed to work, since a-temp branched off a
git reset HEAD^
现在您又回到了a,并进行了相同的未提交更改。您可以花时间找出合并冲突的原因,以及您需要采取的措施。
在所有情况下,让我们删除临时分支,以便稍后再次尝试此技巧:
git branch -D a-temp
这种方法比使用 stash 稍微多一些工作,但在发生合并冲突的情况下更安全一些。我经常将git stash pop 与git stash drop 混淆,不得不进行一些清理工作。