我可以忽略本地文件而不污染其他人的全局git配置吗?我的git状态中有未跟踪的文件是垃圾邮件,但我不想为我在本地分支中的每一个未跟踪的小文件提交git配置更改。
当前回答
TL;DR-过滤输出以忽略文件
不要这样做。关于这样做的技术方法,有很好的答案。然而,我已经多次找到这个问答页面。如您所见,有多种解决方案。问题是每一个都会使git忽略文件;这可能是你现在想要的,但未来可能不会。
细节中的魔鬼是,
git将不再报告这些文件。你需要记住你使用了哪些机制。
要么将其添加到.gitignore中,要么将过滤器写入gitstatus,以主动过滤文本。每个人都会忽略该文件,但为什么忽略它的答案更为明显。包装器脚本(或命令行调用)的第二种情况非常明显地表明了您选择忽略的内容以及您的工作流是非标准的。
其他回答
您可以安装一些git别名以简化此过程。这将编辑.gitconfig文件的[别名]节点。
git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'
为您安装的快捷方式如下:
git忽略config.xmlgit将假装它没有看到config.xml上的任何更改,防止您意外提交这些更改。git unignore config.xmlgit将继续确认您对config.xml的更改,允许您再次提交这些更改。忽略gitgit将以上述方式列出您“忽略”的所有文件。
我参考了phatmann的答案构建了这些模型,它给出了一个假设不变的版本。
我介绍的版本使用跳过工作树来忽略本地更改。有关差异的完整解释,请参见Boreaid的答案,但本质上,跳过工作树的目的是让开发人员更改文件,而无需提交更改的风险。
这里提供的git-ignored命令使用git-ls-files-v,并过滤列表以仅显示以S标记开头的条目。S标记表示状态为“跳过工作树”的文件。有关gitls文件显示的文件状态的完整列表:请参阅gitls文件上-t选项的文档。
只需将路径添加到ypu希望从当前回购的任何分支上的提交中删除的文件:
取消隐藏Windows目录设置中的隐藏文件打开路径REPO_MAIN_Path/.git/info/exclude添加例如**/toExcludeFile.bat
就这样!对我来说,上面的答案太长了。KISS-保持简单的愚蠢
这是一个简单的单行解决方案,用于排除本地文件。
echo YOUR_FILE_OR_DIRECTORY >> .git/info/exclude
您可以简单地将.gitignore文件添加到您的主目录中,即$home/.gitignore/~/.giti忽略。然后告诉git将该文件与命令一起使用:
git config --global core.excludesfile ~/.gitignore
这是一个普通的.gitignore文件,git在决定忽略什么时会引用它。因为它在您的主目录中,所以它只适用于您,不会污染任何project.gitignore文件。
多年来,我一直在使用这种方法,取得了很好的效果。
如果您的repo还没有.gitignore文件,那么一个简单的解决方案是创建.gitignorefile,并在其中将.gitignor添加到要忽略的文件列表中。
推荐文章
- 如何配置Mac OS X术语,使git有颜色?
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?