获取“git add -u”的预览?

21

我正在尝试编写 .gitignore 文件。我希望能够预览执行 "git add -u" 命令后将要添加的所有内容。这可行吗?或者,如果我运行 "git add -u",有一些我不想要的东西被添加了,我能撤消整个操作吗?然后我会调整我的 .gitignore 文件并重复尝试。

谢谢。


说实话,现在我太蠢了,无法理解'git add --help'关于'-u'的含义。在应用'git add -u'之前和之后,我们(最终)会在'git status'中看到什么不同?如果我们使用'git add'代替会怎样? - grenix
这个对你的使用场景有帮助吗(如何在提交之前撤消'git add')?https://dev59.com/mnRC5IYBdhLWcg3wSu97 - grenix
3个回答

28
我觉得你正在寻找的是: git add -n 这是 --dry-run 的简短开关 :)
编辑:从仓库的根目录开始,请尝试: git add -n . 如果你错误地添加了应该被忽略的文件,并且在干预运行中没有发现它,那么你只需要使用: git reset HEAD -- 这基本上会取消暂存的文件。

1
请注意,相同的预览在交互式添加中无法使用。
Git 2.32(2021年第二季度)现在更清晰:“git add -i --dry-run手册不会进行“干运行”,这令人惊讶。选项的组合已经教会我们出错了。

请参阅提交a1989cf(2021年5月5日),作者为Øystein Walle (Osse)
(由Junio C Hamano -- gitster --于2021年5月14日合并至提交47fa106

add:如果同时给出--dry-run--interactive,则退出

签名作者:Øystein Walle

交互式机器不遵循 --dry-run。如果两个标志都传递,则适当地停止运行。

同时,Git 2.34(2021年第四季度)起,使用 "git add --dry-run"(man) 命令时将不再创建新的blob和tree对象。

请查看 提交 e578d03 (2021年10月12日) 由 René Scharfe (rscharfe) 提交。
(由 Junio C Hamano -- gitster -- 合并于 提交 6ffb5fc, 2021年10月25日)

add:不要使用--dry-run写入对象

报告人:git.mexon@spamgourmet.com
签署人:René Scharfe

当使用选项--dry-run/-n时, "git add"(man) 不会更改索引,但仍会写出新的对象文件。
只哈希后者而不是写入,以使运行尽可能干燥。


0

我发现

git add -n .

同时也显示了修改过的文件

git ls-files --others --exclude-standard

不行。

目前来说,第二种方法对我来说是首选的方式进行.gitignore的预览/测试。

我在帖子的评论中也发现了一些人反对使用'add .',而更喜欢使用'add -u'。

我也尝试过。

git add -u -n

但根据我的经验,这只显示修改过的文件。

https://dev59.com/LG865IYBdhLWcg3wduaH#10888722

顺便说一下:在这种情况下,git子模块对我来说似乎是一个额外的用例(不知道是否可以通过“git ls-files”的其他开关来反映这一点)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接