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


当前回答

如果你有一个本地修改的文件(搅乱了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

其他回答

在codecommit (git版本的Amazon AWS)中,你可以这样做:

aws codecommit \
  get-file --repository-name myrepo \
  --commit-specifier master \
  --file-path path/myfile \
  --output text \
  --query fileContent | 
base64 --decode > myfile

Git checkout <other-branch>—<single-file>适用于我的Git .2.37.1。 然而,该文件是(git-魔术)提交的,我不能看到正确的git diff。 然后运行git restore——staging db/structure。SQL来取消它。

这样我就有了我想要的确切版本的文件,我可以看到该文件与其他版本的区别。

非常简单:

git checkout from-branch-name -- path/to/the/file/you/want

这将不会签出from-branch-name分支。您将停留在您所在的分支上,并且只有该文件将从指定的分支签出。

下面是git-checkout手册的相关部分

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>...
       When <paths> or --patch are given, git checkout does not switch
       branches. It updates the named paths in the working tree from the
       index file or from a named <tree-ish> (most often a commit). In
       this case, the -b and --track options are meaningless and giving
       either of them results in an error. The <tree-ish> argument can be
       used to specify a specific tree-ish (i.e. commit, tag or tree) to
       update the index for the given paths before updating the working
       tree.

向Ariejan de Vroom致敬,他在这篇博客文章中教会了我这些。

已有内容的两种变体:

git archive --format=tar --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | tar -O -xf -

and:

git archive --format=zip --remote=git://git.foo.com/project.git HEAD:path/to/directory filename | funzip

它们将文件写入标准输出。

在GIT 1.7.2.2中工作

例如,你有一个带有分支branch1和branch32的远程some_remote

所以要签出一个特定的文件,你可以调用这些命令:

git checkout remote/branch path/to/file

举个例子,大概是这样的

git checkout some_remote/branch32 conf/en/myscript.conf
git checkout some_remote/branch1 conf/fr/load.wav

这个检出命令将整个文件结构conf/en和conf/fr复制到当前目录,在这里您调用这些命令(当然,我假设您在之前的某个时候运行了git init)