不想改变.gitignore,因为其他人想要回购中的文件。但是我有自己想要使用的副本。
我修改了.git/info/exclude
并添加了以下内容:
/Gemfile
/Gemfile.lock
/config/database.yml
/spec/spec_helper.rb
这似乎没有做任何事情。 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: Gemfile
# modified: Gemfile.lock
# modified: config/database.yml
# modified: spec/spec_helper.rb
在不使用.gitignore的情况下保留本地文件版本的最佳方法是什么?
答案 0 :(得分:7)
您可以调用git update-index --assume-unchanged [file names]
或者如果有一堆文件,只需执行.gitignore并根据需要修改忽略文件。
来自documentation(强调我的):
当“假设未更改”位打开时,git停止检查工作树文件是否有可能的修改,因此您需要手动取消设置该位以在更改工作树文件时告诉git。 ...
此选项还可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件的更改)。
答案 1 :(得分:4)
.gitignore
和.git/info/exclude
仅适用于存储库中不的文件。如果文件在存储库中,则不能让Git忽略它们。
您可以做的是在本地维护这些更改,既可以作为与主服务器上的传入工作合并的分支,也可以作为在主服务器上重新绑定的一组更改。然而,这两个都有点不方便。
答案 2 :(得分:1)
我在我的机器上使用全局忽略文件也是如此 - 这样你就可以使用基于项目的.gitignore文件+你机器本地的全局设置
例如我在〜/ .gitconfig
中有这个[core]
excludesfile = /home/adrian/.gitignore
答案 3 :(得分:0)
您已使用前导/
启动了所有文件。我想如果你要删除一切都会正常工作:
Gemfile
Gemfile.lock
config/database.yml
spec/spec_helper.rb