我如何从一个git回购签出一个文件?


当前回答

这里是一个完整的解决方案,只拉和推一个特定的文件在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

其他回答

首先使用-n选项和——depth 1选项克隆repo,前者抑制所有文件的默认签出,后者意味着它只获取每个文件的最新修订

git clone -n git://path/to/the_repo.git --depth 1

然后签出你想要的文件,就像这样:

cd the_repo
git checkout HEAD name_of_file

说文件名是123.txt,这对我来说是有效的:

git checkout --theirs  123.txt

如果文件在目录a中,请确保正确地指定它:

git checkout --theirs  "A/123.txt"

如果你有一个本地修改的文件(搅乱了git的文件),只需要这样做:

git checkout origin/master filename

Git签出-切换分支或恢复工作树文件,(这里我们什么都不切换,只是覆盖文件 Origin /master -您当前的分支,或者您可以使用特定的修订号,例如:cd0fa799c582e94e59e5b21e872f5ffe2ad0154b, 包含项目主目录路径的文件名(.git目录所在位置) 所以如果你有结构:

“.git

公共/ index . html

public / css / style . css

供应商

composer.lock”

想要重新加载index.html -只需使用public/index.html

如果你需要一个来自远程Git存储库的特定分支的特定文件,命令如下:

git archive --remote=git://git.example.com/project.git refs/heads/mybranch path/to/myfile |tar xf -

剩下的可以从@VonC的回答中得到:

如果你需要一个来自主分支的特定文件,它是:

git archive --remote=git://git.example.com/project.git HEAD path/to/myfile |tar xf -

如果你需要一个标签的特定文件,它是:

git archive --remote=git://git.example.com/project.git mytag path/to/myfile |tar xf -

你可以通过

git archive --format=tar --remote=origin HEAD | tar xf -
git archive --format=tar --remote=origin HEAD <file> | tar xf -