5

ブランチAがあり、そこからブランチBがあるとします。Aに一連の変更を加えてから、Bをチェックアウトしてaを実行しgit pullます。Bを変更しましたが、Aに変更する必要があることに気付きました。これを実行しようとするとgit checkout A、タッチしたファイルに「次のファイルへのローカル変更はチェックアウトによって上書きされます」というメッセージが表示されます。

Bでgitpullを実行し、それ以降Aでそのファイルに触れていない場合、変更が上書きされるのはなぜですか?

4

1 に答える 1

9

このメッセージが表示される理由は、基になるファイル (コミットされていない変更の前) がブランチ A とブランチ Bで異なるためです。ファイルが同じである場合、Git はブランチを切り替え、ブランチ A に切り替えた後も同じコミットされていない変更を保持します。

これらの変更を行う 1 つの方法は、それらを隠しておくことです。

(on branch B)$ git stash
git checkout A
git stash pop

競合する変更がある場合は、この時点で競合を解決する必要がある場合があります。変更があっても競合しない場合、これは成功します。

于 2012-08-20T20:36:49.863 に答える