我有一个工作目录~/gitrepo/
(这是.git
文件夹所在的位置,我的所有其他文件和往常一样)。
我有一个旧的提交,我知道其 SHA-1 哈希。其中有一个文件foo.cpp
,我现在想将它带回另一个目录(只是为了不弄乱我的工作树),例如这里:
~/Desktop/foo.cpp
这个怎么做?
我有一个工作目录~/gitrepo/
(这是.git
文件夹所在的位置,我的所有其他文件和往常一样)。
我有一个旧的提交,我知道其 SHA-1 哈希。其中有一个文件foo.cpp
,我现在想将它带回另一个目录(只是为了不弄乱我的工作树),例如这里:
~/Desktop/foo.cpp
这个怎么做?
git checkout SHA -- foo.cpp
cp foo.cpp ~/Descktop/foo.cpp
之后,您将进行编辑foo.cpp
,因此您可能想将其恢复为git reset
或其他内容。
你可以在 github 网站上找到你的提交,然后从那里下载你想要的文件。
这就是我为获取 Informix 4GL 文件的旧副本所做的工作。首先,我将 re_trnfunc.4gl 复制到 re_trnfunc.4gl.sav,因为我以前从未尝试过。
然后,我输入:
git log --shortstat --pretty
我寻找与告诉我我想要哪个版本的评论相对应的承诺。
commit 6fbe9303e7f80150fdf6abdc8f926a802f8a171e
Author: Charles M. Norton <someone@somewhereville.com>
Date: Wed Jul 1 14:13:58 2015 -0400
Put in new re payment distro order, interest, charges, and principal.
1 files changed, 34 insertions(+), 30 deletions(-)
然后我进入(如@ДМИТРИЙ МАЛИКОВ 的回答所示)
git checkout 6fbe9303e7f80150fdf6abdc8f926a802f8a171e -- re_trnfunc.4gl
我检查了该文件,将其保存在其他地方,然后需要将 re_trnfunc.4gl 放在结帐前的状态。
我进入了:
git reset HEAD re_trnfunc.4gl
我可以通过--
在
git checkout 6fbe9303e7f80150fdf6abdc8f926a802f8a171e -- temp_re_trnfunc.4gl
命令。