在 Git 中仅暂存已修改文件的更简单方法(未删除)

Posted

技术标签:

【中文标题】在 Git 中仅暂存已修改文件的更简单方法(未删除)【英文标题】:Simpler way to stage only modified files in Git (not deleted) 【发布时间】:2012-12-31 08:14:42 【问题描述】:

我的工作分支中有一堆已删除的文件,我不确定是否要提交。我需要根据需要提交我修改过的文件。

这是我想出的:

git add `git status | grep modified | cut -f2 | cut -f4 -d' '`

这个答案做了类似的事情,但也好不到哪里去:https://***.com/a/8277826

那么有没有更简单的解决方案?

【问题讨论】:

【参考方案1】:

只需使用 git add --no-all . (Git v. 2.0+) 或 git add . (Git v. 1.x)。这将通过遍历当前目录来获取它可以找到的任何文件,该目录自然不会包括已删除的文件。

当然,这也会提取任何未跟踪的文件。如果您需要避免这些,那么您可以使用更复杂的表达式。它与您的类似,但它使用用于脚本的输出(因此更稳定且更易于解析):

git diff-files -z --diff-filter=M --name-only --relative | xargs -0 git add

【讨论】:

这并不是问题的重点,但从机械上讲,它不太可能中断。接受。 @Ziglr:git add . 肯定更简单,只要您没有未跟踪的文件。但是,是的,我在存在未跟踪文件的情况下工作的命令并不简单,但更可靠。 自 2.0+ 版起,git add . 也会选择已删除的文件。旧式git add . 的新替代品是git add --no-all . 请注意,diff-files 相对于*** Git 存储库目录,但 git add 相对于当前目录。因此,如果您不在***目录中,此命令将不起作用。

以上是关于在 Git 中仅暂存已修改文件的更简单方法(未删除)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 git 中取消暂存已删除的文件? [关闭]

Git之同步代码

git常用操作合集

Git 提交添加/删除未暂存提交的文件

Git-- 记录每次更新到仓库(git clonestatusadddiffcommitrmmv命令详解)

git教程2-删除修改和文件