误执行git add .后撤销,git add --patch为何无法正常工作?
问题描述
误执行了git add .命令,原本打算用git add --patch把改动拆分成三个不同的提交。用git reset撤销误操作后,git status能正确列出所有待处理文件,但git add --patch毫无反应。换成git rm -r --cached操作,结果完全一样,怀疑这是不是Git的Bug?
更新:
经确认问题和reset或rm命令无关,以下是操作日志:
$ git status On branch main No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) file_1.md file_2.md file_3.md file_4.md nothing added to commit but untracked files present (use "git add" to track) kai@mini MINGW64 /c/Buffer/aaa/repo_2 (main) $ git add --patch No changes.
原因与解决办法
git add --patch仅对已追踪文件的改动生效,你的所有文件都处于未追踪状态(Untracked files),所以命令会返回"No changes",这不是Bug,是正常行为。
解决方法有两种:
- 单个文件处理:先标记文件为待追踪,再用
--patch拆分git add -N file_1.md git add --patch file_1.mdgit add -N(等价于git add --intent-to-add)只会把文件纳入Git的追踪范围,不会将内容加入暂存区,之后就能用--patch来选择提交部分内容。 - 批量文件处理:先暂存所有文件,再反向拆分
git add . git reset --patchgit reset --patch会逐个询问是否将暂存区的改动撤回到工作区,相当于反向的git add --patch,同样能实现拆分提交的需求。
内容的提问来源于stack exchange,提问作者KaiJaeger
相关产品推荐
相关产品推荐

