2

私は他の人の変更をGitとマージする最初の経験をしています(簡単な方法で自分でクローン/プッシュするのではなく)。私が使用git pullした競合解決の基本的なプロセスは十分に単純で、そのビットはうまく機能しているように見えました。

しかし、私は自分が見ているものに少し混乱しています。これは非常に単純な質問だと思います。しかし、マスターから誰かの変更をプルしてマージした後、ファイルにまったく触れていなくても、それらのファイルがブランチで「ステージング」されていると表示されるのはなぜですか?

たとえば、他の人がプロジェクトに新しいPNGを追加しました。そのPNGは、私が行うと「追加」されたものとして表示されますgit status。私はしませんでしgit addた、マージはそれを自動的にそこに置きました。すべてが実際に正しく機能していて、これが私のコミットから来ているように見えることはありませんか?コミットしてプッシュすると、ある種の差分魔法が入りますか?

4

2 に答える 2

4

プルは単なるフェッチ+マージであることを忘れないでください。

マージをコミットする必要があります。これにより、マージコミットと呼ばれるものが発生します。マージコミットには、親として最新のリビジョンとプルしたばかりのリビジョンの両方が含まれます。ファイルはマージコミットに含まれるため、ステージングされたものとして表示されます。

git commit実行してから、たとえばで結果の履歴を確認してみてくださいgitk

マージの詳細については、たとえばGitBookを参照してください。

于 2012-08-12T19:49:13.250 に答える
1

それはあなたのコミットから来ました。マージコミットは、ファイルがブランチに追加されたものです。これは、マージが行われる前にファイルが存在していなかったためです。ブランチをにマージして戻す場合、masterそのファイルはすでににあるため、そのマージではそのファイルが追加されたことが表示されませんmaster

于 2012-08-12T19:53:26.933 に答える