Zacząłem pracować nad moją główną gałęzią, myśląc, że moje zadanie będzie łatwe. Po chwili zdałem sobie sprawę, że zajmie to więcej pracy i chcę wykonać całą tę pracę w nowym oddziale.
Jak mogę utworzyć nowy oddział i zabrać ze sobą wszystkie te zmiany bez brudzenia mistrza ?
git
git-branch
willcodejavaforfood
źródło
źródło
branch current changes
vsexisting uncommited branch
. Każdy, kto mówi po angielsku, natychmiast zauważy, że są tacy sami, ale wyszukiwarki prawdopodobnie tego nie zrobią. Zachowaj to pytanie.Odpowiedzi:
Jeśli jeszcze nie dokonałeś żadnego zatwierdzenia, wystarczyłyby tylko (1: oddział) i (3: kasa).
Lub jednym poleceniem:
git checkout -b newBranch
Jak wspomniano na
git reset
stronie podręcznika :master
gałęzi. Chcesz kontynuować polerowanie ich w gałęzi tematu, więc utwórztopic/wip
gałąź „ ” poza bieżącymHEAD
.master
gałąź, aby pozbyć się tych trzech zmian.topic/wip
gałęzi „ ” i kontynuuj pracę.Uwaga: ze względu na „niszczący” efekt
git reset --hard
polecenia (resetuje indeks i działające drzewo. Wszelkie zmiany w śledzonych plikach w działającym drzewie, ponieważ<commit>
zostały odrzucone), wolałbym:Dzięki temu nie stracę żadnego prywatnego pliku (nie dodanego do indeksu).
Ta
--soft
opcja w ogóle nie dotyka pliku indeksu ani drzewa roboczego (ale resetuje głowicę<commit>
, tak jak robią to wszystkie tryby).Z Git 2.23+ The nowa komenda
git switch
by utworzyć oddział w jednej linii (z tego samego rodzajureset --hard
, więc strzeżcie się jego wpływu):źródło
git reset --hard
podważą twoje zmiany, a jeśli nie zostaną jeszcze popełnione, są nie do odzyskania! Może potrzebujeszgit checkout -b …
git checkout -b
pierwszą.topic_wip
też by działało;)Jak stwierdzono w tym pytaniu: Git: utwórz gałąź z nieoznaczonych / niezaangażowanych zmian w master : ukrywanie nie jest konieczne.
Po prostu użyj:
git checkout -b topic/newbranch
Wszelkie niezaangażowane prace zostaną zabrane do nowego oddziału.
Jeśli spróbujesz pchać, pojawi się następujący komunikat
Po prostu zrób zgodnie z sugestią, aby utworzyć oddział zdalnie:
git push --set-upstream origin feature/feature/NEWBRANCH
źródło
Wykonaj następujące kroki:
Utwórz nowy oddział:
Kasa nowego oddziału: (to nie zresetuje pracy).
Teraz powierz swoją pracę w tym nowym oddziale:
Wykonanie powyższych kroków sprawi, że twoja oryginalna gałąź pozostanie czysta i nie będziesz musiał wykonywać żadnych operacji „git reset --hard”.
źródło
-s
kroku 3.Ponieważ nie dokonałeś jeszcze żadnych zatwierdzeń, możesz zapisać wszystkie zmiany w skrytce, utworzyć i przejść do nowej gałęzi, a następnie wrzucić te zmiany z powrotem do działającego drzewa:
źródło
git stash push
nie jest poleceniem. Prawdopodobnie chcesz użyćgit stash
lubgit stash save
. Jeśli chcesz dołączyć do schowka nieśledzone pliki, skorzystaj z--include-untracked
opcji. Podobnie, jeśli chcesz uwzględnić zarówno ukryte, jak i ignorowane pliki w skrytce, użyj--add
opcji.Aby dodać nowe zmiany do nowego oddziału i wypchnąć zdalnie:
Często zapominam dodać część źródłową, aby wypchnąć i pomylić, dlaczego nie widzę nowej gałęzi / zatwierdzenia w bitbucket
źródło