git에서 풀-풀 병합 커밋 메시지를 묻는 메시지가 나타나는 이유는 무엇입니까?


142

최근에 git pullgit은 텍스트 편집기를 생성하고 병합 커밋 메시지를 요청하기 시작했습니다. 커밋 메시지가 이미 채워져 있으므로 창을 저장하고 닫아서 풀을 완료해야합니다.

과거에는 표준 커밋 메시지와 함께 (의 행을 따라) 자동으로 병합을 수행했습니다 Merge branch 'dev' of remote.com:/repo into dev.

최근에 git을 homebrew를 통해 버전 1.7.11.3으로 업데이트했지만이 동작을 변경하기 위해 수행 한 다른 작업은 생각할 수 없습니다. 이것이 설정입니까, 아니면 원래 상태로 돌아갈 수있는 방법이 있습니까?

답변:


157

git 1.7.10에서 git 개발자는 병합 커밋이 너무 쉽게 이루어질 수 있다고 결정했습니다. 이 블로그 게시물에 설명 된대로 대화식 커밋 메시지 동작을 강제하면 해당 커밋 메시지를보다 상세하게 만들고 불필요한 병합의 전체 빈도를 줄일 수 있습니다.

--no-edit이 동작을 피하기 위해 플래그를 사용할 수는 있지만 그렇지 않습니다. 히스토리 커밋과 마찬가지로 병합 커밋은 잘 구성되어야합니다. 당신의 역사는 유용 할 것입니다.


54
도와 주셔서 감사합니다. 병합 커밋은 항상 설명해야한다고 동의하지 않습니다. 내가 찾은 이유는 내가 가져올 때마다 자동 병합이 병합이 필요한 이유를 설명하도록 요청하기 때문에 변경 사항이 없을 때도 그렇게하기 때문에 합리적이지 않기 때문입니다.
브라이언

10
또한이 동작을 피하는 데 유용한 리소스입니다. longair.net/blog/2009/04/16/git-fetch-and-merge 피해야합니다 git pull. git merge --ff-only업데이트 하려는데 로컬 변경 사항이 없다고 생각되면 사용 하십시오. git merge --no-ff실제로 지점을 병합하려는 경우에 사용 하십시오.
Glyph

6
이것을 끄는 설정 플래그가 있습니까? 매번 편집 할 필요가 없습니다.
LandonSchropp 2018 년

대박. @Christopher를 공유해 주셔서 감사합니다.
LandonSchropp 2016 년

3
@SeanCoetzee : $EDITOR설정 에 따라 다르지만 OSX에서 git out of box를 사용하는 경우 아마도 'vi' 라는 프로그램 일 것입니다 . 입력 i"INSERT"모드로 들어갑니다; 메시지를 입력하십시오. ESC그런 다음를 누르고 입력하여 저장하고 종료 할 수 있습니다 :wq.
Christopher

58

나중에 사용할 수있는 바로 가기를 만들려면 다음 중 하나를 수행하십시오.

~/.gitconfig다음을 사용하여 편집하십시오 .

[core]
    mergeoptions = --no-edit

또는 터미널에서 다음을 실행하십시오.

git config --global core.mergeoptions --no-edit


13
이것은 나를 위해 작동하지 않았으며 (OSX의 git)의 출력을보고 올바르게 설정했습니다 git config --global core.mergeoptions.
jvannistelrooy 2016 년

터미널 명령은 다음과 같아야합니다git config core.mergeoptions --no-edit
S. Mert

그 @SimsekMert 매 자식 저장소 아니 전 세계적으로, 현재 respository에 .gitconfig을 편집합니다
달라스 클라크

@AbhishekGoel 변경 사항을 적용하려면 터미널을 다시 시작해야 할 수도 있습니다
Dallas Clark

@jvannistelrooy 변경 사항을 적용하려면 터미널을 다시 시작해야 할 수도 있습니다
Dallas Clark

11

먼저 위의 Christopher의 답변에서 경고에 유의하십시오.

그런 다음 여전히 자동 병합 커밋 메시지 편집을 비활성화하려면이 환경 변수를 설정하십시오.

    GIT_MERGE_AUTOEDIT=no

이 환경 변수와 "no"설정은 git merge doc 페이지에 설명되어 있습니다. 비 대화식으로 병합해야하는 스크립트에서만 사용하는 것이 좋지만, 효과를보다 영구적으로 만들기 위해 셸 환경의 일부로 설정할 수 있습니다.


이것이 --no-edit플래그를 사용하는 것과 어떻게 다른지 설명 할 수 있습니까 ?
Alexander Mills

2
나는 기능상의 차이점을 모르지만 편의 요소로 가치가 있습니다. --no-edit플래그는 여기 달라스 클라크의 대답에 설명 된대로이 설정에서 작업에 표시되지 않는 한, 각 사용하여 명령 행에서 반복되어야한다. 환경 변수를 설정하는 것이이 설정을 고수하는 유일한 방법입니다.
emackey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.