Próbowałem scalić plik w wierszu poleceń za pomocą Gita, kiedy pojawił się komunikat o błędzie informujący mnie, że scalanie zostało przerwane.
Myślałem, że to koniec, ale potem zdałem sobie sprawę, że w moich plikach są znaczniki gitmark. Tak jak to:
start =
expression
validchar =
[0-9a-zA-Z_?!+\-=@#$%^&*/.]
integer =
<<<<<<< HEAD
digits:[0-9]+
{ return digits.join(""); }
=======
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages
Pliki były edytowane nie przeze mnie i pokazują wiersze wstawione z:
- GŁOWA po mniej niż znakach (
<<<<<<< HEAD
) - wiersze zmienionego kodu
- ciąg znaków równości (
=======
) - nowa wersja kodu
- kolejna linia zaczynająca się od znaków większości i nazwy gałęzi (
>>>>>>> gh-pages
)
Co gorsza, zawartość pliku nie jest już w porządku. Czy ktoś wie, jak przywrócić te pliki do normalnego stanu, a zmiany, które wprowadziłem w gałęzi gh, zostały włączone do gałęzi głównej?
źródło
gh-pages
wersji, więc po prostu usuniesz zawartość z<<<<<<
do,======
a także usuniesz jedną>>>>>>
linię, pozostawiając dwie linie rzeczywistego kodu między=======
a>>>>>>
.Absolutnie zacznij od `` statusu gita '', aby zobaczyć, co masz. Jeśli przerwałeś scalanie (lub przerwałeś scalanie) i masz pliki będące w konflikcie w katalogu roboczym, coś poszło nie tak. Status Git powie Ci, gdzie jesteś. Następnie masz kilka opcji. Powinieneś rozwiązać zobowiązanie scalające ręcznie, co może być trudne, lub za pomocą narzędzia, takiego jak:
Narzędzie do scalania będzie działać, jeśli Twoje pliki są wymienione jako wymagające scalenia.
Możesz też wykonać jedną z:
Możesz zobaczyć różne wersje używając składni: 1: nazwa_pliku. Zobacz tutaj, aby uzyskać wyjaśnienie. Ale wszystkie powyższe zakładają, że „stan git” pokazuje, że pliki wymagają scalenia.
Wreszcie, zawsze masz możliwość:
źródło
git status
poprzeć radę „zacznij od, aby zobaczyć, co masz”: w niektórych kręgach fascynujące jest obwinianie Gita za jego wyimaginowaną złożoność, ale tak naprawdęgit status
wystarczy uważne przeczytanie wyniku , aby zrozumieć, co robić dalej w większości typowych sytuacji. Stąd tak naprawdę: jeśli coś pójdzie nie tak, zatrzymaj się, przeczytajgit status
, pomyśl.Wszystkie odpowiedzi są poprawne, ale jeśli chcesz automatycznie usunąć wszystkie znaki konfliktu i chcesz automatycznie zmienić pliki, aby zachować HEAD, możesz utworzyć własny skrypt bash, taki jak: -
Przykładowy skrypt:
# vim /usr/sbin/solve.git
(Dołącz po)
# chmod 755 /usr/sbin/solve.git
i po prostu uruchom go w swoim repozytorium / ścieżce GIT, aby rozwiązać:
$ cd <path_to_repo>
$ solve.git
Uwaga: - Powyższe rozszerzenia plików to php, css, js, html, svg i txt.
źródło
W Atom miałem problem z tym, że niektóre pliki nie zapisywały na dysku rozwiązanych konfliktów scalania, więc musiałem ręcznie kliknąć „zapisz”. Zajęło mi trochę czasu, zanim się zorientowałem.
źródło
Pochodzę z tego pytania . I chciałem jakiejś zautomatyzowanej metody łączenia na pół scalonych plików, zamiast ręcznej edycji plików ( jak sugerowano w innych odpowiedziach, co nie jest zbyt wygodne ). Oto, co ostatecznie zrobiłem przez netbeans, ale można to zrobić również za pomocą wiersza poleceń.
Teraz pamiętaj, że działa to tylko wtedy, gdy natychmiast po
merge->add->commit
zdałeś sobie sprawę, że popsułeś się i chcesz ponownie przejść przez ten proces.KROK 1: Zresetuj do poprzedniego zatwierdzenia.
KROK 2: Spróbuj ponownie scalić gałąź
W tym momencie zostaniesz poproszony o okno łączenia, jeśli używasz GUI. i możesz postępować normalnie.
źródło