Jeśli mam n zatwierdzeń, jak mogę rozgałęzić się od zatwierdzenia n-3?
Widzę skrót każdego zatwierdzenia.
git
branch
git-branch
Doug
źródło
źródło
git push origin BRANCH_NAME
<sha1-of-commit>
uruchomienia,git checkout -b <name-of-branch> <sha1-of-commit>
ale jeśli gałąź już istniejegit checkout -B <name-of-branch> <sha1-of-commit>
Aby to zrobić na github.com:
źródło
Magię można wykonać za pomocą git reset .
Utwórz nowy oddział i przełącz się na niego (aby wszystkie najnowsze zatwierdzenia były tutaj przechowywane)
git checkout -b your_new_branch
Wróć do poprzedniej działającej gałęzi (zakładając, że jest to master)
git checkout master
Usuń ostatnie x zatwierdzeń, utrzymuj master w czystości
git reset --hard HEAD~x # in your case, x = 3
Od tego momentu wszystkie ostatnie x zatwierdzeń znajdują się tylko w nowej gałęzi, a nie w poprzedniej działającej gałęzi (master).
źródło
git reset --hard
nie jest dobrym pomysłem, jeśli już zepchnąłeś zobowiązanie do powstania ...git push --force
jeśli już wcześniej pchnąłeś gałąźJeśli nie masz pewności, z którego zatwierdzenia chcesz rozgałęzić się z wyprzedzeniem, możesz sprawdzić zatwierdzenia i zbadać ich kod (patrz źródło, kompilacja, test) przez
po znalezieniu zatwierdzenia, które chcesz rozgałęzić, możesz to zrobić z zatwierdzenia (tzn. bez powrotu do głównego), po prostu tworząc gałąź w zwykły sposób:
źródło
źródło
git branch branchname <sha1-of-commit>
” (od zaakceptowanej odpowiedzi)?git checkout -b
do tworzenia nowego oddziału.Szybki sposób na wykonanie tego w repozytorium Github byłby następujący:
źródło
Po prostu uruchom:
Na przykład :
checkout
Polecenie z parametrem-b
będzie tworzyć nowy oddział I będzie się przełączać cię do niegoźródło
git fetch
igit branch
polecenie w folderze projektu za pomocą terminala, a następnie sprawdź, czy gałąź funkcji istnieje, jeśli tak, to tak, oczywiście nie będzie można utworzyć gałęzi z usuniętych gałęzi, możesz również cofnąć usunięcie gałęzi, jeśli oddział zniknąłŚwietnie powiązane pytanie brzmi: jak do cholery wymyśliłeś to, używając
--help
opcji git? Spróbujmy tego:Widzimy ten wynik:
Gobbledegook.
Wyszukaj w kolejnym tekście słowo „zatwierdzenie”. Znajdujemy to:
Dostajemy gdzieś!
Teraz skup się na tej linii gobbledegook:
Kondensuj to do tego:
I zrobione.
źródło
Aby to zrobić w Eclipse:
Stworzy dla ciebie lokalny oddział. Następnie za każdym razem, gdy wprowadzasz zmiany, twoja gałąź będzie wypychana na zdalny serwer.
źródło
Możesz to zrobić w Skrytce.
źródło
Byłem w stanie to zrobić tak:
Gdzie musisz wpisać wartość pominięcia. 0 oznacza ostatni, 1 poprzedni, 2 poprzedni, itd.
źródło
HEAD~1
(gdzie 1 oznacza 1 zatwierdzenie z powrotem)?To tworzy gałąź za pomocą jednego polecenia:
Wolę ten sposób lepiej niż te opublikowane powyżej, ponieważ tworzy on gałąź natychmiast (nie wymaga później dodatkowej komendy push).
źródło
Korzystanie z Sourcetree | Najłatwiejszy sposób.
źródło
Oto co zrobiłem:
W tym przypadku
8a75b001096536b3216022484af3026aa9c7bb5b
był i stary commit należący domaster
oddziału.źródło
Przejdź do konkretnego zatwierdzenia repozytorium git
Czasami pracując nad repozytorium git, chcesz wrócić do określonego zatwierdzenia (rewizji), aby mieć migawkę swojego projektu w określonym czasie. Aby to zrobić, potrzebujesz skrótu SHA-1 zatwierdzenia, który można łatwo znaleźć sprawdzając dziennik za pomocą polecenia:
który da ci zwartą listę wszystkich zatwierdzeń i krótką wersję skrótu SHA-1.
Teraz, gdy znasz skrót do zatwierdzenia, do którego chcesz przejść, możesz użyć jednego z następujących 2 poleceń:
lub
sprawdzić
git checkout <commit> <paths>
Mówi gitowi, aby zastąpił bieżący stan ścieżek ich stanem w danym zatwierdzeniu. Ścieżki mogą być plikami lub katalogami.
Jeśli nie podano gałęzi, git zakłada zatwierdzenie HEAD.
Jeśli nie podano ścieżki, git przechodzi
HEAD
do podanego zatwierdzenia (zmieniając tym samym zatwierdzenie, nad którym siedzisz i pracujesz).Resetowanie
Jeśli jesteś na gałęzi (zwykle powinieneś być),
HEAD
a gałąź ta jest przenoszona do zatwierdzenia.Jeśli jesteś w
HEAD
stanie odłączonym , git reset się poruszaHEAD
. Aby zresetować gałąź, najpierw ją sprawdź.Jeśli chcesz dowiedzieć się więcej o różnicy między resetem git a kasą git, polecam przeczytać oficjalny blog git .
źródło
git log --abbrev-commit --pretty=oneline
może być skróconegit log --oneline
Dla użytkowników Git GUI możesz wizualizować całą historię (jeśli to konieczne), a następnie kliknąć prawym przyciskiem myszy zatwierdzenie, z którego chcesz rozgałęzić i wprowadzić nazwę oddziału.
źródło
Aby wykonać zaakceptowaną odpowiedź w programie Visual Studio 2015 i 2017:
Kliknij zmiany (czerwona strzałka powyżej)
Kliknij opcję Działania (czerwona strzałka powyżej) i kliknij opcję Wyświetl historię w menu DropDown
I otworzy się nowa karta:
I powinieneś kliknąć prawym przyciskiem myszy poprzednie zatwierdzenie, do którego chcesz przywrócić kod:
Wybierz do kasy nowego oddziału i voilá!
Poniżej, choć nie jest to pytanie OP, ale robię dużo, a ten jest podstępny, przynajmniej dla mnie: jeśli chcesz powrócić do poprzedniego zatwierdzenia, bez kasy nowego oddziału, NIE wybieraj cofania (! ?); powinieneś wybrać przedefiniowanie - zmieszany lub - twardy:
źródło
jeśli używasz drzewa źródeł, które jest dość proste.
źródło
Jeśli szukasz rozwiązania opartego na wierszu poleceń, możesz zignorować moją odpowiedź. Sugeruję, abyś użył GitKraken . To niezwykły klient interfejsu git. Pokazuje drzewo Git na stronie głównej. Możesz po prostu na nie spojrzeć i wiedzieć, co się dzieje z projektem. Wystarczy wybrać konkretny zatwierdzenie, kliknąć go prawym przyciskiem myszy i wybrać opcję „Utwórz gałąź tutaj”. Zostanie wyświetlone pole tekstowe do wprowadzenia nazwy oddziału. Wpisz nazwę oddziału, wybierz „OK” i gotowe. Jest naprawdę bardzo łatwy w użyciu.
źródło