Answers:
可以这样做(在已部署的存储库中):
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).
<revision>
呢?文件名?如果我的文件是在根目录将意味着我必须键入:git checkout -m index.php index.php
?
*origin*/master
或者可以从任何远程存在?整个历史记录都存储在我的存储库中了吗,或者该文件似乎看起来很神奇?
这可以是解决方案:
git fetch
git checkout origin/master -- FolderPathName/fileName
谢谢。
当您-或比您更大的力量- 破坏了本地存储库中的文件,而您只想从该存储库中还原该文件的最新版本时,就会出现这种情况。只需使用/ bin / rm(不是git rm)删除文件或重命名/隐藏文件,然后发出a git pull
将不起作用:git会注意到该文件不存在,并假定您可能希望将其从存储库中git diff
删除(将显示从缺少文件)。
git pull
不恢复本地丢失的文件一直让我对git感到沮丧,也许是因为我受到了其他版本控制系统的影响(例如svn update,我相信它将恢复本地隐藏的文件)。
git reset --hard HEAD
是一种还原感兴趣文件的替代方法,因为它会丢弃您所做的所有未提交的更改。然而,如前所述这里,git的复位是具有潜在危险的命令,如果你有你关心其他任何未提交的更改。
git fetch ... git checkout
@chrismillah上面提到的策略是一种还原相关文件的好方法。
我正在寻找略有不同的任务,但这看起来像您想要的:
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
当然,是我在这里需要管道)。
尝试使用:
git checkout branchName -- fileName
例如:
git checkout master -- index.php
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
无论是否在GitHub上,此Windows批处理均有效。我正在使用它,因为它显示出一些明显的警告。您会注意到操作速度很慢,并且遍历了数百兆的数据,因此,如果您的要求基于可用的带宽/ RW内存,则不要使用此方法。
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> pushd。\ ms-server-essentials-docs
C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git init在C:/ Users /用户名/Desktop/ms-server-essentials-docs/.git/中初始化了空的Git存储库
C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git remote add origin -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-
冲突
-> origin / 1106- 冲突* [新分支] FromPrivateRepo-> origin / FromPrivateRepo * [新分支]
PR183-> origin / PR183 * [新分支]
冲突修正->原点/冲突
修正* [新分支] eross-msft-patch-1->原点/ eross-msft-patch-1 * [新分支]
主节点->原始/主节点* [新分支]补丁1-
> origin / patch-1 * [新分支] repo_sync_working_branch-> origin / repo_sync_working_branch * [新分支] shortpatti
-patch-1-> Origin / shortpatti -patch-1 * [new branch]
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-8C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git config core.sparseCheckout true
C:\ Users \用户名\ Desktop \ ms-server-essentials-docs>(echo EssentialsDocs)1 >>。git \ info \ sparse-checkout
C:\ Users \用户名\ Desktop \ ms-server-essentials-docs> git pull origin master
从https://github.com/MicrosoftDocs/windowsserverdocs
*分支master-> FETCH_HEAD