有沒有辦法檢查遠程中是否存在指定的相對路徑下的文件?如果它是唯一的選擇,我很好地提取信息。換句話說,我正在尋找具有指定遠程和分支的選項的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. 遠程PHP getimagesize()/檢查是否存在
- 5. node.js檢查是否存在遠程URL
- 6. 如何檢查使用C#查看遠程文件是否存在?
- 7. 如何檢查文件是否存在
- 8. 如何檢查文件是否存在?
- 9. 如何檢查文件是否存在?
- 10. 如何檢查文件是否存在?
- 11. 如何檢查文件是否存在
- 12. ASP:檢查是否存在遠程圖像文件
- 13. 檢查遠程文件中的內容是否存在
- 14. ASP.Net檢查是否存在遠程文件
- 15. IOS:檢查遠程文件是否存在
- 16. bash:使用scp檢查遠程文件是否存在
- 17. 檢查遠程文件夾是否存在 - Renci.ssh
- 18. Ruby:檢查遠程服務器上是否存在文件
- 19. 檢查遠程機器上是否存在文件
- 20. 用ssh檢查遠程主機上是否存在文件
- 21. 檢查遠程文件是否存在Linux
- 22. cmd dos檢查是否存在遠程FTP文件夾
- 23. NodeJS - 使用「Sequest」檢查是否存在SFTP遠程文件
- 24. 檢查遠程文件是
- 25. 如何檢查遠程主機上的文件是否存在與shell腳本
- 26. 如何檢查使用python的遠程服務器上是否存在文件?
- 27. 如何檢查使用shell的遠程服務器上是否存在文件
- 28. 如何使用Perl檢查遠程服務器上是否存在文件?
- 29. 檢查遠程文件存在
- 30. DRb:如何檢查遠程對象是否存在?
通過''你說的是遠程分支,這意味着您必須進行配置遠程並首先運行'git fetch ';你正在檢查你的回購中的遠程分支,所以你需要確保它是最新的。 –
Cascabel
2010-11-09 15:07:21
準確地說,謝謝。我將其納入答案。 – earl 2010-11-09 15:18:36