有时候我最终得到一个有很多变化的工作树,主要是在编码匆忙之后 - 变化很多,可以适应20次提交,分布在2或3个分支。为了清理工作树并很好地完成所有工作,我遵循这个令人不快的工作流程:
使用git add -p
检查工作树中的所有帅哥,不用将任何东西保存到索引中(即回答“不,不要将此”分配给每个大块) )。与此同时,我尝试在精神上将帅哥分成提交,然后记下我应该用我所看到的帅哥建立的提交(在文本文件中)。
在我将每个hunk分配到提交后(在我的笔记中),然后我再次启动git add -p
,并回答“是,将此阶段”仅回应进入第一次提交的人员。在经历了所有的挑战并挑选我想要的那些之后,我实际上是在做提交。
只要在git add -p
中留下帅哥,就在步骤2重复。这意味着我会仔细检查所有的问题,因为我在笔记中的每次提交。
这显然是一次非常愚蠢的方式来处理许多变化。有没有一种很好的方法可以从许多变化开始,将它们整理出来然后以正确的分支结束一组很好的提交?
也许有一种方法可以在多个索引中同时逐步构建多个提交。或者也许我应该将所有更改提交到一个大提交中,然后以某种方式将其拆分为多个?或者也许有一种方法可以(ab)使用git stash
来帮助将变更分组在一起?
答案 0 :(得分:2)
没有太大改进,但您可以在第一步中开始向第一次提交添加文件,即使这最终不是您真正想要的第一次提交,因为您可以通过重新排序提交来完成一个互动的rebase。
答案 1 :(得分:0)
如果您可以稍微修改您的工作流程,那么:
然后你可以使用:
git commit -m 'feature 1' -- foo.c bar.c
git commit -m 'feature 2' -- bing.c bang.c
...
这可以避免整个“大块”问题 - 但它需要您更改工作流程。
请注意,'git way'是为每个功能创建一个分支,独立开发每个功能,将所有功能合并回来。