/ / git workflow i łączenie zmian z mastera do gałęzi - git, merge, branch, rebase

git workflow i łączenie zmian z master do gałęzi - git, merge, branch, rebase

Zmagając się z SVN powiedziano mi, że powinienemsprawdź GIT, ponieważ gałęzie będą idealne dla przepływu pracy, który próbuję osiągnąć. Mylę się i myślę, że mam teraz uporządkowane podstawy GIT.

Zasadniczo mamy pewne centralne ramyz naszych klientów korzysta, i chcę mieć trunk / master i normalnie korzystać z gałęzi, do dev / wypróbowania rzeczy, ale chciałbym także stworzyć gałęzie dla każdego klienta, dzięki czemu mógłbym pracować nad zmianami w kodzie klienta . Te gałęzie zawsze będą odgałęzieniem i nigdy nie zostaną scalone z powrotem do pnia / wzorca.

Najważniejszą rzeczą, którą próbuję osiągnąć, jest to, że mogę z łatwością scalić wszystkie zmiany z pnia / wzorca do różnych gałęzi klienta, i jestem zdezorientowany, jeśli muszę scalić lub zmienić bazę.

Moje pytanie ... Czy powinienem zawsze używać do tego podstawy, a jeśli tak, dlaczego? (ponieważ chcę zachować indywidualne zatwierdzenia w każdym oddziale?)

Edytować Więc tworzę repozytorium, a na tym repozyku mówię file.php z $x = 1

  • Popieram to mistrz
  • Tworzę gałąź o nazwie client1
  • W client1 Dodaję nowy plik i zatwierdzam
  • W client1 Zmieniam plik file.php tak $x = 2

Git Log przed scaleniem

  • W mistrz Wprowadzam zmiany do file.php, ale jest to nowa linia, a $ x pozostaje $x = 1
  • W client1 Łączę się mistrz i wywołać konflikt $x

Czy to dlatego, że dodaję nową linię do pliku file.php sąsiadującego z $x że to powoduje konflikt?

Odpowiedzi:

2 dla odpowiedzi № 1

Powinieneś się połączyć. Rebasing przyjmie wszystkie zmiany na master, ponieważ gałąź oddzieliła się od master i odtwarzać je na górze oddziału. Oznacza to, że każde zatwierdzenie na master zostanie zduplikowane dla każdej gałęzi klienta, którą śledzisz.

Scalanie jest semantycznie tym, co robisz. Wynikowy wykres zatwierdzenia będzie wyglądał znacznie ładniej, a Git będzie miał łatwiejszy sposób na przeprowadzanie scaleń, ponieważ po każdej scaleniu historia mistrza stanie się częścią historii własnej gałęzi - Git będzie musiał brać pod uwagę tylko zatwierdzenia na master od ostatniego scalenia, zamiast ponownego rozpatrzenia każdy commit na mistrza.