- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
另一位开发人员提交了他的本地版本的 .gitignore 文件。我想在本地修改那个文件而不被唠叨:没有出现在“git status”上,没有“被 checkout 覆盖”错误。
通常推荐的解决方案似乎是“git update-index --assume-unchanged .gitignore”
这不起作用。
它确实会阻止文件出现在“git status”中,但它会在更改分支时触发错误:
错误:您对以下文件的本地更改将被 check out 覆盖: .gitignore
更多非解决方案:
其他无用的线程:
所以,我的问题是,这真的可以做到吗?
感谢您的宝贵时间。
编辑
根据 Shahbaz、Chris 和 jthill 的有益评论,我得出结论,我的问题的答案是“否”。看起来 git 中没有内置机制可以完全忽略本地跟踪的文件。幸运的是,有几种在特定情况下有用的解决方法。
谢谢大家的回答。
最佳答案
tl;博士 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 中,这个想法是“干净”命令是将内容馈送到 repo 协议(protocol)中,而“涂抹”命令是从 repo 协议(protocol)中馈送的内容;上面的过滤器对替换任何已经提交的内容来替换您要添加的内容,以及您现在拥有的任何 checkout 内容都会尝试替换它。
如果 checkout 的文件没有被更改(与提交的版本相同),并且你切换到一个已经删除该文件(或从未有过)的分支,git 也会从工作树中删除它。您可以通过以下方式取回内容
git show @{1}:path/to/file > path/to/file # or git show oldbranch:etcetera
如果文件与提交的版本不同,git 将拒绝 checkout 。
关于git - 忽略对提交的 .gitignore 的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23546027/
引用the online docs : If the pattern does not contain a slash /, Git treats it as a shell glob pattern
我想让 git 忽略名为“Doxyfile”的文件,我添加了一个 .gitignore 文件,但它仍然会尝试跟踪文件。 我在下面添加了我的步骤,我是否遗漏了一个步骤? $ ls -a .git
我知道有很多这样的问题,但没有人解决我的问题。我想要一些非常简单的东西 - 忽略特定文件夹下除一个文件之外的所有文件和文件夹。这是我尝试的方法: #Ignore public/typings/* #A
我一直在使用 git,但仍然对 .gitignore 文件路径感到困惑。 那么,.gitignore文件中以下两个路径有什么区别? tmp/*public/documents/**/* 我可以理解 t
这可能吗? git update-index --assume-unchanged 不是解决方案,必须跟踪忽略的文件。要么创建子模块。 例如 cat .customgitignore(1|2|3...
我的实际问题 我希望只有目录结构根目录中的 .gitignore 文件会忽略文件,即子目录中的 .gitignore 文件不应忽略文件。 要清楚 我不想 gitignore 其他 .gitignore
当我输入 git status 时,我收到以下消息: Changes not staged for commit: (use "git add ..." to update what will b
$ cat ~/.gitconfig [core] editor = vim excludefiles = /home/augustin/.gitignore $ ca
有没有办法忽略 gitignore 规则但仍然 checkin .gitignore 文件?或者也许我们应该使用不同的实现? 这不是一个关于如何应用 gitignore 规则或“为什么我的规则不能正常
我的目录结构如下: static admin ajax_upload books css font media robots.txt templ
为什么 git 不忽略 .gitignore?这是错误还是功能?我看不出有任何人愿意分享 .gitignore 文件的原因。不得不在 .gitignore 中添加 .gitignore 感觉有点讽刺。
我正在和别人合作一个项目,根目录下有一个.gitignore是提交给git的。如果我想在 root 中创建一个我希望 git 忽略的新文件或目录,但我不想将它放在公共(public) .gitigno
如果我有一个全局的 .gitignore 设置并且项目在 repo 中有 .gitignore,那么 repo 中的那个是否覆盖全局的或者它是否添加规则示例: 如果全局有: *.exe *.ini 并
是否可以将 .gitignore 文件添加到 .gitignore 本身? .gitignore 虽然没用 我不想在编辑的文件中看到它 最佳答案 .gitignore 文件的目的是防止在项目上协作的每
我们在这里进行了一次内部讨论,我们对在包含大量文件的项目(如 CMS)上使用 .gitignore 的最佳实践感到有些困惑。 方法一 方法 1 是有目的地 .gitignore 构建标准的所有文件。这
在 https://github.com/codyc4321/Flashcard-Generator我有一个文件,我想将 HTML 生成器拆分为它自己的函数。 该文件位于 js/main.js 中。此
我正在为 Gr 制作游戏。和我的 friend 一起学习了 12 门编程类(class)。我在本地存储库中有在 Blender 中制作的 3D 模型。 Blender 文件以 .blend 结尾,它也
如果我有set a global .gitignore file我的项目也有一个 .gitignore 文件,它们都包含不同的内容,我的项目中是否使用了它们的条目? 最佳答案 是的。 他们将一起忽略他
在项目根目录中,我有一个 .gitignore 文件,它会忽略除 gitignore 文件之外的所有内容。这是文件的内容: **/* !.gitignore 然后在 implementation/xm
我想知道是否可以在存储库中包含named .gitignore 文件,例如: Composer.gitignore Node.gitignore 以上两个示例都显示在 GitHub 的 gitigno
我是一名优秀的程序员,十分优秀!