我的提交历史如下所示:
A - B - C - D - E
\ /
X - Y
分支ABCDE是master,分支XY是其他分支(例如test),并且D是合并提交。HEAD现在是在E。我需要在不使用, onlyA的假设下将我的工作目录返回到 的状态。据我所知,在这种情况下,这可以通过两种方式完成:git reset --hard <SHA1(A)>git revert
第一种方式:
git revert --no-commit <SHA1(E)>
git revert -m 1 --no-commit <SHA1(D)>
git revert --no-commit <SHA1(C)>
git revert --no-commit <SHA1(B)>
git commit -m "Reverted to state A"
第二种方式:
git revert --no-commit <SHA1(E)>
git revert -m 2 --no-commit <SHA1(D)>
git revert --no-commit <SHA1(Y)>
git revert --no-commit <SHA1(X)>
git revert --no-commit <SHA1(B)>
git commit -m "Reverted to state A"
一个绊脚石是git revert -m。在这个例子中,我假设1允许沿着分支继续恢复链master,并且2- 沿着分支test。
问题是:我怎么知道哪个数字代表哪个分支?