web-dev-qa-db-ja.com

Git pullでマージメッセージを書くように求められます

私は私のブランチから引き出します:

git checkout mybranchSample
git fetch
git pull Origin master

次に、Gitから次のメッセージが表示されます。

このマージが必要な理由を説明するコミットメッセージを入力してください。
特に更新されたアップストリームをトピックブランチにマージする場合

そして、コミットメッセージを入力した後、masterをファイルにマージします。 masterの一部のファイルで作業したことはありませんが、git statusと入力すると、ファイルリストが緑色で表示されます。

この問題は、同僚とは発生しませんnotですが、私だけです。この背後にある理由は何ですか?

35
Pratik

_git pull_は基本的に一度に2つのアクションです:_git fetch_の後に_git merge_が続きます(_git pull --rebase_を使用する場合を除き、その場合は何が起こるか推測できます)。

これが表示される理由は、Gitがfast-forwardマージを実行できないためです。その理由は通常、プルしようとしているブランチにローカルで_git commit_ tedしているため、リモートの変更をローカルの変更とマージする必要があるためです。

また、Gitがマージメッセージを事前に入力しているので、何も入力する必要はありません。保存して終了するだけで、マージが完了するはずです。 (もちろん、マージの競合がない限り)。

38
Madara Uchiha

Linus Torvaldsが最もよく説明しています。

私は主に責任があるので、今後の「git」UIの変更についてWordを広めます。

この変更により、人々はマージを説明するためにマージメッセージを作成できるようになり、必要でない場合はマージしないこともできます。

私はここ数週間、そのgit機能を使用してきましたが、その結果、サブメンテナンスにさまざまなメモが含まれていることからマージされました(少なくとも、サブメインが私に教えてくれた場合は)。だから、私は例を挙げてリードしようとしています。

ただし、マージの説明が気に入らない場合、これは面倒な場合があります。もちろん、あなたがあなたのマージを説明しなければ、あなたはうっとうしいので、結局それはすべて平等になります。言うまでもなく「カルムバランス」。

ソース: https://plus.google.com/+LinusTorvalds/posts/SrePhcj6XJe

25
tne

masterブランチをmybranchSampleブランチにマージしようとした場合、これはまったく正常です。

GitはmastermybranchSamplemybranchSampleブランチからgit pull Origin masterを実行したとき)とcommitsをマージします(マージの変更がない限り)競合)、事前に入力されたメッセージが表示されます。保存して終了するだけです。

[〜#〜] but [〜#〜]リモートmasterブランチから最新のコードを取得してローカルmasterブランチとマージしようとした場合、その後、masterにチェックアウトし、masterからプルする必要があります。

あなたからの声明

マスターファイルをファイルにマージします。マスターからいくつかのファイルを操作したことはありませんが、git statusと入力すると、ファイルリストが緑色で表示されます。

2番目の方法を試みていると思います。

だから、試してください:

git checkout master
git pull Origin master
3
Anand S

あなたはブランチに問題があると思う...あなたが直面していると想像できる2つの可能なシナリオ:

1)リモートブランチmybranchSampleがあり、その上で作業したい-マスターブランチとは今のところ何の関係もない(つまり、ブランチをマスターまたはバイスにマージしたくない逆)。あなたはあなたの質問で言います

my branchからpullを取得した後...

しかし、あなたはgit pull Origin master、これはmasterから取得します。代わりに、git version> = 1.6.6で、次を使用してリモートブランチをチェックアウトできる必要があります。

git fetch
git checkout mybranchSample

2)mybranchSampleで作業しようとしましたが、そこにmasterブランチの最新のコードが必要です。それから、Anand Sが言ったように、マージが必要かもしれないことは理にかなっています。

3
misch

これがあなただけに起こっているのは、あなたの設定が違うからではなく、あなたがマージしているブランチが違うからです。

差分内のファイルを変更しなかった理由は、マージ後、新しいコミットが親コミットを行う必要があるためです。最後に行ったコミットとマスターでの最新のコミットです。新しいコミットには、すべての変更/ファイルが含まれます。したがって、newからyour last commitに変更すると、すべてのファイルが変更/追加されたことがわかります。マスターブランチ。

2
Martin Rauscher