具体来说,我维护了我的dotfiles的git存储库.我最近开始研究一台新机器,并在同一台机器上克隆了我的存储库.
现在,我希望对我的dotfiles进行一些更改,这些更改仅适用于此系统.我希望在我的存储库中忽略这些更改.
我应该继续跟踪和提交其他更改.
例如,在我的.gitconfig中,我有一个设置为:
[push]
default = simple
Run Code Online (Sandbox Code Playgroud)
现在,在我的新机器上,git的版本使用得很旧.它仍然不支持simplepush 的设置.所以,我想改变这一点,但仅限于本地.
但是,如果我对.gitconfig进行任何其他更改,我想跟踪这些.无论如何我能做到这一点?
编辑:
我知道git update-index --assume-unchanged.它的问题是git将不再跟踪我的文件,直到我反转它.然后,它将跟踪所有变化.
我希望忽略某些变化并跟踪其余变化.
atu*_*pal 167
尝试使用此命令:
git update-index --assume-unchanged FILENAME_TO_IGNORE
Run Code Online (Sandbox Code Playgroud)
要反转它(如果您想要对其进行更改),请使用:
git update-index --no-assume-unchanged
Run Code Online (Sandbox Code Playgroud)
更新:
以下是在当前目录下列出"假设未更改"文件的方法:
git ls-files -v | grep -E "^[a-z]"
Run Code Online (Sandbox Code Playgroud)
由于该-v选项将使用小写字母表示"假定未更改"文件.
我不相信有一个特定的命令会"跟踪"文件的某些更改.但是,没有理由不能创建一个本地分支,您可以从其中提取更改,但永远不会发回任何更改.
这是针对您的具体问题的替代解决方案。将 machine-config 配置放入~/.gitconfig.local文件中,然后将以下内容放入版本控制中~/.gitconfig:
[include]
path = ~/.gitconfig.local
Run Code Online (Sandbox Code Playgroud)
这将告诉 Git 将它在 中找到的任何内容视为~/.gitconfig.local在~/.gitconfig. 是的,您可以覆盖设置。不,它不需要文件存在(如果不存在,Git 将默默地忽略该设置~/.gitconfig.local)。
有关 的更多信息,请参阅此处[include]。
我在 Emacs、Zsh、Git、Tmux 等的配置中遵循这个策略,这样它们就可以自定义,而不需要修改版本控制文件。为了实现这个目标,我有init.local.el、、、、等等。.zshrc.local.gitconfig.local.tmux.local.conf
| 归档时间: |
|
| 查看次数: |
29274 次 |
| 最近记录: |