2012-04-05 19 views
6

Oto scenariusz. Zrobiłem gałąź "dev" z gałęzi "master" i wykonałem kilka nowych commitów. Niektóre z tych zmian będą dotyczyć tylko mojej lokalnej maszyny programistycznej. Na przykład zmieniłem zmienną adresu URL, aby wskazywała lokalny serwer apache zamiast prawdziwego adresu URL, który został zamieszczony online (zrobiłem to dla szybkości podczas fazy testowania). Teraz chciałbym włączyć moje zmiany z gałęzi dev do gałęzi głównej, ale NIE tych zmian, które mają sens tylko w moim lokalnym środowisku.Jak scalić gałęzie w Git przez "przystojniak"

Wyobraziłem sobie coś w rodzaju scalania - opcji, która pozwoli mi wybrać zmiany, które chcę scalić linia po linii.

Ewentualnie mógłbym sprawdzić gałąź "master", ale zachować pliki w moim katalogu roboczym, tak jak to było w gałęzi "dev", a następnie dodać git add - patch. Czy to działa?

Odpowiedz

2

Może mógłbyś spróbować czegoś takiego?

git merge --squash --no-commit $YOUR_OTHER_BRANCH 
git reset HEAD 
git add -p 
git commit 
+0

Zauważ, że --squash sugeruje --no-commit, jak z najnowszego git i tak – CharlesB

6

Jednym podejściem byłoby scalenie zmian z innego oddziału, ale usunięcie treści specyficznych dla programistów przed dokonaniem scalenia.

Po pierwsze, uzyskaj zmiany, nie angażując ich w git merge --no-ff --no-commit dev.

Usuń zmian rozwojowych specyficznych albo poprzez edycję plików poszkodowanych i ich ing git add lub git reset HEAD pliki dotkniętych a następnie git add --patch części chcesz.

Następnie dokonaj scalenia. Zaletą wykonania zatwierdzenia scalenia jest to, że przyszłe scalenia będą bezbolesne. Ponieważ specyficzne dla rozwoju zatwierdzenia są uważane za scalone, przyszłe połączenia nie obejmujące elementów specyficznych dla danego projektu można wykonać za pomocą prostego git merge dev. W ten sposób można w nieskończoność utrzymywać oddzielną gałąź z własną konfiguracją, jednocześnie bezboleśnie scalając zmiany w gałęzi głównej.

+0

To wydawało się nie działać. Próbowałem git merge --no-commit dev i wróciłem: "Aktualizacja 91a6696..056b567 Fast-forward". Więc wpisałem git reset HEAD i git add --patch i jest napisane "bez zmian". – asolberg

+0

Ach, przepraszam za to, nie przewidziałem szybkiego połączenia. Wypróbuj zaktualizowane polecenie zawierające "--no-ff". To powinno zmusić do utworzenia zatwierdzenia scalenia, choć nie jest ono faktycznie popełniane. – blahdiblah

Powiązane problemy