簡體   English   中英

gitignore 文件已在本地刪除

[英]gitignore files have been deleted locally

我試圖找出最適合我的情況的方法。 我已經從我的存儲庫中刪除了所有內容並重新提交,以便我的 gitignore 文件能夠工作。 然而,它確實如此,我切換到另一個仍在跟蹤所有內容的分支,然后檢查原始分支,現在這些文件不在那里。

據我所知,這是正確的 git 行為,但我想知道如何停止跟蹤這些核心文件,同時將它們保留在本地以使我的網站正常運行?

我是否應該將分支分支 A(無核心文件)與分支 B(核心文件)合並,然后清除存儲庫並重新提交?

其實你的問題是多方面的。 首先,當您想刪除要在分支上進一步跟蹤的文件,但保留文件本身時,您將使用

git rm --cached FILE
// possibly edit .gitignore here and `git add .gitignore`
git commit -m "removed the file FILE"

另一方面,您似乎希望將其用於網站內容或類似內容的結帳程序。

由於您想合並AB ,似乎您希望所有分支都使用此規則(從索引中刪除 FILE )。 這可以用

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatched HEAD -- FILE'

. 小心將FILE放在你的工作樹中或者在你的存儲庫之外有一個備份,因為你觸發這個命令的 HEAD 將失去這些文件曾經是什么的所有想法,所以你不能從歷史! 過濾歷史記錄之前,您將需要在工作樹中使用它們或進行備份。

由於某些原因,我不喜歡讓存儲庫靠近工作目錄的想法,該目錄可能包含混合的跟蹤文件、附加文件甚至來自其他存儲庫的文件,這些文件跟蹤一組不同的文件。

對於這樣的用例,為您的存儲庫使用第二個 --work-tree 通常很有用

git --work-tree=WHERE_YOU_PUBLISH_YOUR_FILES checkout HEAD -- .

將跟蹤的文件從 HEAD 簽出到您的htdocs或其他任何內容。 WHERE_YOU_PUBLISH_YOUR_FILES您可以放置​​任何其他文件,而無需觸及存儲庫。

您可以根據工作樹檢查跟蹤文件、存儲庫的差異

git --work-tree=WHERE_YOU_PUBLISH_YOUR_FILES diff

. 您甚至可以將WHERE_YOU_PUBLISH_YOUR_FILES中的文件WHERE_YOU_PUBLISH_YOUR_FILES入存儲庫

git --work-tree=WHERE_YOU_PUBLISH_YOUR_FILES add -u

為了簡化這個操作,我經常使用全局別名。

git config --global alias.public '!git --work-tree $(git config --get public.path)'
git config public.path /var/www/localhost/htdocs

現在你可以使用

git public status -s -uno

或類似的命令。

暫無
暫無

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

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