如何从Git中的服务器存储库中提取单个文件?

时间:2015-02-06 21:52:00

标签: git git-merge git-pull git-fetch

我正在使用运行Git的服务器的网站上工作。我正在使用Git进行部署(而不是GitHub)。这是在我参与hook method之前设置的,我提到了this question并输入了以下命令,但它没有用。

如何从服务器中提取单个文件?例如,如果我想更新我的本地文件index.php? git pull index.php

8 个答案:

答案 0 :(得分:133)

可以(在已部署的存储库中):

git fetch
// git fetch will download all the recent changes, but it will not put it in your current checked out code (working area).

其次是:

git checkout origin/master -- path/to/file
// git checkout <local repo name (default is origin)>/<branch name> -- path/to/file will checkout the particular file from the downloaded changes (origin/master).

答案 1 :(得分:16)

git fetch --all
git checkout origin/master -- <your_file_path>
git add <your_file_path>
git commit -m "<your_file_name> updated"

这是假设您从origin / master中提取文件。

答案 2 :(得分:6)

这可以解决:

git fetch

git checkout origin/master -- FolderPathName/fileName

谢谢。

答案 3 :(得分:4)

我正在寻找略有不同的任务,但这看起来像您想要的:

git archive --remote=$REPO_URL HEAD:$DIR_NAME -- $FILE_NAME |
tar xO > /where/you/want/to/have.it

我的意思是,如果您要获取path/to/file.xz,则将DIR_NAME设置为path/to,将FILE_NAME设置为file.xz。 因此,您最终会得到类似

的信息
git archive --remote=$REPO_URL HEAD:path/to -- file.xz |
tar xO > /where/you/want/to/have.it

没有人会阻止您打开其他任何形式的包装,而不是tar xO(是我在这里需要管道)。

答案 4 :(得分:2)

如果您 - 或者力量超过您 - 在您的本地仓库中损坏文件并且您只想从其中恢复最新版本的新副本,就会出现这种情况回购。简单地用/ bin / rm(不是git rm)删除文件或重命名/隐藏它然后发出git pull将不起作用:git注意到文件的缺席并假设你可能希望它从repo(git diff将显示从丢失的文件中删除的所有行)。

git pull没有恢复本地丢失的文件一直让我对git感到沮丧,也许是因为我受到了其他版本控制系统的影响(例如我相信恢复的svn update本地隐藏的文件。)

git reset --hard HEAD是恢复感兴趣文件的另一种方法,因为它会丢弃您拥有的任何未提交的更改。但是,正如所提到的here,如果您有任何其他未提交的更改,那么git reset是一个潜在的危险命令。

@chrismillah上面提到的git fetch ... git checkout策略是一种很好的手术方式来恢复有问题的文件。

答案 5 :(得分:0)

尝试使用:

git checkout branchName -- fileName

例如:

git checkout master -- index.php

答案 6 :(得分:0)

https://raw.githubusercontent.com/[USER-NAME]/[REPOSITORY-NAME]/[BRANCH-NAME]/[FILE-PATH]

例如https://raw.githubusercontent.com/vipinbihari/apana-result/master/index.php

  

通过此操作,您将获得单个文件的内容作为一行   文本。您可以使用wget下载该文本。

例如https://raw.githubusercontent.com/vipinbihari/apana-result/master/index.php

答案 7 :(得分:0)

此Windows批处理不管是否在GitHub上都有效。我正在使用它,因为它显示出一些明显的警告。 您会注意到该操作速度很慢并且正在遍历数百兆的数据,因此,如果您的要求基于可用的带宽/读写存储器,请不要使用此方法。

sparse_checkout.bat

pushd "%~dp0"
if not exist .\ms-server-essentials-docs mkdir .\ms-server-essentials-docs
pushd .\ms-server-essentials-docs
git init
git remote add origin -f https://github.com/MicrosoftDocs/windowsserverdocs.git
git config core.sparseCheckout true
(echo EssentialsDocs)>>.git\info\sparse-checkout
git pull origin master

=>

  

C:\ Users \用户名\ Desktop> sparse_checkout.bat

     

C:\ Users \用户名\ Desktop>按“ C:\ Users \用户名\ Desktop \”

     

C:\ Users \用户名\ Desktop>(如果不存在)。\ ms-server-essentials-docs   mkdir。\ ms-server-essentials-docs

     

C:\ Users \用户名\ Desktop>按下。\ ms-server-essentials-docs

     

C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git init   在C:/ Users / user中初始化了空的Git存储库   名称/桌面/ms-server-essentials-docs/.git /

     

C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git remote add   起源-f https://github.com/MicrosoftDocs/windowsserverdocs.git   更新源远程:枚举对象:97,已完成。远程:   计数对象:已完成100%(97/97)。远程:压缩对象:   100%(44/44),完成。远程:总计145517(增量63),已重用76(增量)   53),重新使用包装的145420接收对象:100%(145517/145517),   751.33 MiB |已完成32.06 MiB / s。解析增量:已完成100%(102110/102110)。从   https://github.com/MicrosoftDocs/windowsserverdocs * [新分支]
  1106-冲突->起源/ 1106-冲突* [新分支]
  FromPrivateRepo-> origin / FromPrivateRepo * [新分支]
  PR183-> origin / PR183 * [新分支]
  冲突修正->起源/冲突修正* [新分支]
  eross-msft-patch-1-> origin / eross-msft-patch-1 * [新分支]
  master-> origin / master * [new branch] patch-1
  -> origin / patch-1 * [新分支] repo_sync_working_branch-> origin / repo_sync_working_branch * [新分支]
  shortpatti-patch-1-> origin / shortpatti-patch-1 * [新分支]
  shortpatti-patch-2-> origin / shortpatti-patch-2 * [新分支]
  shortpatti-patch-3-> origin / shortpatti-patch-3 * [新分支]
  shortpatti-patch-4-> origin / shortpatti-patch-4 * [新分支]
  shortpatti-patch-5-> origin / shortpatti-patch-5 * [新分支]
  shortpatti-patch-6-> origin / shortpatti-patch-6 * [新分支]
  shortpatti-patch-7-> origin / shortpatti-patch-7 * [新分支]
  shortpatti-patch-8-> origin / shortpatti-patch-8

     

C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git config   core.sparseCheckout为真

     

C:\ Users \用户名\ Desktop \ ms-server-essentials-docs>(回显   EssentialsDocs)1 >>。git \ info \ sparse-checkout

     

C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git pull源   大师
  来自https://github.com/MicrosoftDocs/windowsserverdocs
  *分支主管-> FETCH_HEAD