2012-02-03 5 views
6

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

私が今行ったことはちょうどgit diff ..sha-of-my-commit path/to/my/fileであり、欠けている行をコピー/貼り付けただけですが、これを行うにはより良い方法が必要だと思いますか?変更を意味と仮定

答えて

4

があなたの仕事の木(コミットされていない)である:

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

あなたはいくつかの変更をコミットしていた場合、あなたはまだ少しより多くの仕事で、それを行うことができます。あなたの歴史はこのようになりますと仮定します。あなたはAのバージョン、プラスにBから変更をしたい

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

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

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

+0

ありがとうございます!私は 'git stash'を完全に忘れてしまった – javiervd

関連する問題