Mam przypadek, w którym Github Repo Master obecnie ma serię indywidualnych żądań ciągłych, które zostały już połączone w mistrzu. Chcę powrócić do powiedzenia 20 ostatnich połączonych żądań, ale zrób to z linii poleceń i zachować historię.

Podobne pytanie zostało oznaczone jako duplikat przywrócenia wielu połączenia

Jednak odpowiedzi podane jako już istniejące nie radzą sobie z konkretną kwestią tego, co dzieje się, gdy wszystko, co chcesz powrócić, pochodzi z serii żądań ciągnięcia, które są łączące. Korzystanie z opcji -M z Git Revert jest dobre dla jednej scalania w prawo? Myślę więc, że odpowiedź brzmi, że nie ma dobrego sposobu (z linii poleceń), aby szybko przywrócić serię indywidualnych żądań ciągłych, które zostały połączone i zachować historię? Popraw mnie, jeśli się mylę. Jeśli muszę zrobić jeden na raz, równie dobrze mogę użyć konsoli GitHub i kliknąć Przyczyń się dla każdego.

1
Zak Keirn 20 marzec 2020, 01:45

2 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz mieć pojedynczą (późniejszą) rewizję, w której przywrócisz zmiany ze wszystkich tych łączy, możesz to zrobić:

git checkout <id-of-revision> # use the ID of the revision you would like to get your project back to (in terms of content)
git reset --soft <the-branch> # the branch where we want to add a revision to revert all of that
git commit -m "Reverting"
# If you like the results
git branch -f <the-branch> # move branch pointer to this new revision
git checkout <the-branch>
1
eftshift0 19 marzec 2020, 23:41

Krok 1

Utwórz pierwszy oddział kopii zapasowej i trzymaj go na bok. (Backup-Branch) Utwórz nowy oddział z Master lub Dev gdziekolwiek chcesz przywrócić (Oddział roboczy)

git revert commitid1

git revert commitid2

git revert commitid3 .... jest najlepszą opcją.

Nie robisz git reset --hard commitid Siła indeksowanie.

Przywołanie jest bezpieczną opcją.

Zrobiłem 180 powrotnych zobowiązań.

Krok 2

git log -180 --format=%H --no-merges Użyj tego polecenia, aby wydrukować wszystkie identyfikatory zatwierdzania.

Ignoruje identyfikator połączenia scalania.

commitid1 commitid2 commitid3 ..... To będzie drukować w ten sposób.

Skopiuj go do Sublime Ctrl + A -> Ctrl + Alt + L add

git revert --no-commit commitid1

git revert --no-commit commitid2

git revert --no-commit commitid3

Skopiuj wszystko i wklej w wierszu polecenia. Wszystkie twoje zobowiązania zostaną powrócone. Teraz wykonaj zatwierdzenie git.

Następnie wykonaj pchnięcie git. Utwórz żądanie scalania do opanowania.

Krok 3

Jak zweryfikować?

Utwórz nowy oddział (weryfikacja-branża).

Możesz to zweryfikować, robiąc

git reset -hard commitidX. To jest identyfikator zatwierdzenia, do którego musisz powrócić.

git status Daje ci liczbę zobowiązań za mistrzem.

git push -f

Teraz porównuj ten oddział z oddziałem roboczym, tworząc żądanie ciągnięcia między nimi. Nie zobaczysz żadnych zmian, oznacza, że twój oddział pomyślnie powrócił do wersji, której szukasz.

0
Gomathi Nayagam 16 marzec 2021, 22:00