Rozwidliłem repozytorium github i pracowałem nad repozytorium github.
Wykonałem żądania ściągnięcia i zostało to zakończone.
Po tym upstream miał więcej zatwierdzeń, więc teraz chcę zmienić bazę, myślę, że to jest to, co muszę zrobić.
Ale otrzymuję te konflikty scalania:
First, rewinding head to replay your work on top of it...
Applying: Issue 135 homepage refresh
Using index info to reconstruct a base tree...
<stdin>:17: trailing whitespace.
%h4
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging app/views/layouts/application.html.haml
CONFLICT (content): Merge conflict in app/views/layouts/application.html.haml
Auto-merging app/views/home/index.html.haml
CONFLICT (content): Merge conflict in app/views/home/index.html.haml
Auto-merging app/views/home/_group_projects.html.haml
CONFLICT (content): Merge conflict in app/views/home/_group_projects.html.haml
Failed to merge in the changes.
Patch failed at 0001 Issue 135 homepage refresh
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".
Nie wiem, jak to naprawić, proszę o pomoc.
git
github
git-rebase
pahnin
źródło
źródło
Odpowiedzi:
Rebasing może być prawdziwym bólem głowy. Musisz rozwiązać konflikty scalania i kontynuować przebudowę. Na przykład możesz użyć narzędzia scalania (które różni się w zależności od ustawień)
Następnie dodaj zmiany i kontynuuj
Powodzenia
źródło
W przypadku konfliktu podczas rebase masz trzy możliwości:
Możesz biec,
git rebase --abort
aby całkowicie cofnąć rebase. Git przywróci stan Twojego oddziału, taki jaki był przed wywołaniem git rebase.Możesz uruchomić,
git rebase --skip
aby całkowicie pominąć zatwierdzenie. Oznacza to, że żadna ze zmian wprowadzonych przez problematyczne zatwierdzenie nie zostanie uwzględniona. Zdarza się, że wybrałbyś tę opcję.Możesz rozwiązać konflikt, jak powiedział iltempo. Kiedy skończysz, musisz zadzwonić
git rebase --continue
. Moje narzędzie scalające to kdiff3, ale istnieje wiele innych, których możesz użyć do rozwiązywania konfliktów. Musisz tylko ustawić narzędzie do scalania w ustawieniach git, aby można było je wywołać, gdy wywołaszgit mergetool
https://git-scm.com/docs/git-mergetoolJeśli żadne z powyższych nie działa dla Ciebie, idź na spacer i spróbuj ponownie :)
źródło
<<<<<
Jeśli masz dużo zatwierdzeń do zmiany bazy, a część z nich powoduje konflikty, to naprawdę boli. Mogę jednak zasugerować mniej znane podejście, jak „zdusić wszystkie konflikty”.
Najpierw wyewidencjonuj gałąź tymczasową i rozpocznij standardowe scalanie
Będziesz musiał rozwiązać konflikty, ale tylko raz i tylko te prawdziwe. Następnie przygotuj wszystkie pliki i zakończ scalanie.
Następnie wróć do swojego oddziału (niech tak będzie alfa ) i zacznij od nowa, ale z automatycznym rozwiązywaniem wszelkich konfliktów.
Oddział został przebudowany, ale projekt jest prawdopodobnie w nieprawidłowym stanie. W porządku, mamy ostatni krok. Musimy tylko przywrócić stan projektu, więc będzie dokładnie taki, jak w gałęzi „temp”. Z technicznego punktu widzenia wystarczy skopiować jego drzewo (stan folderu) za pomocą polecenia niskiego poziomu git commit-tree . Plus scalenie z bieżącą gałęzią właśnie utworzonego zatwierdzenia.
I usuń tymczasową gałąź
To wszystko. Zrobiliśmy rebase poprzez ukryte scalanie.
Napisałem również skrypt, który można zrobić w dialogu, możesz go znaleźć tutaj .
źródło
Uwaga: w przypadku Git 2.14.x / 2.15 (III kwartał 2017 r.) Rozszerzenie
git rebase
komunikat w przypadku konfliktów będzie wyraźniejszy.Zobacz commit 5fdacc1 (16 lipca 2017) autorstwa Williama Duclot (
williamdclt
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 076eeec , 11 sierpnia 2017 r.)Przed:
Po:
źródło