2016-08-15 10 views
0

私はファイルに変更をコミットしてgit pushを実行しました。私の支店は遠隔の相手の後ろにあったので、コミットは拒否されました。私はgit pullを実行し、それはMerge made by the 'recursive' strategy.と言った。しかし、それは私のテキストエディタをプルアップし、私にコミットメッセージを入力させてもらいました。 git pullを実行したときにgitが自動的にコミットを生成したのはなぜですか?結果のコミットには2つの親がありますが、変更されたファイルはありません(まったく変更はありません)。今、私が何かをマージしたと言っているが、実際の内容がないと主張する愚かなコミットがあります。Gitはプル後自動的に変更を加えずにコミットしました

+0

これを読んでください:http://stackoverflow.com/a/34503873/1401351 – Peter

+0

@Peterそれで、基本的に私はrebasedする必要がありますか? – AlexMA

+0

はい、ほとんどのワークフローでは、他のブランチにプッシュバックされていないか、他のブランチに共有されておらず、実際の並列アクティビティを記録したくない小さな変更セットに対しては、 "pull --rebase"を使用することをお勧めします。 – Peter

答えて

2

git pullを実行すると、gitは実際にはgit fetchに続いてgit mergeに相当するコマンドを実行します。この場合、マージは重要ではありませんが、コミットが行われる前に統合する必要のある2つの異なるブランチに対してコミットしています。わかりやすくするために、gitは、各ブランチの履歴の正確性を維持しながら、統合を処理するために「マージコミット」を行っています。

ブランチの履歴を保持することは重要ではない場合は、this questionが重要です。

+0

コミットに変更がない理由はまだ分かりません。 – AlexMA

+0

あなたが投稿した質問は、基本的に私の複製であり、それを説明しています。私には不思議そうだが、ちょっと¯\ _(ツ)_ /¯ – AlexMA

+0

@AlexMAファイルの変更、あなたは意味ですか? *完全にはわかりませんが、私は推測の危険があります:ファイルは実際には親のコミットではなくマージではなく変更されます。 「変更されたファイル」はありません=出力はありませんか? – Conduit

関連する問題