Mój zespół złożony z około 10 osób korzysta z GitHub do naszego projektu rozwoju. Mamy główną gałąź develop
, z której tworzymy gałęzie funkcji do wykonywania zadań rozwojowych, a następnie scalamy gałęzie funkcji z powrotem do develop
. Używamy wniosków Pull Request do przeglądania kodu. Wszystkie standardowe rzeczy.Czy istnieje sposób, aby "ukryć" scalać zatwierdzenia w GitHub, porównując gałęzie?
Jednak jedna rzecz mnie zawracała.
Załóżmy, że programista A tworzy gałąź funkcji o nazwie myFeature
. W tej gałęzi wykonuje on jedną linię zmiany do pojedynczego pliku, na przykład Loop.java
.
W międzyczasie 100 niepowiązanych zatwierdzeń zostaje połączonych z innymi oddziałami przez innych deweloperów do develop
.
Teraz, zanim programista A przesyła swoje zmiany i wysyła żądanie pobrania, chce się upewnić, że jego zmiany działają z najnowszym numerem develop
. W ten sposób, że łączy szef develop
do swojego oddziału:
git checkout develop
git pull
git checkout myFeature
git merge develop
# testing and stuff
git push origin myFeature
Ostatnia komenda (git merge develop
) zawsze skutkuje nowy popełnić. Tak więc, gdy programista A przesyła swoje zmiany i wydaje żądanie pobrania dla myFeature
, recenzent żądania wyciągnięcia zobaczy 101 zgłoszeń dodanych do oddziału myFeature
: jedna z nich ma zmianę na Loop.java
, a pozostałe 100 nie są powiązane i już zostały połączone w develop
. Tutaj służą one jedynie jako szum, aby ukryć to, co naprawdę zmieniło się w tej gałęzi od programistyA.
Czy istnieje łatwy sposób, aby recenzent mógł powiedzieć, co zmieniło się po zmianach wprowadzonych przez dewelopera A i "ukryć" zatwierdzenia pochodzące z scalenia z develop
? Mam na myśli kartę "Files Changed" w widoku Pull Request. (Zdaję sobie sprawę, że mogłem użyć zakładki "Zatwierdzenia" i przejść przez wszystkie zatwierdzenia jeden po drugim, aby zobaczyć, co się zmieniło, ale może to być męczące, jeśli jest dużo zatwierdzeń. Podoba mi się pojedynczy, ostateczny widok Zakładka "Files Changed".)
EDIT: git rebase develop
został zaproponowany jako opcja, ale nie sądzę, że jest to właściwe dla naszych celów. Często wielu deweloperów pracuje nad myFeature
, więc rebase może narobić zamieszania, ponieważ przepisuje historię.
EDIT 2: Jak @kan uprzejmie wskazał poniżej, GitHub jest rzeczywiście zachowuje się ładnie: tak, to pokaże scalanie popełnić w „zobowiązuje” zakładkę Pull Request (co jest całkowicie w porządku), ale pod na karcie "Zmienione pliki" wymieniono tylko pliki zmienione w tej gałęzi funkcji (a nie te z scalania). Właśnie tego szukam.
Jeśli gałąź 'myFeature' została rozgałęziona od' develop', a on połączył się z ostatnimi zmianami z 'develop', nie sądzę, że w GitHub powinny pojawić się setki dodatkowych commitów, myślę, że powinny to być tylko zatwierdzenia które są unikalne dla tej gałęzi. Czy A wykonuje polecenie ściągnięcia do niewłaściwej gałęzi, np. Do 'master' zamiast rozwijać? –
@ColdHawaiian: Nie, A rozgałęzia się od 'develop', a następnie łączy' develop', a następnie wykonuje polecenie ściągnięcia, aby połączyć się z 'develop'. Dlatego też byłem zdezorientowany. – stepthom
Inną możliwością jest to, że wersja A historii rozwinięcia A została już zmodyfikowana (tj. Zmiany zatwierdzenia są różne w przypadku odpowiednich zatwierdzeń). Może zatwierdzenia A zostały już przepisane z 'rebase',' cherry-pick' lub 'commit --amend'? Czy używasz Git z linii poleceń, czy gui jak GitHub dla Windows? GitHub dla Windows robi dziwne rzeczy z pośrednim przekierowaniem. –