簡體   English   中英

無法“取消跟蹤”文件(忽略對跟蹤文件的進一步更改)

[英]Having trouble “untracking” file (ignore further changes to tracked file)

我對git有問題。 最近我犯了一個錯誤,並使用git add -f path / to / folder將目錄添加到了我的倉庫中。 現在,我非常努力地忽略此文件夾,但是沒有任何效果。 到目前為止,我做到了:

git update-index --assume-unchanged path/to/folder

上面的命令完成了這項工作,但是一旦我使用chmod -R 777將此文件夾授予權限,更改將再次以git status出現:

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/tmp/cache/models/myapp_cake_model_default_contractsign_attachments
#   modified:   app/tmp/cache/models/myapp_cake_model_default_contractsign_list
#   modified:   app/tmp/cache/models/myapp_cake_model_default_contractsign_signatures
#   modified:   app/tmp/cache/models/myapp_cake_model_default_contractsign_users
#   modified:   app/tmp/cache/persistent/myapp_cake_core_cake_dev_eng
#   modified:   app/tmp/cache/persistent/myapp_cake_core_cake_dev_fre
#   modified:   app/tmp/cache/persistent/myapp_cake_core_cake_dev_spa
#   modified:   app/tmp/cache/persistent/myapp_cake_core_cake_eng
#   modified:   app/tmp/cache/persistent/myapp_cake_core_cake_fre
#   modified:   app/tmp/cache/persistent/myapp_cake_core_cake_spa
#   modified:   app/tmp/cache/persistent/myapp_cake_core_default_eng
#   modified:   app/tmp/cache/persistent/myapp_cake_core_default_fre
#   modified:   app/tmp/cache/persistent/myapp_cake_core_default_spa
#   modified:   app/tmp/cache/persistent/myapp_cake_core_file_map
#   modified:   app/tmp/cache/persistent/myapp_cake_core_method_cache
#   modified:   app/tmp/logs/error.log
#
no changes added to commit (use "git add" and/or "git commit -a")

編輯:也許我之前還不清楚。 因此,基本上對於我的項目,我希望添加其中的當前內容tmp/文件夾,但是git不再跟蹤更改。 所以我這樣做:

$ git update-index --assume-unchanged app/tmp/
Ignoring path app/tmp/

但是現在,為了使我的應用程序再次運行,我需要為文件夾中的文件提供寫權限,所以我做了:

sudo chmod -R 777 app/tmp/

但是一旦這樣做,我就可以在上面的日志中看到未更改提交的更改: 我不想跟蹤那些更改,只是忽略了。

僅供參考,這是我在gitignore中擁有的內容:

/app/tmp/*

您似乎混合了不同的事物,因為您不知道它們的作用。

將文件標記為“假定不變”將忽略對跟蹤文件的進一步更改-這不是您想要的。 (注意:問題本來是說OP想要取消跟蹤文件)

使用git rm --cached只會從索引(臨時區域)中刪除文件,但是從現在開始不會告訴Git關於忽略該文件的任何信息,因此您處在正確的軌道上,但並沒有完全成功。

刪除文件后(現在再次取消跟蹤,但是Git總是告訴您未跟蹤的內容),您還必須為此添加一個條目到Git中的一個忽略文件中; 則它不會在狀態消息中再次顯示。

為此,請將此條目附加到存儲庫根目錄中的.gitignore文件中(如果尚不存在,則創建該文件):

/full/path/to/my_file_name

當然,不要直接使用它,而應使用實際路徑。 請注意,在這種情況下,前導斜線並不表示“文件系統根”,而是“存儲庫的根”。


編輯:提供更多信息后,您的問題更加清楚。 您實際上並不想取消跟蹤某些文件(即從版本控制中將其刪除),而只忽略對它們的進一步更改。

為此,“假定​​不變”確實是正確的處理方法,但是假定不變在目錄上不能遞歸工作 這意味着您將必須在要忽略其更改的每個文件上進行顯式設置。 您可以在一個命令中執行此操作:

git update-index --assume-unchanged -- file1 file2 file3 ...

如果有很多文件,可以編寫腳本,但是由於您似乎只有大約15個文件,因此制作腳本(文件位於不同目錄中)所花費的時間要比僅將路徑復制粘貼到其中要長。命令。

暫無
暫無

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

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