커밋 메시지가없는 Git 커밋


108

커밋 메시지를 지정하지 않고 변경 사항을 커밋하려면 어떻게해야합니까? 기본적으로 필요한 이유는 무엇입니까?


6
마지막으로 git commit -a --allow-empty-message -m ''더 이상 편집기도 열지 않습니다. 보기 내 대답은 아래
VonC

2
Windows에서이 명령 git commit -a --allow-empty-message -m ''은 커밋 메시지 " ''"를 사용 하여 커밋 하므로 대신 다음 명령을 사용하는 것이 좋습니다 git commit -a --allow-empty-message -m ""..
tav

답변:


137

의미있는 커밋 메시지를 제공하는 것은 좋은 개발 관행과 좋은 저장소 관리의 일부이기 때문에 git은 일반적으로 비어 있지 않은 메시지를 요구합니다. 커밋 메시지의 첫 번째 줄은 git 내의 모든 곳에서 사용됩니다. 자세한 내용은 "Git 커밋 메시지에 대한 참고 사항"을 참조하십시오 .

Terminal.app, cd프로젝트 디렉토리 및 을 열면 git commit -am ''빈 커밋 메시지가 허용되지 않기 때문에 실패한 것을 볼 수 있습니다. 최신 버전의 git에는
--allow-empty-message최신 버전의 Xcode에 포함 된 git 버전을 포함 하여 명령 줄 인수가 있습니다. 이렇게하면이 명령을 사용하여 빈 메시지를 커밋 할 수 있습니다.

git commit -a --allow-empty-message -m ''

--allow-empty-message깃발 이전 에는 commit-tree배관 명령 을 사용해야했습니다 . 당신은이 명령을 사용하는 예를 볼 수 있습니다 은 "원시 힘내"장망할 놈의 책 .


1
의 최신 버전 git에는 --allow-empty-message명령 줄 인수가 있습니다. 여기 에서 설명서를 참조 하십시오 . 배관 명령을 사용하여 동일한 작업을 수행 할 수 있었음을 언급합니다 git-commit-tree.
Jeremy W. Sherman

18
나는 문장은 "의미있는 메시지 확약을 제공하는 생각 입니다 단지 잘못된 좋은 개발 관행의 일부"- 하나는 의미가 커밋 메시지를 제공하는 것은 말할 수있는 것으로 간주됩니다 명령문이 분열 어쨌든이기 때문에, 좋은 개발 관행의 일부 - 내가 하나 특히 git은 저장소에 실제 변경 사항을 분명히 저장하고 a git diff는 사람이 작성한 설명에 의존하지 않고 커밋에 포함 된 내용을 이해 당사자에게 정확히 보여주기 때문에 정보가 적 으면 혼동이 줄어드는 경우가 있습니다. 기계는 가능한 한 노동으로부터 우리를 구해야합니다.
AMN

2
@amn, 나는 또한 내가 작성한 수만 개의 잘 작성된 커밋 메시지에 대해 궁금해하기 시작했으며 아무도 읽지 않을 것입니다. 나에게있어이 습관의 가치는 변경 사항을 설명하기 위해 변경 사항을 살펴 보도록 강요하고 때로는 버그를 발견하게 만든다는 것입니다. 그래도 당신 말이 맞아요. 커밋 메시지보다는 코드에 더 많은 관심을 기울일 것입니다.
osa

7
Git은 더 이상 코드 개발에만 사용되지 않습니다. GitHub 위키 페이지 또는 Overleaf LaTeX 문서를 업데이트 할 때 문서를 업데이트하고 있기 때문에 일반적으로 할 말이 없습니다 . 변경에 대해 의미 상 의미있는 모든 것이 diff에 포함됩니다. 나는 실제로 커밋 메시지 자체로 변경 텍스트를 사용하는 것을 발견했습니다. 완전히 중복되었습니다!
Jim Pivarski

1
@amn, 때로는 커미터가 믿어도의 출력이 git diff자명하지 않습니다.
cowlinator

26

그리고 별칭을 추가하면 더 좋습니다.

git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'

이제 주석이 없기 때문에 nccommit, nc를 수행하면 모든 것이 커밋되어야합니다.


19

중요한 코드 업데이트 작업을 할 때 중간 Safepoint가 정말로 필요한 경우 다음을 수행 할 수 있습니다.

git commit -am'.'

이하 :

git commit -am.

그리고 그것은 무엇을합니까?
fishinear

'.'메시지와 함께 커밋을 추가합니다.
lackadaisical

나는 내가 커밋에 넣은 것을 말 그대로 기억하지 못하고 너무 게으른 경우이 방법을 사용 diff합니다.
TheTechRobo36414519

16

참고 : 시작 git1.8.3.2 (2013 7월), (다음 명령을 위에서 언급 한 에 의해 제레미 W 셔먼은 ) 더 이상 편집기를 열 수 없습니다 :

git commit --allow-empty-message -m ''

커밋 25206778aac776fc6cc4887653fdae476c7a9b5a 참조 :

-mgit commit 옵션 으로 빈 메시지를 지정 하면 편집기가 시작됩니다.
그것은 예상치 못한 일이고 불필요합니다.
사용자가 지정했는지 확인하기 위해 메시지 문자열의 길이를 사용하는 대신 옵션 -m이 제공 되었는지 직접 기억하십시오 .


