[英]How can I untrack files in Git according to my .gitignore file?
[英]How can untrack few files locally in git
我正在我的本地機器上處理項目。 所以我有不同的數據庫詳細信息,所以我編輯了 2 個文件。
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: product/db.py
modified: product/prms.py
現在我不想提交它並想在本地忽略它們,這樣無論我在這些文件中編輯什么,它們都不會被推送到遠程倉庫
我試着把它們放進去
.git/info/exclude
然后我做了
git rm --cached <file>
但隨后系統正在刪除它們
要提交的更改:(使用“git reset HEAD ...”取消暫存)
deleted: product/db.py
deleted: product/prms.py
但我也不想刪除它們
我該如何解決
編輯:我不想將任何內容推送到遠程倉庫。 我只想從我的計算機角度忽略對這些文件的編輯。 這樣當我到達辦公室然后我在該文件中進行更改時,它應該可以正常工作。 但是在我家中,任何編輯都應該對 git 不可見
方法一:
不要提交每個開發人員應該不同的文件。 我所有的配置文件(例如config.yaml
)都在.gitignore
; 對於每個,我將有另一個文件(例如config.yaml.template
),它將向開發人員展示他們需要的樣子,我只會在結構更改時對其進行編輯。
方法二:
git update-index --assume-unchanged product/db.py product/prms.py
將讓您更改文件,而git
不會提交它們。 如果您確實希望再次提交它們,請使用--no-assume-unchanged
重新運行它。
似乎沒有什么問題。 Git 會通知您這些文件曾經在存儲庫中並且正在從存儲庫中刪除。
這正是您想要的。 git 從存儲庫中刪除它們的事實並不一定意味着您正在從本地文件系統中刪除它們。 事實上,自從你使用
git rm --cached
它們應該仍在您的文件系統中。
如果在任何時候有一個提交被推送到添加了這些文件的分支上,你將不得不推送另一個將刪除這些文件的提交。
如果這些文件遵循某種模式,您可能會發現將它們添加到.gitignore很有用。 例如,它非常致力於添加
*.class
/bin
在您的.gitignore 中,因為您往往不想推送類文件(如果您正在使用 Java/Scala)或傾向於位於/bin 中的二進制文件
如果你想從提交中省略文件,你應該使用 ' stash ' 方法。
git stash --keep-index
這將隱藏您所有未提交的更改——您可以隨時取消隱藏它們。 現在您可以繼續工作,而不會將這些文件推送到您的遠程存儲庫。
請記住,您可以拉動並繼續協作,同時仍然保留這些更改。
如果你使用像 bitbucket 這樣的東西,你可以去你正在使用的分支的“源”並從上次提交中獲取代碼並修復這兩個文件。
另一種選擇是使用: git update-index --skip-worktree path/to/file
有一些實際和哲學上的差異。 主要是在需要修改文件時使用skip-worktree
。 當 git 可以安全地假設文件未更改並相應地優化其行為時,請使用assume-unchanged
。
這里給出了一個非常徹底的解釋: Git - 'assume-unchanged' 和 'skip-worktree' 的區別
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.