Mam repozytorium, które jest rozwidlone z GitHub, w którym wprowadzono kilka modyfikacji. Jednak w pewnym zatwierdzeniu kilka plików zostało zmienionych, dla których chcę przesłać żądanie ściągnięcia, pozostawiając inne zmodyfikowane pliki poza żądaniem.
Czy żądania ściągnięcia łączą wszystkie zatwierdzenia, czy też muszę zrobić coś specjalnego, aby odizolować to zatwierdzenie?
2 odpowiedzi
Żądanie ściągnięcia złożone z całych zatwierdzeń, musisz podzielić to zatwierdzenie na dwa oddzielne zatwierdzenia, z których jeden zawiera zmianę do wprowadzenia w żądaniu ściągnięcia, a drugi przechowuje pozostałe zmiany. Aby to zrobić, potrzebujesz git rebase -i
, zobacz na przykład Jak mogę podzielić zatwierdzenie Git zakopane w historii? dla dobrego wyjaśnienia, jak to zrobić.
Po podzieleniu zatwierdzenia przenieś te, które chcesz uwzględnić, do gałęzi tematycznej, zobacz na przykład Jak przenieść niektóre zatwierdzenia do innej gałęzi w git?, ale zależy to od tego, czy zatwierdzenia, które powodują twoje żądanie ściągnięcia, są sekwencyjne.
W końcu możesz wypchnąć na Github i utworzyć żądanie ściągnięcia ze swojej gałęzi tematycznej.
git cherry-pick
jest nieocenionym narzędziem.
Żądania ściągnięcia łączą gałęzie. Jeśli więc chcesz wyizolować niektóre rzeczy dla żądania ściągnięcia, najlepiej umieścić te zmiany w osobnej gałęzi.
Zaletą jest to, że możesz zmienić pull request, wypychając nowe zmiany do tej gałęzi (nawet push -f, jeśli musisz zmienić już wypchnięte zatwierdzenia).
Podobne pytania
Powiązane pytania
Nowe pytania
git
Git to rozproszony system kontroli wersji typu open source (DVCS). Użyj tego tagu w przypadku pytań związanych z używaniem i przepływami pracy Git. NIE UŻYWAJ tagu [github] w przypadku problemów związanych z Git tylko dlatego, że repozytorium jest hostowane na GitHub. Nie używaj również tego tagu w przypadku ogólnych pytań programistycznych, które dotyczą repozytorium Git.
git cherry-pick
stał się absolutnie nieoceniony. Powinienem był to wychwycić dużo wcześniej niż ja.