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 2012年

@gaizka確かに、1.7.2と1.7.7.2では機能しません。しばらくしてから、古いバージョンを確認するようにします。
William Pursell 2012年

@Stripesは、git configコマンドを使用して、[コア]ではなく[マージ]に配置します
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.ffyesます。

git config --global pull.ff yes

17
これはmergeoptionsを使用する場合に当てはまりますが、merge.ff代わりに使用している場合はこれを行わないことに注意してください。明示的なマージにのみ影響しますが、プルは必要な早送りを行います。
ニック

3
を使用するとmerge.ff = nogit pullマージコミットが作成されます。
マットマクルーア2013年

3
これを解決するためにあなたが使用する必要がありますgit pull --rebasegit-scm.com/docs/git-pull)または構成branch.autosetuprebasegit-scm.com/docs/git-config.html
Cybot

8
または使用pull.ff = yes
gabeio 2015年

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ユーティリティを使用して、すべてのブランチにデフォルトで早送りなしオプションを設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.