Git merge, który oddział połączył się w drugim?


0

Powiedzmy, że mam dwie takie gałęzie:

o---o---o---o---o master
\
 o---o---o feature

Jeśli uruchomię następujące polecenia:

$ git checkout master
$ git merge feature

co się stanie?

o---o---o---o---o master                     o---o---o---o---o master
\              /                or this       \               \   
 o---o---o---- feature                         o---o---o-------o feature  

Odpowiedzi:


2

git merge branch_namełączy branch_namesię z bieżącym oddziałem. W twoim przypadku wynik będzie

o---o---o---o---o master
\              /
 o---o---o---- feature

A zatwierdzenie scalania zostanie dodane do master.


2

Te pierwsze, zgodnie z git-mergeinstrukcją :

Opis

Uwzględnia zmiany z nazwanych zatwierdzeń (od czasu, gdy ich historia oddzieliła się od bieżącego oddziału) do bieżącego oddziału.

[...]

Załóżmy, że ... bieżąca gałąź to „ master”… Następnie ” git merge topicodtworzy zmiany dokonane w gałęzi tematu, ponieważ rozbieżne od mastermomentu aż do jej bieżącego zatwierdzenia na górze master, i zapisze wynik w nowym zatwierdzeniu wraz z nazwami dwóch rodziców zatwierdza i komunikat dziennika od użytkownika opisujący zmiany.

Lub, zachowując piękne formatowanie http://git-scm.com :

informacje o scalaniu git


1

featureOddział zostaną połączone w master. Możesz to szybko sprawdzić w tymczasowym repozytorium git.

> git init
> echo test > testfile
> cat testfile
test
> git add testfile
> git commit -m "First commit"
> git checkout -b feature
> echo test2 >> testfile
> cat testfile
test
test2
> git commit -am "Second commit"
> git checkout master
> cat testfile
test
> git merge feature
> cat testfile
test
test2

ale jeśli utworzymy gałąź feature2 i zatwierdzimy i wypchniemy plik testfile2, a później spróbujemy scalić go z master, to połączy plik testowy feature i testfile2 feature2, to samo idzie w trybie push. Czy mogę poznać przyczynę lub sposób jej uniknięcia
— brak usługi

@insoftservice Na podstawie mojego przykładu wszystkie zatwierdzenia będą zawierać, testfileponieważ były obecne w pierwszym zatwierdzeniu.
— Kris Harper

dziękuję za komentarze. Jeśli tworzysz nową gałąź, powiedz feature2 z nowym plikiem powiedz testfile2, zatwierdź go i wciśnij feature2. ale kiedy
— scalisz

@insoftservice Nie jestem do końca pewien, co mówisz. Mówisz, że masterbędzie miał jedno testfilei drugie testfile2? Takie jest oczekiwane zachowanie, ponieważ testfilebyło częścią pierwszego zatwierdzenia.
— Kris Harper

tak, plik testowy musi być obecny w master, ponieważ był częścią pierwszej gałęzi, ale w moim przypadku pokazuje, że jest on również częścią drugiej gałęzi, a jeśli istnieje trzecie zatwierdzenie z plikiem3, to pokazuje plik, plik2 i plik3 jako część trzeciej gałęzi to mój problem. Mam nadzieję, że udało mi się wyjaśnić mój problem
— brak usługi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.