能否使用git commit --patch --only?Git分阶段提交问题求助
解决方案
针对你遇到的场景(已暂存部分变更,需从已暂存的文件中拆分出单个代码块优先提交),这里有两种简单的实现方法:
方法一:撤销文件暂存后交互式选择提交内容
- 先撤销目标文件的已暂存变更:
git reset HEAD -- <目标文件路径> - 此时该文件的所有变更都处于未暂存状态,用交互式补丁选择你要优先提交的代码块:
按照提示选择要暂存的代码块(输入git add -p <目标文件路径>y确认选中,n跳过,q退出等) - 提交选中的这部分变更:
git commit -m "提交单独的小变更" - 最后重新暂存原本剩下的所有变更(包括其他已暂存文件和该文件剩余的内容):
git add .
方法二:用stash暂存已暂存内容,单独提交小变更
- 将已暂存的内容暂存到stash,同时保留工作区的未暂存小变更:
git stash push --keep-index - 现在工作区只有你需要优先提交的小变更,直接提交:
git commit -a -m "提交单独的小变更" - 恢复之前暂存的内容到暂存区:
git stash pop
关于git commit -po报错的原因
-p(--patch)和-o(--only)参数不能同时使用,Git不允许同时指定这两个互斥的选项,所以会抛出你看到的错误。
内容的提问来源于stack exchange,提问作者Olius
相关产品推荐
相关产品推荐

