gitがプル後のマージコミットメッセージを要求するのはなぜですか?


142

最近、に続いてgit pull、gitがテキストエディターを起動し、マージコミットメッセージを要求し始めました。コミットメッセージは既に入力されています。プルを完了するには、ウィンドウを保存して閉じるだけです。

以前は、標準のコミットメッセージ(の行に沿ってMerge branch 'dev' of remote.com:/repo into dev)を使用して、通知なしでマージを実行していました。

私は最近gitをバージョン1.7.11.3に(homebrew経由で)更新しましたが、この動作を変更するために私がしたことは他に何も考えられません。これは設定ですか、それとも以前の状態に戻す方法はありますか?

回答:


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あなたが実際にブランチをマージしようとしている場合。
グリフ

6
これをオフにする構成フラグはありますか?毎回--no-editと入力するのは面倒です。
LandonSchropp 2013年

驚くばかり。@Christopherを共有していただきありがとうございます。
LandonSchropp 2013年

3
@SeanCoetzee:$EDITOR設定によって異なりますが、OSXでそのままgitを使用している場合は、おそらく'vi'と呼ばれるプログラムです。入力iして「挿入」モードに入ります。メッセージを入力してください。ESC次に、を押してから入力することで、保存して終了できます:wq
クリストファー

58

将来使用するためのショートカットを作成するには、次のいずれかを実行します。

~/.gitconfig以下を使用して編集します。

[core]
    mergeoptions = --no-edit

またはターミナルで以下を実行します

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


13
これは私にとってはうまくいきませんでした(OSXではgit)。私はそれを正しく設定し、の出力を確認しましたgit config --global core.mergeoptions
jvannistelrooy

端末コマンドは次のようになりますgit config core.mergeoptions --no-edit
S. Mert 2018年

@SimsekMertは、すべてのgitリポジトリに対してグローバルではなく、現在のリポジトリの.gitconfigのみを編集します
Dallas Clark

@AbhishekGoel変更を有効にするためにターミナルを再起動する必要がある場合があります
ダラスクラーク

@jvannistelrooy変更を有効にするためにターミナルを再起動する必要がある場合があります
ダラスクラーク

11

まず、上記のクリストファーの答えの警告に注意してください。

次に、自動マージコミットメッセージ編集を無効にする場合は、次の環境変数を設定します。

    GIT_MERGE_AUTOEDIT=no

この環境変数とその「いいえ」設定は、git merge docページに記載されています。非対話的にマージする必要があるスクリプトでのみ使用することをお勧めしますが、当然ながら、シェル環境の一部として設定して、その効果をより永続的にすることができます。


これが--no-editフラグを使用する場合とどのように異なるかを説明できますか?
Alexander Mills

2
機能的な違いはわかりませんが、便利な要素があるので価値があります。この--no-editフラグは、ここでのダラスクラークの回答に記載されている設定では機能しないように見えるため、使用ごとにコマンドラインで繰り返す必要があります。環境変数の設定は、この設定を維持するために私が知っている唯一の方法です。
emackey 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.