git merge의 기본값을 --no-ff --no-commit으로 만들려면 어떻게해야합니까?


84

회사 정책은 --no-ff병합 커밋 에 사용하는 것 입니다. 개인적으로 병합 로그 메시지를 조정하여 --no-commit. 또한 커밋을 놓기 전에 실제로 컴파일하고 테스트하는 것을 좋아합니다.

어떻게해야합니까 --no-ff--no-commit모든 지점에 저에 대한 기본?

(그리고 나는 이것을 묻는 이후 몇 년 동안 배웠습니다. 저는 거의 항상 커밋에 만족하므로 기본적으로 커밋을 허용하는 것이 더 간단하며 푸시 작업을 수행하기 전에 수정하거나 수정하는 한 문제 없다...)


답변:


112

이것을 $ HOME / .gitconfig에 넣으십시오.

[merge]
    ff = no
    commit = no

git-config를 사용하여 다음을 수행 할 수 있습니다.

  git config --global merge.commit no
  git config --global merge.ff no

1
작동합니까? 나에게 적합하지 않습니다. branch.master.mergeoptions="--no-ff", 또는 merge.ff="no"(아래 답변 참조)
gaizka

@gaizka 사실, 1.7.2 및 1.7.7.2에서는 작동하지 않습니다. 나중에 이전 버전을 확인하는 데 시간을 할애하겠습니다.
William Pursell

@Stripes는 git config 명령을 사용하여 [core]가 아닌 [merge]에 넣습니다
Tisch

41

--no-ff --no-commit기본 병합 동작 을 만들려면 다음을 no사용 하도록 옵션을 설정하십시오 .

git config --global merge.ff no
git config --global merge.commit no

그러나 이것의 문제는 git pull= git fetch+ git merge입니다. 따라서 원격 서버에서 가져올 때마다 간단한 빨리 감기가 보장 될 때 추악한 병합 커밋을 생성하게됩니다. 이를 해결하려면 다음과 같이 설정 pull.ff하십시오 yes.

git config --global pull.ff yes

17
mergeoptions를 사용할 때 이것이 사실이지만, merge.ff대신 사용 하는 경우이를 수행하지 않습니다. 이는 명시 적 병합에만 영향을 미치고 pulls는 원하는 빨리 감기를 수행합니다.
Nick

3
내가 사용하는 경우 merge.ff = no, git pull병합 커밋을 생성합니다.
Matt McClure

3
이 문제를 해결하려면 git pull --rebase( git-scm.com/docs/git-pull ) 또는 구성 branch.autosetuprebase( git-scm.com/docs/git-config.html )
Cybot

8
또는 사용pull.ff = yes
gabeio

20

git 1.7.6 버전부터 다음을 사용해야합니다.

git config [--global] merge.ff no

--no-ff모든 병합에서 사용하는 "강제" 합니다.

기본 동작은

git config [--global] merge.ff yes

그리고

git config [--global] merge.ff only

빨리 감기가 아닌 병합을 거부합니다.


11

에 따르면 매뉴얼 , 당신은 사용해야합니다

$ git config [--global] merge.ff false

git-config 유틸리티를 사용하여 모든 분기에 대해 기본적으로 no-fast-forward 옵션을 설정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.