我的服務器上有一個遠程裸倉庫。我希望服務器始終將當前作業樹作為系統中的真實目錄。
我正在使用post-receive帶有命令的 git-hook 來構建作業樹并覆寫舊樹:
git archive master | tar -x -C /dir/to/my/project/
但是,這種方法有一個問題:它不會洗掉在 repo 中被洗掉/移動的檔案。
我可以簡單地擦除整個專案目錄,但我想保留所有在我的 .gitignore 中被忽略的檔案。
我試圖撰寫一個腳本來洗掉所有未被忽略但需要幾分鐘才能處理的檔案。
有沒有辦法在不洗掉被忽略檔案的情況下復制作業樹?
uj5u.com熱心網友回復:
您可以使用便捷命令添加作業樹(這不是最好的計劃,但可能是可行的)或使用核心命令實作您自己需要的部分(保證始終以相同的方式作業)。
索引是一個清單,一個路徑名串列和指向 repo 內容的指標以及該路徑上檔案系統副本的快取檔案系統元資料。
GIT_WORK_TREE=/path/to/your/checkout GIT_INDEX_FILE=/path/to/your/manifest \
git read-tree -um $commit:$dir
您將作業樹和索引放在哪里完全取決于您,Git 的核心并不關心,只需告訴它(就像我在這里所做的那樣)。
$commit:$dir修訂語法的檔案
git read-tree是結帳、合并、硬重置和任何類似內容的核心命令。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/435159.html
標籤:混帐 githooks git-remote
