git로 파일을 어떻게 커밋 할 수 있습니까?


84

어떤 튜토리얼도 도움이되지 않습니다!
그들은 모두 내가 무엇을해야할지 안다고 생각하는 곳에서 그 일을합니다 ..

현재 내 터미널 창은 ..

# 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

하지만 여기에서 그들이하는 말을하는 방법을 알 수있는 방법이 없습니다.
http://learn.github.com/p/normal.html

그것이 말하는 것은

커밋 메시지를 입력하고 편집기를 종료하면됩니다.

그게 무슨 뜻이야?!
단어를 쓴다고 해서 단순하다는 의미는 아닙니다 ..

입력을 시작하면 "녹음"또는 "삽입"이라고 말하는 이상한 내용이 표시되고 약 300 개의 파일이 있으며 모든 줄을 메시지로 바꾸길 원합니다?!?

도와주세요!

이를 위해 편리한 Mac 응용 프로그램을 사용하지만 파일이 20 개 이상이면 멈 춥니 다!
무슨 일이야 ??


10
그것은 내 질문과 관련이 없습니다. 내가 말한 경우에 당신이 스키를하는 방법을 사람에게 "어떻게 언덕 아래로 스키 않는다", 당신은 "음, 왜 산에 당신을있는"말을하지 않습니다
커크 Strobeck

2
-m 인수가없는 커밋은 주석을 작성할 수있는 텍스트 편집기를 시작합니다. (이 경우 기본적으로 vim으로 설정되어있을 것입니다.) 튜토리얼 작성자는 이미 사용 방법을 알고 있다고 가정합니다.
Alex Howansky 2011-08-16


내가 기본 편집기를 다른 것으로 설정하는 방법을 설명 할 수있는 것보다 OSX에 더 익숙한 사람이 있습니다. 일반적으로 쉘 시작 구성에서 "export EDITOR = / path / to / whatever"입니다.
Alex Howansky 2011-08-16

6
RT [F] M의 경우 -1입니다. 기본 편집기는 git 문서를 읽는 것이 부족한 것이 아니라 문제인 것처럼 보입니다.
Philip Oakley

답변:


92

git commit인수없이 실행 하면 커밋 메시지를 입력 할 수있는 기본 편집기가 열립니다. 파일을 저장하고 편집기를 종료하면 커밋됩니다.

기본 편집기가 Vi 또는 Vim 인 것 같습니다. 입력 할 때 "이상한 것"이 발생하는 이유는 Vi가 삽입 모드에서 시작되지 않기 때문입니다. 먼저 i키보드 를 눌러야 합니다! 원하지 않는 경우 다음과 같이 더 간단한 것으로 변경할 수 있습니다.

git config --global core.editor nano

그런 다음 커밋 할 때 Nano 편집기를로드합니다 (설치되어 있다고 가정합니다!). Vi와 같은 모달 편집기를 사용하지 않은 사용자에게는 훨씬 더 직관적입니다.

화면에 표시되는 텍스트는 커밋하려는 내용을 상기시키기위한 것입니다. 라인은 #주석이라는 의미 로 앞에옵니다 . 즉, 커밋 메시지를 저장할 때 Git은 해당 라인을 무시합니다. 파일별로 메시지를 입력 할 필요가 없습니다. 편집기 버퍼 상단에 텍스트를 입력하면됩니다.

편집기를 우회하려면 커밋 메시지를 인수로 제공 할 수 있습니다.

git commit -m "Added foo to the bar"

"무시"라고하면 계속 무대에 있다는 뜻인가요?
Kirk Strobeck 2011-08-16

3
아니요, 그 라인은 커밋 될 내용에 영향을주지 않습니다. 주석 줄을 삭제하더라도 해당 파일은 계속 커밋됩니다. git commit명령 을 실행했을 때 리포지토리의 상태가 어땠는지 알려주는 것 입니다.
Ben James

따라서 커밋을 실행하면 #해당 줄에 있는 경우에도 변경 내용이 기록 됩니까?
Kirk Strobeck 2011-08-16

2
맞아요. 커밋 git add된 것은 인덱스에 포함 된 것입니다.
Ben James

다른 옵션은 대신 git commit실행할 수 있습니다. git commit -a -m "Your message for the commit"그러면 편집기가 실행되지 않습니다.

27

여기에 유일한 문제는 시작됩니다 기본 편집기는 점이다 것처럼 소리 vivim,있는 당신이 익숙하지. (빠른 팁으로, 변경 사항을 저장하지 않고 그 편집기를 종료 칠 Esc을 몇 번 한 후 입력 :, q, !Enter.)

기본 편집기를 설정하는 방법에는 여러 가지가 있으며 사용중인 운영 체제를 지정하지 않았으므로 특별히 추천하기가 어렵습니다. 다음을 사용하는 것이 좋습니다.

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

... 특정 편집기에 대한 전역 git 기본 설정을 설정합니다. 또는 $EDITOR환경 변수를 설정할 수 있습니다 .


