6

ファイルを以前のコミットに戻そうとすると問題git checkoutが発生します。単一のファイルを元に戻すために使用できることはわかっていますが、保持したいファイルに変更があるため、どうすればよいか疑問に思っていました単一ファイルの以前のコミットと現在のHEADの間の一種の「マージ」? 使用してみgit reset sha-of-my-commit path/to/my/fileましたが、作業ディレクトリに最新バージョンを保持しながら、以前のバージョンをステージング領域に配置し、後で両方のファイルをマージする方法がわかりません。

私が今行ったことはgit diff ..sha-of-my-commit path/to/my/file、不足している行をコピーして貼り付けただけですが、これを正しく行うためのより良い方法があるに違いないと思いますか?

4

1 に答える 1

5

変更が作業ツリーにある(コミットされていない)ことを意味すると仮定します。

git stash
git checkout previous-commit path/to/file
git stash pop

いくつかの変更をコミットした場合でも、もう少し作業を行うことでそれを行うことができます。履歴が次のようになっているとします。

- x - A - x - x - x - B - x - x (HEAD)

Aのバージョンに加えて、B以降の変更が必要な場所。次に、これを行います。

git stash
git checkout B path/to/file
git stash
git checkout A path/to/file
git stash pop
git stash pop

stashアプリケーションはマージ操作であるため、マージの競合が発生する可能性があることに注意してください。もちろん、先に進む前にそれらを解決する必要があります!

于 2012-02-03T15:51:15.660 に答える