github blokuje terminal Mac podczas używania polecenia pull


95

Jestem w trakcie nauki Githuba na Macu (wiersz poleceń) i kiedy tylko to zrobię, git pull origin masterdostaję to

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
".git/MERGE_MSG" 7L, 293C

terminal wydaje się blokować i nie pozwala mi na natychmiastowe wprowadzanie czegokolwiek, a kiedy w końcu pozwala mi wprowadzić tekst, wygląda na to, że nie rozpoznaje poleceń git.

Czy to błąd w git, czy czegoś mi brakuje?


5
Czy naprawdę się blokuje, czy po prostu go nie znasz vi?
Edward Thomson,

2
Nie mogę dokładnie powiedzieć, dlaczego, ale git chce, żebyś wpisał wiadomość o zatwierdzeniu, a najprawdopodobniej jesteś w edytorze tekstu vim.
Misch

ah rozumiem, tak, nie znam Vima. jak wpisać i zapisać komentarz, a następnie kontynuować?
zero

7
wpisz, iaby wstawić komentarz, a następnie naciśnij klawisz esc i wpisz:wq
Scott Harwell

1
Jeśli nie jesteś zaznajomiony, viczy nie jesteś zamknięty?
Ben Racicot

Odpowiedzi:


225

Jesteś w edytorze tekstu, vim! Jest to modalny edytor tekstu, więc musisz:

  1. Naciśnij, iaby przejść do trybu wstawiania .
  2. Teraz możesz wpisać swoją wiadomość, tak jakbyś był w zwykłym (niemodalnym) edytorze tekstu.
  3. Naciśnij, escaby wrócić do trybu poleceń .
  4. Następnie wpisz, :wa następnie, enteraby zapisać.
  5. Wreszcie :qnastępuje enterzakończenie.

4
To wspaniałe, że git po prostu zakłada, że ​​wszyscy znają vima.
user124384

2
@ user124384 Git próbuje użyć twojej $EDITORzmiennej środowiskowej, ale wraca do viniej, jeśli nie może jej znaleźć. Możesz skonfigurować rezerwę za pomocą konfiguracji git core.editor. Zobacz git-scm.com/book/en/v2/…
ceyko

gdzie mogę pisać i?
Val Do

1
@ val-kharitonashvili Na klawiaturze querty sąsiaduje z ui o;) Ale tak długo, jak długo terminal ma fokus, powinien działać.
ceyko

Dlaczego tak się w ogóle dzieje? Zawsze to robiłem git merge masteri przez ostatnie 2 dni widzę to ...
Kochanie,


2

Zgodnie z twoimi opisami edytor wygląda jak vim . Ta konsola po prostu każe ci napisać wiadomość dla zatwierdzenia, które chcesz wykonać, i jest to obowiązkowe, ponieważ to robi.

  • Po prostu wpisz ii przejdziesz do -- INTER --trybu, teraz możesz pisać swoje komentarze.

  • Po zakończeniu pisania naciśnij escklawisz na klawiaturze, a przejdziesz do trybu poleceń. ( patrz na dole konsoli )

  • Teraz zapisz zmiany, wpisując :wi naciskając enterklawisz

Pisanie polecenia <code>: w </code>

  • Możesz teraz wyjść, pisząc, :qa następnie naciskając enterklawisz

Pisanie polecenia <code>: q </code>

  • Hurra! Wreszcie wracasz do głównej konsoli.


1

Uruchom to polecenie

git config --global core.editor "gedit"

Dodaj swoją wiadomość w tym pliku i zapisz ją. Wróć teraz i pociągnij.


0

Rozwiązałem ten problem, wykonując następujące kroki

  1. Usuń # MERGE_MSG #

    rm .git/\#MERGE_MSG#

  2. Usuń MERGE_HEAD

    rm .git/MERGE_HEAD

Dodatkowo wyraźnie ustawiłem edytor git na edytor, który znam vim (możesz ustawić nano )

`git config --global core.editor "vim"`

0

Możesz to zrobić git checkout --merge yourbranch

Trójkierunkowe scalenie między aktualną gałęzią, zawartością twojego drzewa roboczego i nową gałęzią zostało zakończone i będziesz na nowej gałęzi.


0

Problemy pojawiają się zwykle, gdy coś źle przeliterujemy.
Bardziej prawdopodobne jest to polecenie, które Cię interesuje:

git commit -m "message"

jeśli był problem, może to powiedzieć coś takiego

Your branch and 'origin/master' have diverged,
and have 2 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

I użyć:

git pull

co powinno prowadzić do:

Already up-to-date.

Następnie dobrze sprawdzić:

git status

i spróbuj ponownie:

git push
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.