簡體   English   中英

如何取消跟蹤文件(git 和 git GUI)

[英]How to untrack files (git and git GUI)

我正在使用 git GUI(與 Git bash 一起使用)。 現在,我知道如果我想忽略 git 的文件,我必須將它們放在 .gitignore 文件中。

1)我已經知道 Windows 中的 git 不會為您創建 .gitignore 文件,您必須自己創建它。 git GUI 也不會這樣做。 這樣對嗎?

現在我的特殊情況:

我在開始管理這個項目時犯了一個錯誤,連同我的 .c 和 .h 文件,我還跟蹤了另一個文件(我們稱之為“shouldnottrack.file”)。 這個文件是由構建過程生成的,所以原則上不應該被跟蹤。

但我做到了,它被包含在提交中(上演、提交等)。

現在,我想取消跟蹤這個文件。

我已經通過git checkout -- shouldnottrack.file臨時完成了git checkout -- shouldnottrack.file但這只能工作一次

2) 我怎樣才能取消跟蹤這個文件? (GUI,命令,任何方法都可以)

3) 如果我將這個文件包含在 .gitignore 文件中,git 會自動取消跟蹤嗎?

謝謝

您必須將它添加到.gitignore並將其從 git 存儲庫中刪除,以便它停止跟蹤它。

如果您仍然想將文件保留在工作目錄中,您有兩種可能性:

  • 如果要刪除工作目錄中的文件,請執行git rm
  • 如果您想保留它們但只是停止跟蹤它們,請執行git rm --cached

然后,提交此文件刪除。

不確定您的第一個問題,因為我專門使用 Git CLI 但是對於您的第二個問題,請嘗試以下操作:

git filter-branch --force --index-filter \\ 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE' \\ --prune-empty --tag-name-filter cat -- --all

將 PATH-TO-YOUR-FILE 替換為要從歷史記錄中刪除的實際文件名。 您應該看到以下內容:

Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266) Ref refs/heads/master was rewritten

如果成功 - 在此之后,如果您已經推送到遠程,則需要執行git push --force來覆蓋它。 分支上的安全設置可能會拒絕推送。

最后,對於您的最后一個問題,以防止再次發生這種情況,將有問題的文件添加到您的忽略文件中,git 將防止發生任何跟蹤。

上面的答案會起作用,但是如果數據是敏感的,我強烈建議使用這種方法 - 即密碼、ssh 密鑰等,因為文件仍然存在於歷史中。

你可以在這里閱讀更多https://help.github.com/articles/removing-files-from-a-repository-s-history/和這里https://help.github.com/articles/remove-sensitive-data / .

希望這可以幫助!

迪倫

暫無
暫無

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

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