Answers:
事实证明,如果Git不能很好地应用,它足够聪明以至于不会丢下任何东西。我可以通过以下步骤达到所需的状态:
git reset HEAD .:(请注意尾随点)git stashgit checkout mastergit fetch upstream; git merge upstream/mastergit checkout new-branch; git rebase mastergit stash apply stash@{1}git stash pop:“应用状态可能会因冲突而失败;在这种情况下,不会从存储列表中删除该状态。您需要git stash drop手动解决冲突,然后手动调用。” (git-scm.com/docs/git-stash)–
幸运的是git stash pop并没有改变藏匿在冲突的情况下!
因此,无需担心,只需清理代码并重试即可。
假设您的代码库之前是干净的,则可以使用以下命令返回到该状态:git checkout -f
然后做您忘记的事情,例如,git merge missing-branch
之后git stash pop再次触发并获得与之前冲突的相同存储库。
注意:存储是安全的,但是,工作目录中未提交的更改不是安全的。他们可能会搞砸。
git stash pop尝试自动合并,冲突并保留它。
git stash pop根据需要随时调用它,直到结束而没有冲突。因此,发生冲突后,是的,工作目录陷入混乱,但是,您可以清理它并git stash pop再次调用。
git checkout -f!
这里的说明有点复杂,所以我将提供一些更简单的方法:
git reset HEAD --hard 放弃对当前分支的所有更改
... 根据需要执行中介工作
git stash pop 准备好以后再重新弹出存储库
git stash drop作为摆脱#2多余垃圾的最后一步。