有时我想用 Git 做这个简单的事情:
我有一个包含多个提交的 git 存储库。
现在如何签出特定提交的所有目录和文件?
我应该在本地克隆 repo,然后为该特定提交执行 git checkout 吗?
是否有一个更简单的命令可以将特定提交的所有文件和目录检出到本地目录?我只是要使用这些文件,我不会更改它们等,所以我不需要创建一个本地 repo 只是为了签出一些文件并查看它们。正确的 ?
有时我想用 Git 做这个简单的事情:
我有一个包含多个提交的 git 存储库。
现在如何签出特定提交的所有目录和文件?
我应该在本地克隆 repo,然后为该特定提交执行 git checkout 吗?
是否有一个更简单的命令可以将特定提交的所有文件和目录检出到本地目录?我只是要使用这些文件,我不会更改它们等,所以我不需要创建一个本地 repo 只是为了签出一些文件并查看它们。正确的 ?
我想你正在寻找git archive
. 也许是这样的:
$ git archive --format=tar --prefix=my-tag-or-commit-id/ my-tag-or-commit-id | (cd /path/to/repo/checkout && tar xf -)
检查git help archive
其他选项和示例。您也可以使用远程分支名称。
我希望这有帮助。
如果您想将您的 repo 设置为 的状态(即提交)fa4ef34
,请使用git checkout
:
git checkout fa4ef34
这将使您的工作副本进入fa4ef34
.
如果您想再次结帐master
,请执行
git checkout master
但是,如果您对远程repo的某个提交感兴趣,则必须做一些不同的事情。
首先,初始化一个本地仓库:
git init myrepo
cd myrepo
现在,您位于新创建的本地存储库中。要获得远程 repo 的提交(例如蓝牙数据包分析器),您必须执行以下操作:
git remote add bluez_hcidump git://git.kernel.org/pub/scm/bluetooth/bluez-hcidump.git
git fetch bluez_hcidump
现在,您的 repo 知道关于bluez_hcidump
repo 的一切。如果您想访问fa4ef34
属于该存储库的提交,请执行我的答案开头所述的步骤。
当您拥有存储库时,您拥有所有可用文件的所有修订版。首先,您找到您有兴趣使用的提交git log
。然后,一旦你找到了一些引用你感兴趣的提交的方法,你可以使用git branch branch_name <the commit you're interested in>
. 现在您将拥有一个本地分支(branch_name
在该提交处调用,您可以git checkout branch_name
查看当时的情况。