有没有办法检查远程中是否存在指定的相对路径下的文件?如果它是唯一的选择,我很好地提取信息。换句话说,我正在寻找具有指定远程和分支的选项的git-ls-files。我只是有兴趣,如果该文件存在(文件在树枝上的列表也将这样做),我不关心哈希值,diff文件等如何检查远程文件是否存在?
回答
您可以使用
git cat-file -e <remote>:<filename>
这将文件存在时以零退出。而不是上面的<remote>
,你会使用远程分支名称(但实际上它可以是任何tree-ish对象引用)。要使用这样一个远程分支,您需要配置和提取远程存储库(即使用git remote add
+ git fetch
)。
一个具体的例子:
$ git cat-file -e origin/master:README && echo README exists
README exists
$ git cat-file -e origin/master:FAILME
fatal: Not a valid object name origin/master:FAILME
有两点需要注意:
- 使用
/
作为文件名路径分隔符,即使是在如视窗。 <filename>
是相对于存储库根目录的完整路径(如foo/bar/README
)。
您可以使用git archive访问单个文件,而无需下载库的任何其他部分:
if git archive --format=tar \
--remote=<remote_name-or-URL> master README >/dev/null; then
echo 'master has README'
else
echo 'master does not have README (or other error)'
fi
归档服务(upload-archive
)可能不是所有的服务器或存储库上启用但是,你将有以测试您需要访问的服务器和存储库。
如果存档服务不可用,则必须通过常规方式获取对象。
如果您还没有远程设置存储库,您可以对FETCH_HEAD执行“浅”访存(这需要在Git存储库中完成,但它可以完全不相关或甚至空):
git fetch --depth=1 remote_name-or-URL master
if git rev-parse --verify --quiet FETCH_HEAD:README >/dev/null; then
echo "repository's master has README"
else
echo "repository's master does not have README"
fi
如果你有一个远程存储库定义的,那么你可能只是想更新,并通过正常的远程跟踪分支访问文件:
git fetch remote_name
if git rev-parse --verify --quiet remote_name/master:README >/dev/null; then
echo "remote's master has README"
else
echo "remote's master does not have README"
fi
好东西!真的有帮助 – 2012-06-21 07:40:42
被警告:'git-archive'解决方案不能可靠工作。它似乎只检查是否存在顶级文件/目录,例如:'git archive --remote =
- 1. 检查是否存在远程文件
- 2. 如何通过FTP检查远程文件夹中是否存在文件?
- 3. 检查组是否存在远程
- 4. node.js检查是否存在远程URL
- 5. 如何检查使用C#查看远程文件是否存在?
- 6. 如何检查文件是否存在?
- 7. 如何检查文件是否存在?
- 8. ASP:检查是否存在远程图像文件
- 9. cmd dos检查是否存在远程FTP文件夹
- 10. Ruby:检查远程服务器上是否存在文件
- 11. ASP.Net检查是否存在远程文件
- 12. NodeJS - 使用“Sequest”检查是否存在SFTP远程文件
- 13. bash:使用scp检查远程文件是否存在
- 14. 检查远程文件是否存在Linux
- 15. 检查远程文件夹是否存在 - Renci.ssh
- 16. 检查远程机器上是否存在文件
- 17. 如何使用Perl检查远程服务器上是否存在文件?
- 18. 检查远程文件存在
- 19. DRb:如何检查远程对象是否存在?
- 20. 如何检查远程服务器映像是否存在?
- 21. 如何动态检查是否存在远程字体图标?
- 22. 如何检查Android中的远程文件是否更新?
- 23. 使用powershell检查远程系统中是否存在文件/文件夹
- 24. 如何检查文件是否存在于war文件中?
- 25. 如何检查chm文件中是否存在子文件?
- 26. 如何检查文件夹中是否已存在文件
- 27. 如何检查文件是否存在于生成文件
- 28. 的Perl SFTP:如何检查远程文件犯规存在
- 29. 检查文件路径是否正确,但不检查文件是否存在
- 30. 如何检查内存映射文件是否存在?
通过''你说的是远程分支,这意味着您必须进行配置远程并首先运行'git fetch ';你正在检查你的回购中的远程分支,所以你需要确保它是最新的。 –
Cascabel
2010-11-09 15:07:21
准确地说,谢谢。我将其纳入答案。 – earl 2010-11-09 15:18:36