Jak mogę zatwierdzać pliki za pomocą git?

84

Żaden z samouczków nie pomoże!
Wszyscy robią to, gdy po prostu zakładają, że wiem, co robić.

Obecnie moje okno terminala zaczyna się od…

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    httpdocs/newsite/manifest/cache/0a432970ba6491fe65dad60b012e5c95_louloumay2011en-1-4dea3186b7f7b.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0a61b5d7a9e97da78fe602e1ad41edb6_5-4dec7c3d57c80.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0afb6a7716a85d0de46cdd03bb30f75f_fifa_panorama_full_page-01_thu-4dea3d1a0e0f5.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b3bc9be76a5d3e1e36af4b8dcf98658_free2-4df0e2e08761f.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b6342913b8e599fac76da452af98ec5_si-feb-2009-1-4dea3d1abcb61.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b9ddc587340f7744e03c4b2dafacf7f_lou-lou-winter-2009-cover-4dea3d1a9b1a0.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf64ff8fc22720b3da20d0730fa6a04_chatelaine-dec-2009-4dea3d18daa30.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf664e03eb0a2255b69b02aed85add0_summumfeb2011-2-4dea3188766aa.jpg

ale nie ma sposobu, aby dowiedzieć się, jak zrobić to, co mówią tutaj.
http://learn.github.com/p/normal.html

Wszystko to mówi

Po prostu wpisujemy naszą wiadomość dotyczącą zatwierdzenia i wychodzimy z edytora.

Co to znaczy?!
To, że piszesz słowo, po prostu nie oznacza, że ​​jest proste.

Kiedy zaczynam pisać, robi dziwne rzeczy, mówi „nagrywanie” lub „wstawianie” i jest około 300 plików i chce, żebym zastąpił każdą linię komunikatem?!?

Wsparcie !

Użyłbym do tego ich poręcznej aplikacji na Maca, ale jeśli ma ponad 20 plików, zawiesza się!
O co w tym chodzi ??

Kirk Strobeck
źródło
10
To nie ma nic wspólnego z moim pytaniem. Jeśli powiedziałem „jak jeździć na nartach ze wzgórza”, to mówisz
komuś,
2
Zatwierdzenie bez argumentu -m uruchamia edytor tekstu, w którym możesz dodawać komentarze. (Prawdopodobnie w tym przypadku domyślnym rozwiązaniem jest vim.) Autor tutoriala zakłada, że ​​wiesz już, jak go używać.
Alex Howansky
@alex dziękuję za wyjaśnienie
Kirk Strobeck
Ktoś lepiej zaznajomiony z OSX, niż ja jestem w stanie powiedzieć, jak ustawić domyślny edytor na coś innego. Zwykle jest to „export EDITOR = / path / to / cokolwiek” w konfiguracji startowej powłoki.
Alex Howansky
6
-1 dla RT [F] M. Problemem byłby domyślny edytor, a nie brak czytania dokumentacji gita.
Philip Oakley,

Odpowiedzi:

92

Po uruchomieniu git commitbez argumentów otworzy się domyślny edytor, aby umożliwić wpisanie komunikatu o zatwierdzeniu. Zapisanie pliku i zamknięcie edytora spowoduje zatwierdzenie.

Wygląda na to, że twoim domyślnym edytorem jest Vi lub Vim. „Dziwne rzeczy” zdarzają się, gdy piszesz, ponieważ Vi nie uruchamia się w trybie wstawiania - najpierw musisz nacisnąć iklawisz klawiatury! Jeśli tego nie chcesz, możesz zmienić to na coś prostszego, na przykład:

git config --global core.editor nano

Następnie załadujesz edytor Nano (zakładając, że jest zainstalowany!) Po zatwierdzeniu, co jest znacznie bardziej intuicyjne dla użytkowników, którzy nie używali edytora modalnego, takiego jak Vi.

Ten tekst, który widzisz na ekranie, ma Ci tylko przypomnieć, co masz zamiar popełnić. Wiersze są poprzedzone, #co oznacza, że ​​są komentarzami, tj. Git ignoruje te wiersze, gdy zapisujesz komunikat o zatwierdzeniu. Nie musisz wpisywać wiadomości dla każdego pliku - po prostu wprowadź tekst w górnej części bufora edytora.

Aby ominąć edytor, możesz podać komunikat o zatwierdzeniu jako argument, np

git commit -m "Added foo to the bar"
Ben James
źródło
Kiedy mówisz „ignoruj”, czy to oznacza, że ​​pozostanie na scenie?
Kirk Strobeck
3
Nie, te linie nie wpływają na to, co ma zostać popełnione. Te pliki będą nadal zatwierdzane, nawet jeśli usuniesz wiersze komentarza. Są tylko przypomnieniem, jaki był stan repozytorium, kiedy uruchomiłeś git commitpolecenie.
Ben James
Więc jeśli uruchomię zatwierdzenie, zmiana zostanie zarejestrowana, nawet jeśli #w tym wierszu znajduje się?
Kirk Strobeck
2
To jest poprawne. Zobowiązane jest to, co zostało wprowadzone git adddo indeksu.
Ben James
Inną opcją jest zamiast tego git commit, możesz uruchomić git commit -a -m "Your message for the commit"Wtedy żaden edytor nie zostanie uruchomiony.
27

