另一位开发人员提交了他的本地版本的.gitignore文件。我想在本地修改该文件而不会被唠叨:没有出现在" git status",no"被checkout覆盖"错误。
经常推荐的解决方案似乎是 " git update-index --assume-unchanged .gitignore"
这不起作用。
它确实会阻止文件显示在" git status"中,但在更改分支时会触发错误:
错误:checkout会覆盖对以下文件的本地更改: 的.gitignore
更多非解决方案:
其他无用的线程:
所以,我的问题,这实际上可以做到吗? 谢谢你的时间。
修改 的
来自Shahbaz',Chris'和jthill的有用评论,我的结论是我的问题的答案是" No"。看起来git中没有内置机制来完全忽略本地跟踪的文件。幸运的是,有几种解决方案在情境上很有用。
感谢您的回答,伙计。
答案 0 :(得分:0)
tl; dr this answer关于如何设置内容过滤器,该过滤器不会改变工作树或存储库中的现有内容:
git config filter.pinned-content.clean 'git show HEAD:%f 2>&- || cat'
git config filter.pinned-content.smudge 'cat %f 2>&- || cat'
mkdir -p .git/info
echo .gitignore filter=pinned-content >>.git/info/attributes
过滤器记录在.gitattributes
manpage中,其理念是' clean'命令被送入回购的内容和“污迹”。命令被送入来自回购的内容;上面的过滤器对代替了你已经提交的任何内容,无论你想要添加什么内容,以及你现在获得的任何结账都会尝试替换它。
如果签出的文件没有被更改(与提交的版本相同),并且您切换到已删除该文件的分支(或从未拥有它),git也会从工作树中删除它。您可以通过
获取内容git show @{1}:path/to/file > path/to/file # or git show oldbranch:etcetera
如果文件与提交的版本不同,git将拒绝结帐。
答案 1 :(得分:-1)
您可以创建全局git ignore
https://help.github.com/articles/ignoring-files#create-a-global-gitignore
另一种选择是修改本地gitignore并将其从本地跟踪中删除:
git update-index --assume-unchanged .gitignore
如果文件从上游更改,则不确定是否有效。