我如何从一个git回购签出一个文件?
当前回答
Git checkout branch_or_version——path/file
示例:git checkout HEAD——main.c
其他回答
这里是一个完整的解决方案,只拉和推一个特定的文件在git仓库:
首先,你需要克隆git存储库,并给出一个特殊提示——不签出
git clone --no-checkout <git url>
下一步是用下面的命令清除索引中的非暂存文件:
git reset
现在你可以开始拉出你想要修改的文件了:
git checkout origin/master <path to file>
现在,存储库文件夹包含您可以立即开始编辑的文件。编辑完成后,您需要执行简单而熟悉的命令序列。
git add <path to file>
git commit -m <message text>
git push
我添加这个答案作为做正式签出或一些类似的本地操作的替代方案。假设您可以访问Git提供程序的web界面,您可能能够在给定的提交时直接查看任何文件。例如,在GitHub上,你可以使用这样的东西:
https://github.com/hubotio/hubot/blob/ed25584f/src/adapter.coffee
这里ed25584f是感兴趣的提交的SHA-1散列的前8个字符,后面是源文件的路径。
类似的,在Bitbucket上我们可以尝试:
https://bitbucket.org/cofarrell/stash-browse-code-plugin/src/06befe08
在本例中,我们将提交散列放在源URL的末尾。
说文件名是123.txt,这对我来说是有效的:
git checkout --theirs 123.txt
如果文件在目录a中,请确保正确地指定它:
git checkout --theirs "A/123.txt"
你可以通过
git archive --format=tar --remote=origin HEAD | tar xf -
git archive --format=tar --remote=origin HEAD <file> | tar xf -
这听起来像是你试图从集中式版本控制中继承一个想法,而git本质上不是这样的——它是分布式的。如果你想使用git存储库,你可以克隆它。然后,您就拥有了工作树的所有内容和所有历史记录(好吧,至少是指向当前分支顶端的所有内容),而不仅仅是单个文件或单个提交的快照。
git clone /path/to/repo
git clone git://url/of/repo
git clone http://url/of/repo
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 如何在Python中获得所有直接子目录
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 如何在Ruby中创建文件
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支