我正在研究一個專案,它可以訪問 FTP 服務器來上傳影像。在本地開發時,它無法訪問 FTP 服務器,因為它只能在某個虛擬私有云中訪問。
為了在本地進行測驗,我需要重寫部分代碼以跳過 FTP 上傳。顯而易見的答案是為環境變數或其他東西添加某種檢查,并根據環境上傳或不上傳。但是,當我請求允許進行此更改時,由于優先級低,它一直被推遲。
問題是,我知道最終我會做出這些臨時更改,然后意外地提交它們。我以前做過一次,但幸運的是及時意識到我的錯誤以恢復更改。
有什么方法可以讓我進行必要的臨時更改,然后立即git prevent-commit filename.php或在相關檔案上進行類似的更改,以便如果我將來嘗試提交這些更改或類似的事情,git 會對我大喊大叫?
uj5u.com熱心網友回復:
這本質上是一個 Git 常見問題解答:如何告訴 Git 忽略跟蹤的檔案? 重要的是要強調沒有“真正的”方法可以做到這一點。但是,--skip-worktree在索引條目上設定標志對于您的特定目的來說已經足夠接近了。您需要記住有時取消設定標志。另請參閱Git - 'assume-unchanged' 和 'skip-worktree' 之間的區別
uj5u.com熱心網友回復:
TL;博士
預提交鉤子旨在做到這一點:拒絕任何具有一些可測驗特征的未來提交。
細節
您可以創建一個預提交掛鉤來拒絕任何包含某些不提交標記的提交。預提交掛鉤在實際創建提交之前在您的本地計算機上運行,??因此如果它們失敗,您甚至無法撰寫提交訊息。
這是最簡單的預提交鉤子,它會拒絕DO-NOT-COMMIT在正在提交的更改中找到的任何提交:
#!/bin/sh
exec 1>&2 # redirect output to stderr
if git diff --cached | grep DO-NOT-COMMIT; then
echo "DO-NOT-COMMIT found - rejecting commit"
exit 1
fi
將此檔案另存為.git/hooks/pre-commit沙箱,使用 使其可執行chmod x .git/hooks/pre-commit,下次您嘗試使用DO-NOT-COMMIT任何位置提交檔案時,Git 會如您所愿地對您大喊大叫。
然后,我們修改該程式以進行本地測驗,以# DO-NOT-COMMIT注釋開始您的更改,并且您知道您不會意外地提交它。
在每個沙箱中安裝它
預提交掛鉤的麻煩在于必須在每個沙箱中分別安裝和啟用它們。因此,如果您正在為您個人尋找解決方案,請在您的沙箱中安裝預提交掛鉤,您就可以開始了。但是,如果您正在尋找組織范圍內的東西,它們不是正確的工具。在這種情況下,將需要服務器端掛鉤。
但這也可以是一個特性:預提交掛鉤是本地的并且完全在您的控制之下。無需獲得任何人的許可即可為自己啟用它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415323.html
標籤:
