我应该使用什么工具将git commit分成多个?

时间:2017-03-31 14:41:31

标签: git intellij-idea

我在一个项目中编写了一个涵盖数千条修改过的行的功能,现在这一切都以一个大的提交结束了(我已经压缩了正在进行的工作提交)。现在,我想将更改分成多个提交,以便于审核/可能有多个PR。

某些文件包含多个更改,这些更改应该以不同的提交结束,因此我正在寻找使用三窗格视图的WYSIWIG编辑器,这样我就可以在查看上一个和未来版本的同时将一些行移动到中间提交( +一些手动更改)。我使用IntelliJ IDEA进行开发,所以我想象一下类似于冲突解决对话框。

我可以切换到不同的分支/标记单提交版本并执行Git->与Branch比较(并从那里获取更改),但我正在寻找更方便的东西。

虽然这可能被标记为偏离主题/自以为是,但我认为对不同工作流程的中立建议可能很有价值。

2 个答案:

答案 0 :(得分:1)

不确定是否允许您执行此操作,但是,根据git documentation,您可以使用内置rebase函数拆分提交。类似的东西:

git rebase -i
...
pick abc1234 the commit I wanna keep
edit 5904fjl THE COMMIT I WANT TO SPLIT
pick alkj022 my latest commit to keep

在运行git reset HEAD^之后,您可以手动将更改分解为提交。您可以使用git add --patch更轻松地将文件内更改拆分为提交。或者,如果您的Intellij IDE具有良好的git GUI,您可以使用它。至少在我的经验中,分裂必须从命令行完成。

答案 1 :(得分:0)

对于IntelliJ,我使用以下工作流程:

  • 打开git日志窗口或Alt + 9
  • 右键单击要拆分的提交→从此处交互式变基
  • 右键单击要拆分的提交→停止编辑Alt + E
  • 开始重新定位
  • 右键单击git日志中带有黄色标签?️!的当前提交→撤消提交... 或者在终端中执行git reset HEAD~1
  • Ctrl + K以选择并提交带有相应消息的更改。视需要重复多次,直到完成所有更改。
  • 在右下角单击:为编辑变基已停止→继续