귀하의 vim치트 시트는 특히 그에서 온 사람들을 위해, 가치있는 사회 "아이콘이 가치가 천 명령 줄 ;-)입니다"
필립 오클리

viemu.com/a-why-vi-vim.html 이 vi / vim이 아직 여기에있는 이유를 설명하는 데 특히 도움이 된다는 것을 방금 찾았 습니다 . 그런 다음 키보드 치트 시트로 마이그레이션 viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
필립 오클리

24

이 상황에서 표준 Vi 편집기에서

  1. Esc를 누르십시오.
  2. ": wq"유형 (따옴표 제외)
  3. 엔터 키를 치시오

16

변경된 모든 파일을 커밋하는 명령 :

git commit -a -m 'My commit comments'

-a = 편집 된 모든 파일

-m = 다음 문자열은 주석입니다.

이것은 로컬 드라이브 / 폴더 저장소에 커밋됩니다. 변경 사항을 git 서버 / 원격 호스팅 서버에 푸시하려면 위의 명령을 입력 한 후 다음을 입력합니다.

git push

GitHub의 치트 시트 는 매우 편리합니다.


13

시스템 환경을 모르지만 다음을 입력 한 것 같습니다.

git commit

그리고 기본 편집기가 시작되었습니다. 최악의 시나리오에서 (당신을 위해) 그것은 vim 일 수 있습니다 :)

vim을 종료하는 방법을 모른다면 : q를 사용하십시오.

추가 문제가 있으면 다음을 사용할 수 있습니다.

git commit -m 'Type your commit message here'

열릴 다른 편집기를 선택하는 방법이 있습니까? 나노처럼?
Kirk Strobeck 2011-08-16

1
물론이 나노에 대한 기본 편집기를 변경해야합니다 : 자식 설정 --global core.editor 나노
PKK

큰 따옴표로 메시지 .. "메시지"
Prabs

2

Git은 "인덱스"를 사용하여 커밋을 준비합니다. 커밋하기 전에 인덱스에서 변경 사항을 추가하고 제거 할 수 있습니다 (붙여 넣기에서 이미를 사용하여 ~ 10 개의 파일을 삭제했습니다 git rm). 인덱스가 원하는 것처럼 보이면 git commit.

일반적으로 이것은 실행됩니다 vim. 텍스트 히트를 삽입하려면 i, <esc>일반 모드로 돌아갑니다 명중 ZZ저장하고 (종료 ZQ저장하지 않고 종료합니다). voilà, 당신의 커밋이 있습니다


2

이는 다음을 사용하여 커밋하려고 할 때 메시지를 포함하지 않을 때 발생합니다.

git commit

편집기 환경을 시작합니다. 입력 :q!하고 Enter 키 를 눌러 종료 하십시오.

커밋하지 않고 터미널로 돌아갈 것이므로 다시 시도하십시오. 이번에는 메시지가 전달됩니다.

git commit -m 'Initial commit'

1
이것은 실제로 맥락, 무슨 일이 일어나고 있는지 그리고 어떻게 "이상한 것들"을 다시 정상으로 만드는지를 설명함으로써 받아 들여진 대답보다 더 많은 도움이되었습니다.
timmackay 2016 년

1

모든 수정 사항이 이미 색인의 일부인 것 같습니다. 따라서 커밋하려면 commit명령을 사용하십시오.

git commit -m "My Commit Message"

내 본능에 따르면 귀하의 메시지를 보면 cache파일이 귀하의 저장소에 포함되는 것을 원하지 않을 것입니다 . 특히 프로그램을 실행할 때 즉석에서 빌드되는 경우. 그렇다면 .gitignore 파일에 다음 줄을 추가해야합니다.

httpdocs/newsite/manifest/cache/*

그것은 하위 프로젝트였으며 전체 디렉토리가 제거되고 있습니다.
Kirk Strobeck 2011-08-16

입력이 자식 모든 명령을 확인하려면 git --help이 당신에게 같은 모든 명령 줄 것이다 commit, push, pull, clone특정 명령과 어떤 스위치를 사용할 유형에 대한 도움말을 보려면 등 git commit --help, git push --help이 리눅스와 맥 명령 줄에서 작동합니다. 좋은 명령 줄 앱을 원한다면 git-scm이 페이지에서 github가 링크 하는 것과 동일한 앱을 권장합니다 . help.github.com/mac-set-up-git
알리

1

나는 똑같은 문제에 직면했고, 타이핑하여 그것을 해결 :q!했다. Enter그리고 그것은 내 문제를 해결했다. 그 후 다음 명령을 실행한다. git commit -a -m "your comment here"

이렇게하면 문제가 해결됩니다.


1
그 대답은 이미 여기에 있습니다 ( stackoverflow.com/a/7080907/2827823 ) ... 실제로 두 번이므로 더 이상 필요하지 않습니다.
Ason
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.