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
区域中混合有deleted
、new
和modified
文件,
即他们已经全部add
ed 到暂存区,并准备好最终commit
ted 到存储库。
如何通过“状态”而不是使用路径规范来提交文件?
例如,我如何commit
(来自staging
区域)仅包含deleted
的文件,但在暂存中保留new
和modified
文件?
原因是因为我想使用单独的 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 仅将修改的文件作为原子提交,然后仅将已删除的文件作为单独的原子提交提交的主要内容,如果未能解决你的问题,请参考以下文章