git 2.9 (2016 년 6 월)는 빈 메시지 동작을 개선합니다.

Adam Dinwoodie ( )의 commit 178e814 (2016 년 4 월 6 일)를 참조하십시오 . Jeff King ( )의 commit 27014cb (2016 년 4 월 7 일)를 참조하십시오 . (의해 병합 - Junio C 하마노 - 에서 0,709,261 커밋 2,016 22 사월)me-and
peff
gitster

commit: 빈 메시지를 무시하지 마십시오. -m ''

  • " git commit --amend -m '' --allow-empty-message"은 이상해 보이지만 메시지가 전혀 없도록 커밋을 수정하라는 유효한 요청입니다. 명령 줄에
    의 존재가 잘못 감지 -m되어 원래 커밋의 로그 메시지를 유지하게되었습니다.
  • " git commit -m "$msg" -F file" $msg은 (는) 빈 문자열 이든 아니든 거부되어야 하지만 동일한 버그로 인해이 $msg비어 있을 때 거부되지 않았습니다 .
  • " git -c template=file -m "$msg""은 ( $msg는) 비어있는 경우에도 템플릿을 무시해야 하지만 대신 템플릿 파일의 콘텐츠를 사용했습니다.

3

이를 수행하기 위해 git이 필요하지 않습니다. bash 함수를 창의적으로 사용하면 문제가 해결됩니다. 메시지에 신경 쓰지 않는다면 기본 메시지를 설정하고 잊어 버리십시오.

function gitcom() {
  git commit -m "my default commit message"
}

정말 모험심이 있다면 하나의 명령으로 추가, 커밋 및 푸시 할 수 있습니다.

function gitzap() {
  git add . && git commit -m "whatevs" && git push $1 $2
}

그러면 다음으로 실행됩니다.

gitzap origin master

더 깊이 들어가서 parse_git_branch를 사용하여 몇 가지 키 입력을 저장하거나 "origin"및 "master"의 공통 기본값을 설정할 수도 있습니다.


1
이 bash 함수를 설정하는 방법에 대한 자세한 내용을 제공 할 수 있습니까?
adaam

1
OSX 또는 Linux를 사용하고 있다고 가정하면 이러한 함수를 복사하여 .profile에 배치 할 수 있습니다 (그렇지 않은 경우 홈 폴더에 있어야 함). 새 콘솔 창을 열면 해당 명령을 사용할 수 있습니다. 이 파일을 변경하려면 bash 세션을 새로 고쳐야합니다. 그러면 해당 파일에 다음 별칭을 추가하여 작업 속도를 높일 수 있습니다. alias ea = "subl ~ / .profile"# subl은 내 텍스트 편집기입니다. 별명 어 = "소스 ~ / .profile에"당신이 그냥 "개"(편집 별칭)을 입력하고 어 새로 고치려면 바로 가기를 추가 할 때이 지금 재설정됩니다 #
스티븐 가르시아

2
스크립트를 호출 git-com하고 git-zap(확장자없이) git이 찾을 수있는 어딘가 (즉, PATH 어딘가)에 배치하면 git은이를 일반 git 명령처럼 취급하고 다음과 같이 호출 할 수 있습니다. git com,git zap origin master
Manuzor

1
bash에서는 function gitcom {또는 gitcom() {TMK 중 하나입니다 .

2

Git은 커밋에 주석이 필요합니다. 그렇지 않으면 커밋을 수락하지 않습니다.

git을 기본 커밋 메시지로 사용하여 기본 템플릿을 구성하거나 git에서 --allow-empty-message 플래그를 조회 할 수 있습니다. 나는 (100 % 확실하지 않다) 빈 커밋 메시지를 받아들이도록 git을 재구성 할 수 있다고 생각한다 (좋은 생각은 아니다). 일반적으로 각 커밋은 메시지에 설명 된 약간의 작업이어야합니다.


1
이 답변이 왜 반대 투표되었는지 확실하지 않습니다. Git이 빈 커밋 메시지를 받도록 강제하거나 'save'와 같은 메시지를 사용하는 것은 나쁜 생각이라는 데 동의합니다. 그만 싸우고 망할 도구를 배우십시오.
Jezen Thomas

1

가장 간단한 해결책을 찾았습니다.

git commit -am'save'

그게 다야 git commit 메시지 관련 작업을 수행합니다.

당신은 그것을 더 간단하게 만들기 위해 bash 또는 다른 것들에 칭찬을 저장할 수도 있습니다.

우리 팀원들은 항상 그 메시지를 작성하지만 거의 아무도 그 메시지를 다시 볼 수 없습니다.

커밋 메시지는 적어도 우리 팀에서 시간을 낭비하는 것이므로 무시합니다.


1

내 개인 프로젝트에 다음 구성이 있습니다.

git config alias.auto 'commit -a -m "changes made from [device name]"'

그렇게해서 내가 바쁠 때도

git auto
git push

그리고 적어도 나는 커밋이 만들어진 장치를 알고 있습니다.


-5

커밋 메시지는 항상 따라야하는 모범 사례입니다. 당신이 유일한 개발자가 아니라면 곧 변경되지 않을 것입니다.

git commit -a -m 'asdfasdfadsfsdf'

농담이에요. 그러나 약간의 커밋의 경우 변경 사항을 heroku (예 : 단일 개발자 인스턴스)에 제출해야합니다.
coloradoblue
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.