Git merge left HEAD marks in my files

Próbowałem scalić plik w wierszu poleceń używając Git, gdy pojawił się komunikat o błędzie informujący mnie o przerwaniu scalania.

Myślałem, że to koniec, ale potem zdałem sobie sprawę, że w moich plikach są gitmarki. Tak:

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 zostały edytowane nie przeze mnie i wyświetlają linie wstawione z:

  • HEAD after less than signs (<<<<<<< HEAD)
  • linie kodu
  • ciąg znaków równości (=======)
  • nowa wersja kod
  • kolejna linia zaczynająca się od znaku większego niż 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 normy, a zmiany które wprowadziłem w gh-branch połączyłem w master branch?

Author: lowerkey, 2012-05-18

4 answers

To są znaczniki konfliktu . Wciąż jesteś w trakcie scalania, ale były pewne części, których Git nie mógł połączyć automatycznie. Będziesz musiał ręcznie edytować te części tak, jak chcesz, aby były, a następnie zatwierdzić wyniki.


Na przykład, w twoim konkretnym przypadku, prawdopodobnie chciałbyś rozwiązać to w ten sposób (UWAGA-strzałki/tekst po prawej stronie to tylko moje notatki, a nie coś, co wpisujesz do pliku):

integer = 
<<<<<<< HEAD                                  <-+ remove the bits here
    digits:[0-9]+                               |
        { return digits.join(""); }             |
=======                                       <-+
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }
>>>>>>> gh-pages                              <-- and this

I w ten sposób zapisałbyś plik as...

integer = 
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }
 75
Author: Amber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:19

Absolutnie zacznij od 'Git status', aby zobaczyć, co masz. Jeśli przerwałeś połączenie (lub przerwano połączenie) i masz skonfliktowane pliki w katalogu roboczym, coś poszło nie tak. Status Git powie Ci, gdzie jesteś. Po tym, masz wiele opcji. Należy rozwiązać commit scalający ręcznie, co może być trudne lub przy użyciu narzędzia:

git mergetool

Narzędzie scalania będzie działać, jeśli Twoje pliki są wymienione jako wymagające scalenia.

Możesz wykonaj również jeden z:
git checkout --ours -- /path/to/conflicted-file       # this is probably the one you want
git checkout --theirs -- /path/to/conflicted-file

Możesz zobaczyć różne wersje używając składni: 1: filename. Zobacz tutaj dla wyjaśnienia. Wszystkie powyższe założenia zakładają jednak, że 'Git status' pokazuje pliki jako wymagające połączenia.

Wreszcie, zawsze masz możliwość:

git reset --hard   # sounds like --hard is what you need but check other options
 19
Author: GoZoner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:22

Wszystkie odpowiedzi są poprawne, ale jeśli chcesz Autoremove wszystkie znaki konfliktu i chcesz automatycznie zmienić pliki, aby zachować głowę, możesz utworzyć własny skrypt bash jak: -

Przykładowy Skrypt:

# vim /usr/sbin/solve.git

(Dołącz Po)

#!/bin/bash
for f in $(grep -Rl '^>>>>>>> ' --include="*.php" --include="*.css" --include="*.js" --include="*.html" --include="*.svg" --include="*.txt" .)
do
sed -i -e '/^=======/,/^>>>>>>> /d' -e '/^<<<<<<< /d' $f
sed -i -e '/^>>>>>>> /d' $f
echo "$f Fixed"
done
git add . ; git commit -am "[+] Resolved on `date` from `hostname` by `whoami`" --no-verify

# chmod 755 /usr/sbin/solve.git

& uruchom go w swoim Git repo / path do rozwiązania:

$ cd <path_to_repo>
$ solve.git

Uwaga: - wyżej wymienione rozszerzenia plików to php, css, js, html , svg i txt.

 1
Author: Mr. Pundir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-02 06:26:35

W atomie miałem problem, że niektóre pliki nie zapisują rozwiązanych konfliktów scalenia na dysku, więc musiałem ręcznie kliknąć "Zapisz". Zajęło mi trochę czasu, żeby to rozgryźć.

 0
Author: Timar Ivo Batis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 21:57:29