2015-06-23 10 views
7

Edytuj: Dodałem informacje, które uważałem za niepotrzebne, ale nie są. Mam dwie gałęzie, A i B. Po wykonaniu trzech zmian w A, które zmienia plik.c Chcę je wybrać w B, istnieje również plik.h, który został zmieniony w A ~ 1Dlaczego ten wybór czereśni skutkuje konflikcie scalającym

> git cherry-pick A~2 
Success 
> git cherry-pick A~1 
error: could not apply 81e0723... 
hint: after resolving the conflicts, mark the corrected paths 
hint: with 'git add <paths>' or 'git rm <paths>' 
hint: and commit the result with 'git commit' 
> git status 
You are currently cherry-picking commit 81e0723. 
Unmerged paths: 
(use "git add <file>..." to mark resolution) 

    both modified: some/unrelated/file.txt 
    both modified: file.c 

Teraz patrząc na jakiś/niepowiązany/plik.txt zawiera zmiany w pliku.h gdzieś na samym środku. Wygląda to jak błąd w git. Teraz ręcznie cofnę zmiany niektórych/unrelated/file.txt i dodaję je do file.h.

+0

W przypadku niepowiązanego pliku, jakie zmiany są wyświetlane? –

+0

Czy możesz narysować wykres zatwierdzania swojej sytuacji? Mam wrażenie, że 'rebase' może zrobić to samo łatwiej. –

+0

Rozwiązałem teraz problem i napiszę szczegółową odpowiedź później dzisiaj/jutro. – crunsher

Odpowiedz

0

Wybór wiśni nie różni się od stosowania zestawu poprawek w kolejności (z korzyścią uzyskania poprzednich komunikatów zatwierdzenia). Powoduje to koniecznie pojawienie się nowych plam - które możesz zweryfikować, zauważając, że popełniają Sha są inne.

Gdy nadchodzi czas scalania, git teraz myśli, że patrzy na inną historię, ponieważ technicznie jest, a zatem konflikt scalenia.

1

Możliwe cherry-pick zmienia funkcję, która została również zmieniona wcześniej w historii B „s, tak zmienia się specjalnie w A~1 są linie, które już wyglądał inaczej od tego, co znajduje się w wersji B i git nie może zobacz, gdzie w B obowiązują zmiany cherry-pick.

Możliwe jest również, że git kontekstowy znajdzie dla zmian złe bliźnięta, które czają się gdzie indziej w kodzie (powiedzmy, wiele linii z niczym, ale niezależne nawiasy zamykające), a inne zmiany umieściły prawdziwy odpowiadający oryginał w kodzie wystarczająco daleko od miejsca, gdzie było A~1^, że polowanie na kontekst w B znajduje coś innego. Instrukcja sugeruje przerwanie wyboru i ponowienie próby z git cherry-pick -Xpatience może wystarczyć, aby uniknąć problemów z tymi, które spędzają zwykle nieuzasadnioną ilość czasu, próbując uniknąć zagubienia w morzu aparatów ortodontycznych. Here's probably a good place to start if you want details on how that really works.

Powiązane problemy