2

私は git リポジトリで 2 人の共同作業者と作業しています。最近、いくつかの変更をローカルにコミットし、作業の github リポジトリから取得しました。これにより、解決したいくつかの競合が発生しました。ただし、これらのマイナーな競合を引き起こしたプルに加えて、ローカル リポジトリで変更済みとしてマークされた他のファイルが多数あります。ファイルの差分を調べると、これらは共同作業者が行ったはずの変更であることがわかります。それが私のローカルリポジトリにたどり着く唯一の方法だったので、彼らはそれらをコミットしたに違いないと思います。しかし、彼らがコミットした変更が、あたかも私が今コミットする必要がある変更であるかのように、どうやって私のローカル リポジトリに表示されるのでしょうか? PS私は長期のSubversionユーザーであることにハンディキャップを負っている可能性があり、gitにはまったく慣れていません...

以下のコメントと @wmfairuz の回答に基づいて、ファイル A への変更をローカルでコミットした場合、ファイル A と B を変更する変更セットをプルすると、A の変更を解決した後にファイル A と B の両方をコミットする必要があることがわかりました。私の競合解決はファイル A のみを変更しますよね?

さて、問題は実際にはもう少し複雑です。私は実際にファイル A への変更をコミットしましたが、さらに、ファイル C のセットへの変更をコミットしていませんでした。ファイル C をコミットしたくありません。ほとんどの場合、更新された利便性のためにレポに保存されている LaTeX および Python 出力ファイルです。ソースで Python と LaTeX を実行しているためですが、これらの変更を記録したくありません。次に、ファイル A と一連のファイル B を変更する変更セットをプルしました。私の git 無知のため、解決済みのファイル A をコミットするときに、ファイル セット B への自動的にステージングされた変更をステージング解除しました。 B. マージを正しく完了し、ファイル セット B が何らかの形で破壊されないようにするにはどうすればよいですか?

4

1 に答える 1

2

それは正常です。

競合するファイルが、ファイル A (競合するファイル) とファイル B を変更するコミットの一部であるとします。マージが失敗すると、競合を修正して自分でマージするまで、コミットは保留されます。したがって、あなたの場合、ファイル B が変更されたファイルとして表示されるのは正常です。

したがって、マージの競合ごとに、競合を修正し、競合しているファイルを追加し、コミットから変更されたすべてのファイルを追加する必要があります。次にマージします。したがって、最後に、わずかに異なるコミットが行われます (わずかに異なるファイル A + ファイル B の通常の変更)。

于 2013-03-28T22:29:18.507 に答える