web-dev-qa-db-ja.com

gitで高速転送をデフォルトでオフにできますか?

git mergeではなくgit rebaseを使用し、notコミットを表示したいときを考えることはできません。デフォルトで高速転送をオフにするようにgitを設定する方法はありますか? --ffオプションがあるという事実は、方法があることを暗示しているように見えますが、ドキュメントで見つけることができないようです。

251
Jason Baker

はい、--no-ffがあります。ブランチごとにマージオプションを設定できます。

git config branch.master.mergeoptions  "--no-ff"

以下を$(REPO)/.git/configファイルに追加します。

[branch "master"]
    mergeoptions = --no-ff

脚注:私の経験から言えば、最終的に早送りをオフにすることは、Gitの新規参入者にとって大いに役立つことに気づきました-しかし、ワークフローと概念の感覚が沈み始めたら、間違いなくロググラフが大量にぼやけることを避けたいと思います意味のない「マージされたリモート..blarf」タイプのコミット。

267
conny

スレッドにはまだ保留中の質問があるようです:グローバルにそれを行う方法(つまり、すべてのブランチ)?レコードには、次のものを使用できます。

git config --add merge.ff false

...現在のリポジトリのすべてのブランチに適用されるようにします。 すべてのリポジトリのすべてのブランチに適用するには、誰かがnot--globalオプションなしで実行します(ローカル設定がグローバルをオーバーライドします)これを実行します:

git config --global --add merge.ff false

ドキュメント から:

merge.ff
デフォルトでは、現在のコミットの子孫であるコミットをマージするときに、gitは追加のマージコミットを作成しません。代わりに、現在のブランチの先端は早送りされます。 falseに設定すると、この変数はgitにそのような場合に追加のマージコミットを作成するように指示します(コマンドラインから--no-ffオプションを指定するのと同じです)。のみに設定すると、このような早送りマージのみが許可されます(コマンドラインから--ff-onlyオプションを指定するのと同等)。

326
Eric Platon

回答のスレッドを読んで、次の2つのオプションを使用することになりました

git config --global pull.ff only # Disallows non ff merges on pull. Overrides merge.ff when pulling
git config --global merge.ff false # even create extra merge commit when fast forward merge would be possible

大まかに関連しているだけですが、この設定はプル中のトラブルを回避します

git config --global pull.rebase # set up pull to rebase instead of merge
10
bastian