Czy możliwe jest zatwierdzanie i przekazywanie zmian z jednej gałęzi do drugiej.
Załóżmy, że zatwierdziłem zmiany w BRANCH1 i chcę przekazać je do BRANCH2 .
Czy z BRANCH1 można zrobić:
git push origin **BRANCH2**
A następnie zresetować BRANCH1?
git
git-branch
jviotti
źródło
źródło
branch1
i drugiebranch2
musi znajdować się na pilocie? Co jeśli chcesz przesyłać z lokalnegobranch1
na zdalnyorigin branch2
?<remote>/<branch>
git push origin :branch2
myśląc, że po prostu wypchnie bieżącą lokalną gałąź do pilotabranch2
, zamiast tego usunie pilotabranch2
! Prawidłowy sposób togit push origin HEAD:branch2
.Z pewnością będzie to działało tylko wtedy, gdy będzie przewijać do przodu BRANCH2 lub jeśli go wymusisz. Prawidłowa składnia, aby to zrobić, to
Zobacz opis „refspec” na stronie man git push, aby uzyskać więcej szczegółów na temat jego działania. Zauważ również, że zarówno wymuszone wypychanie, jak i resetowanie to operacje, które „przepisują historię” i nie powinny być podejmowane przez osoby o słabym sercu, chyba że masz absolutną pewność, że wiesz, co robisz w odniesieniu do jakichkolwiek zdalnych repozytoriów i innych ludzie, którzy mają widelce / klony tego samego projektu.
źródło
git push --force remote local-branch:remote-branch
.To jest bardzo proste. Załóżmy, że dokonałeś zmian w Oddziale A, który znajduje się zarówno w lokalnie, jak i zdalnie, ale chcesz przekazać te zmiany do Oddziału B, który nigdzie nie istnieje.
Krok 01: utwórz nową gałąź B i przejdź do niej
Krok 02: Dodaj zmiany w nowym oddziale lokalnym
Krok 03: Zatwierdź zmiany
Krok-04: Przekaż zmiany do nowej gałęzi B . Poniższe polecenie utworzy również nowy oddział B zdalnie
Teraz można zweryfikować z bitbucket że oddział B będzie miał jeszcze jeden popełnić niż oddział A . A kiedy przejdziesz do kasy oddziału A, zmiany te nie będą dostępne, ponieważ zostały wprowadzone do gałęzi B .
Uwaga: Jeśli zatwierdziłeś swoje zmiany w gałęzi A, a następnie chcesz przenieść te zmiany do nowej gałęzi B , najpierw musisz je zresetować. #HappyLearning
źródło
W moim przypadku miałem jedno zatwierdzenie lokalne, które nie zostało wypchnięte
origin\master
, ale zobowiązało się do mojego lokalnegomaster
oddziału. To lokalne zatwierdzenie powinno być teraz przekazane do innego oddziału.Z Git Extensions możesz zrobić coś takiego:
Możesz to również zrobić w wierszu poleceń GIT . Przykład skopiowany od Davida Christensena :
źródło
Mam zły wynik
git push origin branch1:branch2
polecenia:W moim przypadku
branch2
został usunięty ibranch1
został zaktualizowany o kilka nowych zmian.Dlatego jeśli chcesz, aby zmiany wprowadzane były tylko
branch2
odbranch1
, wypróbuj poniższe procedury:branch1
:git add .
branch1
:git commit -m 'comments'
On
branch1
:git push origin branch1
On
branch2
:git pull origin branch1
On
branch1
: powrót do poprzedniego zatwierdzenia.źródło
możesz to zrobić łatwo
źródło
źródło
Zaangażowałeś się w BRANCH1 i chcesz pozbyć się tego zatwierdzenia bez utraty zmian? git reset jest tym, czego potrzebujesz. Zrobić:
jeśli chcesz, aby BRANCH2 był nowym oddziałem. Możesz również połączyć to na końcu z innym oddziałem, jeśli chcesz. Jeśli BRANCH2 już istnieje, zostaw ten krok na zewnątrz.
Następnie wykonaj:
jeśli chcesz zresetować zatwierdzenie w gałęzi, którą zatwierdziłeś. To wymaga zmian trzech ostatnich zatwierdzeń.
Następnie wykonaj następujące czynności, aby przywrócić resetowane zatwierdzenia do BRANCH2
To źródło było pomocne: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
źródło