git commit 仅将修改的文件作为原子提交,然后仅将已删除的文件作为单独的原子提交提交

Posted

技术标签:

【中文标题】git commit 仅将修改的文件作为原子提交,然后仅将已删除的文件作为单独的原子提交提交【英文标题】:git commit only modified files as atomic commit, then commit only deleted files as separate atomic commit 【发布时间】:2021-05-19 18:39:26 【问题描述】:

我的git staging 区域中混合有deletednewmodified 文件, 即他们已经全部added 到暂存区,并准备好最终committed 到存储库。

如何通过“状态”而不是使用路径规范来提交文件?

例如,我如何commit(来自staging 区域)仅包含deleted 的文件,但在暂存中保留newmodified 文件?

原因是因为我想使用单独的 cmets 创建单独的原子提交,这些 cmet 更准确/适用于正在提交的文件。

【问题讨论】:

【参考方案1】:

如果可能的话,我会:

重置索引(不再暂存文件) 按状态添加,然后提交

您可以按状态添加(如shown here):

git add --all $(git diff --diff-filter=D --name-only)

D 用于删除。使用other filters,如A 用于添加或M 用于修改。

【讨论】:

git reset ... ? @skeetastax 是的,一个简单的git reset 将清空暂存区域,让您有机会再次添加这些文件,这次是按状态(删除、添加或修改)。 git reset 单独(不是 git reset --hard,这也会重置工作树,即您的文件)

以上是关于git commit 仅将修改的文件作为原子提交,然后仅将已删除的文件作为单独的原子提交提交的主要内容,如果未能解决你的问题,请参考以下文章

git commit时暂时忽略已提交的文件

查看commit修改的内容

git怎么查找一个文件两个commit id之间的log信息

git 修改已提交的 commit

git 修改提交记录

Git 修改已提交 commit 的信息