首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不需要修改工作树的情况下从git状态的输出中排除某些目录(例如_not_修改.gitignore)

如何在不需要修改工作树的情况下从git状态的输出中排除某些目录(例如_not_修改.gitignore)
EN

Stack Overflow用户
提问于 2020-04-20 06:10:30
回答 3查看 672关注 0票数 3

在我的工作树中,有一个包含几个修改过的文件的目录,在执行git status时,我暂时不想看到这些文件。但理想情况下,这应该在不修改工作树的“状态”的情况下完成。我怎么能这么做?

我查看了man git-status,但没有看到排除特定目录的选项。

一些解决办法:

  • git status | grep -v dir-to-exclude,然后我就失去了漂亮的颜色。
  • 将所有其他目录和文件指定为git状态的参数,即git status dir-1 dir-2 dir-3 file-1 file-2
  • 使用git stash临时将修改存储在dir-to-exclude/中,但这会修改我的状态
  • 暂时将dir-to-exclude/添加到.gitignore,但这会修改工作树的状态,我必须记住恢复更改。它也不适用于修改过的版本控制文件。
  • 如果存在git status,则使用其他命令?

如果没有现成的git status选项,那么使用grep而不失去漂亮的颜色也许是我应该使用的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-20 06:30:22

尝尝这个

代码语言:javascript
复制
 git -c color.ui=always status | grep -v <dir-to-exclude>

参见Git节中的颜色这里

Git完全支持彩色终端输出,这大大有助于直观地解析命令输出。许多选项可以帮助您将颜色设置为您的偏好。 color.ui Git会自动对其大部分输出进行着色,但是如果您不喜欢这种行为,则会有一个主开关。 您还可以将其设置为始终忽略终端和管道之间的差异。

票数 4
EN

Stack Overflow用户

发布于 2020-04-20 06:44:26

这可能是git update-index --skip-worktree的适当用途。引用文献资料的话,

跳过-工作树位可以在一个(长)句子中定义:当读取一个条目时,如果它被标记为跳过-工作树,那么Git假装它的工作目录版本是最新的,而是读取索引版本。

换句话说,如果使用git update-index --skip-worktree <filename>在文件上设置此标志,则Git将忽略磁盘上文件的实际内容和元数据,而只是假装文件未经修改。这只适用于读取操作;如果运行将写入文件的Git操作(例如git checkoutgit reset),则Git将向您发出警告。

就我个人而言,这个命令被别名为git ignore,而相反的版本,git update-index --no-skip-worktree,别名为git unignore。当然,如果要这样做,您必须记住,这与使用.gitignore文件的机制完全无关,因此,如果可能出现混淆,您可能需要选择不同的名称。

票数 1
EN

Stack Overflow用户

发布于 2022-04-29 18:39:25

如何排除在执行“git状态”命令时要显示的不需要的文件夹内容复本

使用git status . -- ':!dir'在运行git status时排除dir文件夹。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61316103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档