1

git に移動されたファイルの以前のバージョンをチェックアウトすることは可能ですか?

例えば:

revison 1:  file.txt(new file)
revison 2:  file.txt(modify)
revison 3:  file.txt(modify)
revison 4:  move file.txt to doc/file.txt

現在、マスターはリビジョン 4 であり、リビジョン 2 のスナップショットを取得したい場合は、次のように入力します。

cd doc; git checkout HEAD^2 file.txt

私が得た:

error: pathspec 'HEAD^2' did not match any file(s) known to git.
4

3 に答える 3

1

ファイルdoc/file.txtはその時点では存在せずHEAD^2、親の親ではなく 2 番目の親を意味するため、次のようなものが必要です。

git checkout HEAD~2 -- file.txt
git mv file.txt doc/file.txt

またはさらに簡単:

git show HEAD~2:file.txt > doc/file.txt
于 2013-10-02T04:58:35.687 に答える
0

試してみるgit checkout HEAD^^^ file.txtgit checkout HEAD~2 file.txt

また、可能な場合はブランチ名を使用してみてください。後で reflog を見る必要がある場合に役立ちます。

git log必要なコミットのハッシュを取得するために使用することもできます。その3c142としましょう。

次に、使用できますgit checkout 3c142 file.txt

于 2013-10-02T02:51:22.997 に答える
0

HEAD~2ではなく、を使用する必要がありますHEAD^2-それは私にとってはうまくいきます。

構文HEAD^2は、HEAD がマージ コミットの場合にのみ関連し、2 番目の親コミットを取得することを意味します (一般的ではありません!)。

構文HEAD~2は、現在のコミットの親の親を指定するために使用されます。

于 2013-10-02T02:48:36.937 に答える