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?

70
Qix - MONICA WAS MISTREATED 30 wrzesień 2012, 15:20
1
 – 
jww
11 styczeń 2016, 16:15
3
Lata później git cherry-pick stał się absolutnie nieoceniony. Powinienem był to wychwycić dużo wcześniej niż ja.
 – 
Qix - MONICA WAS MISTREATED
29 grudzień 2016, 23:29
 – 
Jim G.
15 kwiecień 2018, 20:38

2 odpowiedzi

Najlepsza odpowiedź

Żą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.

42
Community 23 maj 2017, 15:26
4
Dla przypomnienia, git cherry-pick jest nieocenionym narzędziem.
 – 
Qix - MONICA WAS MISTREATED
11 sierpień 2015, 23:34
16
Widzę, że jest to przyjęta odpowiedź; ale gdzie dokładnie są kroki, które należy wykonać, aby można było wprowadzić zmiany w jednym pliku w żądaniu ściągnięcia, które modyfikuje wiele plików?
 – 
jww
11 styczeń 2016, 16:13
Co się dzieje, gdy jesteś osobą scalającą wniosek, a nie składasz wniosku? To narzędzie jest takie kiepskie...
 – 
jww
9 maj 2017, 06:31
Następnie prosisz autora żądania ściągnięcia o zmianę bazy na główną i uwzględnienie tylko określonych zmian. :)
 – 
Qix - MONICA WAS MISTREATED
15 maj 2017, 11:32

Żą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).

16
Ikke 30 wrzesień 2012, 15:23
3
Biorąc pod uwagę, że wprowadziłem już zmiany w jednej gałęzi, jak byś to osiągnął?
 – 
Alan Baljeu
15 styczeń 2020, 23:04