簡體   English   中英

Git忽略對部分跟蹤文件的本地更改

[英]Git ignore local changes to portions of tracked files

具體來說,我維護了我的dotfiles的git存儲庫。 我最近開始研究一台新機器,並在同一台機器上克隆了我的存儲庫。

現在,我希望對我的dotfiles進行一些更改,這些更改僅適用於此系統。 我希望在我的存儲庫中忽略這些更改。

我應該繼續跟蹤和提交其他更改。

例如,在我的.gitconfig中,我有一個設置為:

[push]
   default = simple

現在,在我的新機器上,使用它的git版本已經很老了。 它仍然不支持push的simple設置。 所以,我想改變這個,但只是在本地。

但是,如果我對.gitconfig進行任何其他更改,我想跟蹤它們。 無論如何我能做到這一點?

編輯:
我知道git update-index --assume-unchanged 它的問題是git將不再跟蹤我的文件,直到我反轉它。 然后,它將跟蹤所有變化。
我希望忽略某些變化並跟蹤其余變化。

嘗試使用此命令:

git update-index --assume-unchanged FILENAME_TO_IGNORE

要反轉它(如果您想要對其進行更改),請使用:

git update-index --no-assume-unchanged

更新

以下是在當前目錄下列出“假設未更改”文件的方法:

git ls-files -v | grep -E "^[a-z]"

由於-v選項將使用小寫字母表示“假定未更改”文件。

我不相信有一個特定的命令會“跟蹤”文件的某些更改。 但是,沒有理由不能創建一個本地分支,您可以從其中提取更改,但永遠不會發回任何更改。

這是針對您的具體問題的替代解決方案。 將machine-config配置放在~/.gitconfig.local文件中,然后將以下內容放在版本控制的~/.gitconfig

[include]
    path = ~/.gitconfig.local

這將告訴Git將它在~/.gitconfig.local找到的任何內容視為~/.gitconfig 是的,您可以覆蓋設置。 不,它不需要文件存在(如果沒有~/.gitconfig.local Git會默默地忽略該設置)。

有關[include]更多信息,請參見此處

我在Emacs,Zsh,Git,Tmux等配置中遵循此策略,因此可以自定義它們而無需修改版本控制的文件。 為此,我有init.local.el.zshrc.local.gitconfig.local.tmux.local.conf等。

正如Peter所建議的那樣,您可以將這些機器特定的更改保存在分支中。 顯然,您必須小心將“主線”中的機器特定文件的更改嚴格分開。 有兩種方法可以做到這一點:

  1. 每次更改主線時都要保持對分支的重新定位(這是我的偏好)
  2. 繼續將主線更改合並到分支中(但顯然不會在另一個方向上合並)

暫無
暫無

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

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