有類似的問題,但不是我需要的。
我在幾個專案中都有這種結構:
/var/www/proj-a/
app/
.git/
script-a.js
script-.js
... more files and directories
data/
... data and config files go here
我想將.git檔案夾直接放在專案檔案夾中,而不是作為app. 但是 repo 仍然只會管理目錄中的app檔案。換句話說,我將使用.gitignore排除專案目錄中除目錄之外的所有內容app。
新結構應如下所示:
/var/www/proj-a/
.git/
app/
script-a.js
script-.js
... more files and directories
data/
... data and config files go here
.gitignore
現在,在 git 中保存為絕對路徑的路徑允許我將.git目錄移動到專案目錄而沒有任何問題;還是相對路徑導致找不到源檔案?如果路徑是相對的,如何在不丟失 git 分支和歷史記錄的情況下實作此更改?
uj5u.com熱心網友回復:
我更喜歡新結構還有其他原因。
聽起來這不是將 .git 移動一個級別的簡單問題......有沒有辦法?
您不會將.git/檔案夾向上移動一級。
您可以做的是將當前 Git 存盤庫中的元素向下移動一級,在新app/檔案夾下,使用git filter-repo.
- 安裝
git filter-repo(基于python) - 重命名
/為/app:(基于路徑過濾git filter-repo --path-rename /:/app)
一旦你有一個具有正確結構的 Git 存盤庫,你可以在其中添加data/檔案夾,并將最終結果克隆為proj-a.
正如knittl在評論中指出的那樣:
這會修改所有現有的提交 ID。
如果您共享了歷史記錄,則所有其他人都需要重新克隆。
對于任何變基或過濾操作(git filter-branch, git filter-repo, BFG, ...)都是如此:通常在結尾處隱含一個git push --forceor 。
這確實意味著向任何貢獻者傳達該存盤庫的新狀態,以便他們再次克隆它。git push --mirror
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419598.html
標籤:
上一篇:預提交不使用虛擬環境
