[英]Check if specific file in git repository has changed
我是處理git的新手,但我有一個包含名為'test'的文件的存儲庫。 我想檢查特定文件是否已更改。 反正有嗎?
從大局來看,我正在編寫一個批處理文件,如果發生了任何變化(我已經使用干運行選項找出),它將執行存儲庫的git克隆,除了測試文件外(即使測試文件也是如此)已經改變了,我不想執行git克隆)
如果您需要任何澄清並感謝您的時間,請告訴我
您可以將文件或目錄名稱傳遞給git diff
以僅查看對該文件或目錄的更改。
如果您正在“編寫批處理文件”,那么--exit-code
切換到git diff
可能特別有用。 例如。
git diff --exit-code test
要么:
git diff --exit-code path/to/source/dir
如果對名為test
(或任何其他指定文件或目錄)的文件進行更改,則返回1,否則返回0。 (允許腳本在結果上分支。)
要僅查看已更改文件的名稱(而不是完整的差異),請使用--name-only
xor,您可以使用-s
來完全不輸出,而只使用退出代碼。
運用
git diff test
將顯示工作目錄test
和存儲庫版本之間的差異。 使用diff
將顯示實際差異; 如果你對這些用途不感興趣
git diff --name-only test
Git不提供查詢遠程存儲庫歷史記錄的方法。 Git命令旨在針對本地存儲庫運行,因此您必須首先clone
(如果您之前克隆過一次,則fetch
會更便宜)。 也就是說,有一些方法可以解決這個限制:
正如Peter Lundgren在答案中正確提到的那樣,
git命令旨在針對本地存儲庫運行,
所以git clone
很可能會被調用。
另一方面,如果您需要檢查是否要觸發某個特定的CI步驟,您可能會在腳本中找到類似這樣的內容:
if git diff --quiet $COMMIT_HASH^! -- . ':!test'; then
echo "No significant changes"
else
echo "There are some significant changes, let's trigger something..."
fi
--quiet
禁用程序的所有輸出並暗示--exit-code
(參見git文檔 )。
有關表達式末尾模式的更多詳細信息,請參考此答案 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.