我可以找到类似场景的答案,但不是这个。
我检查了分支B.我进行了大量更改并添加了大量文件。
然后我需要快速修复分支A上的稳定代码。我在忘记分支A之前忘了在分支b上提交。
我在分支A上进行了修复并执行了<audio src="1.wav" onended="window.location.reload()" />
,git add -a
。然后我注意到我在分支B上添加的所有新文件现在已经在分支A上提交了(我没有意识到git是这样工作的)。新文件现在已经从分支B消失了。
我查看了如何修复,所以我恢复了分支A上的提交。
如果你想知道我为什么这么白痴,我才真正知道如何正确使用TFS。
如何让我的分支B回到原来的状态?我不介意再次在分支A上快速修复。
答案 0 :(得分:0)
让XXX成为分支A上提交的SHA
(你可以通过
获得git checkout A
git log
)
执行以下
git checkout B
git cherry-pick XXX -n
git reset HEAD .
这将从提交XXX中选择更改并将其应用于当前状态。这将包含您在B中需要的所有更改,但也包含对A的小修复。接下来,撤消此快速修复,您的工作目录就像您要求的那样
答案 1 :(得分:0)
首先,保留对已删除的分支A的更改。您可以使用git reflog
查看&#34;孤儿&#34;承诺,包括你刚恢复的那个。使用git branch tmpA <commit-from-git-reflog>
。现在你有一个(临时)分支tmpA
包含你所有的变化(希望所有的变化)
然后你需要修复你的A
分支。您应该结帐一个分支(git checkout A
),然后您可以重新应用来自tmpA
w / o提交的更改。基本命令是git cherry-pick --no-commit <tmpA>
,但您可以使用git gui
或备用GUI客户端来检查提交图。
在git cherry-pick --no-commit ...
之后,您将更改应用于工作树并计划提交但未实际提交。您应该检查更改(如果您更喜欢控制台,请再次通过git gui
或git add -i
)。您可以添加和删除计划的更改(请注意,工作树保持不变,只记录下次提交时要提交的内容)。
完成对分支A
选择适当的更改后,您应该提交它们并切换到分支B
。再次git cherry-pick --no-commit tmpA
,检查更改并从git索引中添加/删除它们,其中git记录要提交的内容。
完成修复后,您可以使用git branch -D tmpA