簡體   English   中英

如何在 git 中本地取消跟蹤幾個文件

[英]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 這樣的東西,你可以去你正在使用的分支的“源”並從上次提交中獲取代碼並修復這兩個文件。

http://git-scm.com/docs

另一種選擇是使用: 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.

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