2012-12-14 7 views
10

Mam dwie lokalne gałęzie git na moim komputerze - gałąź o nazwie "v2" i gałąź o nazwie "master". Łączę v2 w master, podczas gdy master jest wyrejestrowany, a gałąź head.W konflikcie git merge, jak zachować wersję, która jest scalana?

Chciałbym scalić gałąź "v2" w gałąź "master". Kiedy przeprowadzam scalanie, istnieje szereg konfliktów, które muszę rozwiązać jeden po drugim.

Dla każdego konfliktu, w jaki sposób zachować plik gałęzi "v2", a nie "główną" wersję pliku?

Prezentowane mi przez Git Wieża dla tych typów konfliktów opcje:

  • Mark FILENAME jako Ręczne Rozwiązane
  • w drodze Utrzymanie FILENAME
  • Resolve usuwając Infomacje
  • przywracania ich wersja pliku FILENAME
  • Otwórz w aplikacji zewnętrznej

Z mojego rozumienia, opcja "zatrzymania" pliku oznaczała zachowanie wersji "v2" (tej, z którą się połączyłem) i "usunięcie" pliku oznaczała brak dodawania wersji "v2" (ale zamiast tego utrzymywanie istniejącego "wzorca" "wersja). Kiedy jednak skorzystałem z opcji usuwania, to faktycznie usunęło ono cały plik z repozytorium.

Jak zachować plik gałęzi "v2", a nie "główną" wersję pliku dla tego typu konfliktów?

+0

dup: http://stackoverflow.com/questions/1823650/using-git-how-to-a-use-theirs-during-a-conflict – jchapa

+0

Pytam konkretnie związane z Klient Git Tower, w którym to przypadku podany link nie odpowiada na moje pytanie –

+0

Dobrze - przepraszam, udzielałem odpowiedzi ogólnie dla gita – jchapa

Odpowiedz

16

Nawet jeśli używasz Git Tower, można spaść do wiersza poleceń i używać

git checkout --theirs file.txt 

Oto niektóre dokumenty o tym:

http://gitready.com/advanced/2009/02/25/keep-either-file-in-merge-conflicts.html

Jeśli chcesz TYLKO użyj wieży git, zakończ scalanie, jak jest, a następnie sprawdź wersję tego pliku w innej gałęzi. Teraz wykonaj etap i zatwierdz ze zmianą - jeśli to możliwe.

Git został opracowany jako narzędzie wiersza poleceń. Przy każdym innym narzędziu, jakie kiedykolwiek stosowałem, zawsze miałem lukę w funkcjonalności. Postanowiłem objąć zamiast walczyć z projektem Gita.

Można również podłączyć coś podobnego do Beyond Compare i wybrać "narzędzie zewnętrzne", jak wspomniano w pytaniu. Tam będziesz miał możliwość wyboru strony "ich".

+0

W Git Tower nie ma opcji do sprawdzania pojedynczego pliku podczas przeglądania konfliktów seryjnych ... –

+1

Po prostu przejdź do wiersza poleceń, aby to zrobić Stan Git jest taki sam, bez względu na to, jakiego narzędzia używasz. git z wiersza poleceń. Otrzymasz wiele korzyści: scriptability, piping, uzupełnianie kart, historia sesji do sesji i inne. –

+0

Niestety, to nie odpowiada na moje pytanie. Używam Git Tower z jakiegoś powodu i dokładnie pytam, jak to zrobić w tej aplikacji. –

5

Jeśli szukasz zachować v2 ręce w dół (Chcę mistrz wyglądać dokładnie jak v2), myślę, że najłatwiejszym sposobem jest:

  • Checkout oddział chcesz scalić
  • seryjnej mistrz w branży ze strategią ours
  • Zamówienie mistrz
  • scalić oddział

To woul d wyglądać następująco:

git checkout v2 
git merge -s ours master 
git checkout master 
git merge v2 

Jeśli chcesz po prostu ten typ rozdzielczości zdarzyć się tylko na konflikty, to można zrobić:

git checkout master 
git merge -s recursive -Xtheirs v2 

można przeczytać na strategie łączą się w dokumentacji git here .

UPDATE: Niestety, nie sądzę, że Git Tower ujawnia sposób, aby to zrobić jeszcze. :-(

Powiązane problemy