Załóżmy, że mam oddział A. Teraz tworzę nową gałąź B z A i robię kilka zatwierdzeń. Załóżmy, że w tym czasie A również otrzymał kilka zmian. Czy istnieje sposób na scalenie tych nowych zatwierdzeń z B tak, aby zatwierdzenia, które wykonałem w B, były na górze?

Ilustrować:

A -> a1 -> a2 -- B created here -- -> a3 -> a4
                 B -> a1 -> a2 -> b1 -> b2

Jak połączyć tak, aby B skończyło się tak

 B -> a1 -> a2 -> a3 -> a4 -> b1 -> b2
git
1
DavidL 31 sierpień 2012, 02:09

2 odpowiedzi

Najlepsza odpowiedź

Chcesz rebase, a nie merge

Kiedy na B, zrób

git rebase A

Nie wpłynie to na gałąź A, ale przepisze najnowszą historię gałęzi B.

Wcześniej miałeś

... -> a1 -> a2 -> a3 -> a4 -> A
              \--> b1 -> b2 -> B

A potem będziesz miał:

... -> a1 -> a2 -> a3 -> a4 -> A
                          \--> b1 -> b2 -> B
4
Aaron McDaid 31 sierpień 2012, 02:15

Użyj git rebase

Mój typowy workflow, który obejmuje pracę w oddziałach i łączenie w master to:

git status # Make sure I am in the master branch, "git checkout master" if not
git pull
git checkout -b new_branch # New branch called new_branch
# do the work, tests, etc.
git add .
git commit
git checkout master
git pull # Get the very latest master
git checkout my_branch
git rebase master
git checkout master
git merge my_branch  
git push master
1
Michael Durrant 31 sierpień 2012, 02:26