История моих фиксаций выглядит следующим образом:Как найти номера филиалов при возврате слияния?
A - B - C - D - E
\ /
X - Y
Филиал ABCDE
является master
, филиал XY
некоторые другие отрасли (например test
), и D
является слияние фиксации. HEAD
сейчас на E
. Мне нужно вернуть мой рабочий каталог в состояние A
в предположении не с использованием 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
.
Вопрос в следующем: как я действительно знаю, какое число означает, какая ветка?
Почему вы не просто «git checkout A'? Если вам нужно переключить ветку на точку A, 'git checkout A; git branch -D NAME; git branch NAME; git checkout NAME'. Вы все равно можете проверить любой из ABCDEX или Y. – Andy
Фактически я работаю с удаленным репо, и в этом случае мне разрешено только возврат и отсутствие сброса и выписки. – user3026384
Я бы создал патч между A и HEAD и применил его в обратном порядке с помощью 'patch -R'. – Kaz