簡體   English   中英

自上次檢查以來,檢查遠程git存儲庫是否有任何更改,而無需克隆存儲庫

[英]Check if remote git repository has any changes since last check without cloning repository

自上次檢查以來,是否可以檢查遠程存儲庫是否有任何更改而無需克隆整個存儲庫?

在我的場景中,我不需要將源文件保留在設備上,我只需要知道遠程git存儲庫是否有任何新更改。

我知道如果我檢出了存儲庫就可以這樣做:
git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD

但這需要將源文件保留在設備上。

根據托管git存儲庫的方式,您可能會檢查托管軟件是否具有會提供幫助的API。 僅使用git命令,下面的命令應該起作用。

您可以通過以下方式獲取遠程服務器上所有引用的列表及其當前的提交哈希值:

git ls-remote <remote-url>

其中<remote-url>是用於克隆的相同URL。

如果存儲了此結果,然后在以后再次運行,則可以查看是否已添加,刪除或接收到任何引用(由於發生了更新,因此哈希會更改)。

(請注意,更改后的哈希值表明引用的歷史記錄已更改-並不一定意味着內容有所不同。您可以使用引用的哈希值淺淺地僅提取“舊”和“新”提交,然后檢查其哈希值樹形哈希,如果您想知道內容是否已更改。)

如果您只關心分支(即不關心新標簽等),則可以說

git ls-remote --heads --refs <remote-url>

如果您不想通讀所有輸出,則可以組合某種腳本。 該文檔似乎並不能保證顯示分支的順序,但是在我的測試中,這似乎是詞匯順序。 如果您擔心可以添加排序命令,因為順序與我要建議的內容有關。 無論如何,代替存儲完整的輸出列表,您可以擁有輸出並比較一次運行與下一次運行的結果哈希,以查看是否有任何更改(但您無法分辨出什么):

git ls-remote --heads --refs <remote-url> |git hash-object --stdin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM