コミットを表示したくないとgit merge
いうよりもgit rebase
、使用したいと思う時期を本当に考えることはできません。デフォルトで高速転送をオフにするようにgitを構成する方法はありますか?オプションがあるという事実は、方法があることを意味しているように見えますが、ドキュメントではそれを見つけることができないようです。--ff
コミットを表示したくないとgit merge
いうよりもgit rebase
、使用したいと思う時期を本当に考えることはできません。デフォルトで高速転送をオフにするようにgitを構成する方法はありますか?オプションがあるという事実は、方法があることを意味しているように見えますが、ドキュメントではそれを見つけることができないようです。--ff
回答:
はい、あります--no-ff
。ブランチごとにマージオプションを設定できます、例えば
git config branch.master.mergeoptions "--no-ff"
以下を$(REPO)/.git/config
ファイルに追加します。
[branch "master"]
mergeoptions = --no-ff
脚注:私の経験について言えば、最終的には早送りをオフに切り替えることがgitの初心者に役立つことがわかりましたが、ワークフローとコンセプトの感覚が沈み始めたら、無意味な「マージされた」大量のロググラフを不鮮明にしたくないはずです。リモートの..blarf 'タイプのコミット。
脚注2、10年後:以下の他の回答はより近代的な構成オプションを提供しますが、空のマージコミットは実際にのみであるため、実際には、この日と年齢のデフォルト(つまり、可能な場合は早送り)を維持する必要があります歴史を推論することをはるかに困難にします。
git pull
あるgit fetch
+はgit merge
。
git merge --no-ff (branchname)
か?そしてgit pull
、いつものように機能したいですか?
スレッドにはまだ保留中の質問があるようです:グローバルに(つまり、すべてのブランチに対して)どうやって行うのですか?レコードについては、以下を使用できます。
git config --add merge.ff false
...現在のリポジトリのすべてのブランチに適用するため。オプションなしで実行していないすべてのリポジトリのすべてのブランチに適用するには(ローカル設定がグローバルをオーバーライドする)、次のコマンドを実行します。--global
git config --global --add merge.ff false
ドキュメントから:
merge.ff
デフォルトでは、現在のコミットの子孫であるコミットをマージするときに、gitは追加のマージコミットを作成しません。代わりに、現在のブランチの先端が早送りされます。falseに設定すると、この変数はgitにそのような場合に追加のマージコミットを作成するように指示します(--no-ff
コマンドラインからオプションを指定することと同じです)。onlyに設定すると、そのような早送りマージのみが許可されます(--ff-only
コマンドラインからオプションを指定することと同等)。
merge.ff
はGit 1.7.6で導入されました。古いバージョンでは効果がありません。
puff = "pull --ff --ff-only"
答えのスレッドを読む私は次の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 true # set up pull to rebase instead of merge
merge
ブランチを早送りするために、リモートからコミットを行っていないブランチでは常に使用します。これを行う最も簡単で安全な方法のようです。私は好奇心旺盛ですが、明らかにユースケースがあります。ブランチの片側にコミットがない場合に、なぜマージコミットを作成したいのですか?