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  
NoNameProvided
źródło

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.

gronostaj
źródło
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

bertieb
źródło
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
Kris Harper
źródło
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