Wygląda na to, że jedynym problemem jest to, że domyślny edytor, który jest uruchamiany, to vilub vim, którego nie znasz. (Jak szybko wskazówka, aby wyjść z tego edytora bez zapisywania zmian, uderzył Esckilka razy, a następnie wpisać :, q, !i Enter).

Istnieje kilka sposobów skonfigurowania domyślnego edytora i nie wskazałeś, którego systemu operacyjnego używasz, więc trudno jest go szczególnie polecić. Sugerowałbym użycie:

 git config --global core.editor "name-of-your-editor"

... który ustawia globalne preferencje git dla konkretnego edytora. Alternatywnie możesz ustawić $EDITORzmienną środowiskową.

Mark Longair
źródło
Twój vimściągawka jest cenna, szczególnie dla tych, którzy pochodzą z tej społeczności "ikona warta jest tysiąc wierszy poleceń ;-)"
Philip Oakley
Właśnie znalazłem viemu.com/a-why-vi-vim.html jako szczególnie pomocny w wyjaśnianiu, dlaczego vi / vim wciąż tu jest. Następnie przejdź
Philip Oakley,
24

w standardowym edytorze Vi w takiej sytuacji powinieneś

  1. naciśnij klawisz Esc
  2. wpisz „: wq” (bez cudzysłowów)
  3. naciśnij enter
Oner Ksor
źródło
16

Polecenie do zatwierdzenia wszystkich zmienionych plików:

git commit -a -m 'My commit comments'

-a = wszystkie edytowane pliki

-m = następujący ciąg jest komentarzem.

Spowoduje to zatwierdzenie lokalnego repozytorium dysków / folderów. Jeśli chcesz przesłać swoje zmiany na serwer git / serwer zdalnie hostowany, po powyższym poleceniu wpisz:

git push

Ściągawka GitHub jest całkiem przydatna.

Ali
źródło
13

Nie znam Twojego środowiska systemowego, ale wygląda na to, że wpisałeś:

git commit

Twój domyślny edytor został uruchomiony. W najgorszym przypadku (dla Ciebie) mógł to być vim :)

Jeśli nie wiesz, jak wyjść z vima, użyj: q.

Jeśli masz dalsze problemy, możesz użyć

git commit -m 'Type your commit message here'
pkk
źródło
Czy istnieje sposób, aby wybrać inny edytor, w którym zostanie otwarty? Jak nano?
Kirk Strobeck
1
Jasne: powinno to zmienić domyślny edytor na nano: git config --global core.editor nano
pkk
wiadomość w podwójnych cudzysłowach .. "Wiadomość"
Prabs
2

Git używa „indeksu” do przygotowania zatwierdzeń. Możesz dodawać i usuwać zmiany z indeksu przed zatwierdzeniem (w swojej wklejce usunąłeś już ~ 10 plików git rm). Kiedy indeks wygląda tak, jak chcesz, uruchom git commit.

Zwykle to się uruchomi vim. Aby wstawić trafienie tekstu i, <esc>wraca do normalnego trybu, naciśnij, ZZaby zapisać i wyjść ( ZQaby wyjść bez zapisywania). voilà, oto twoje zobowiązanie

knittl
źródło
2

Dzieje się tak, gdy nie dołączasz wiadomości, gdy próbujesz zatwierdzić za pomocą:

git commit

Uruchamia środowisko edytora. Zakończ, wpisując:q! i naciskając Enter.

Zabierze Cię z powrotem do terminala bez zatwierdzania, więc spróbuj ponownie, tym razem przekaż wiadomość:

git commit -m 'Initial commit'
juliarm
źródło
1
To faktycznie pomogło mi bardziej niż zaakceptowana odpowiedź, wyjaśniając kontekst, co się dzieje i jak sprawić, by „dziwne rzeczy” znów stały się normalne.
timmackay
1

Wygląda na to, że wszystkie zmiany są już częścią indeksu. Aby zatwierdzić, po prostu użyj commitpolecenia

git commit -m "My Commit Message"

Patrząc na twoje wiadomości, instynkt podpowiada, że ​​prawdopodobnie nie chcesz, aby cachepliki znalazły się w twoim magazynie. Zwłaszcza jeśli jest to coś, co jest tworzone w locie podczas uruchamiania programu. Jeśli tak, to powinieneś dodać następujący wiersz do swojego pliku .gitignore

httpdocs/newsite/manifest/cache/*
JaredPar
źródło
to był podprojekt, cały reż jest usuwany.
Kirk Strobeck
Aby zobaczyć, co wszystkie polecenia git ma typ git --helpto daje wszystkie polecenia jak commit, push, pull, cloneitd. Aby uzyskać pomoc na temat konkretnej komendy i jakie są dostępne przełączniki typu git commit --help, git push --helppowinno to działać na wierszu poleceń Linux i Mac. Jeśli chcesz mieć dobrą aplikację wiersza poleceń, polecam ten sam github, który zawiera git-scmlink na tej stronie. help.github.com/mac-set-up-git
Ali
1

Napotkałem ten sam problem, rozwiązałem go, wpisując, :q!a następnie naciskając Enter I rozwiązało mój problem.Po tym uruchom następujące polecenie git commit -a -m "your comment here"

To powinno rozwiązać twój problem.

kelvin nyadzayo
źródło
1
Ta odpowiedź jest już tutaj udzielona ( stackoverflow.com/a/7080907/2827823 ) ... właściwie dwa razy, więc nie potrzebujemy więcej.
Ason