我有一个工作流程如下:在开发过程中,我经常不顾自己是否达到了任何里程碑而进行(局部)提交,只是为了在开发走向错误的方向时进行备份和恢复,或者,例如,在一天结束的时候。但我不想看到这些"技术"稍后提交,所以我经常使用修改选项。很明显,有时候(通常是在达到一个里程碑的时候)我做了git push。
问题是我倾向于修改已经拉出的提交,这会产生冲突。
问题:
- 是否有一些东西可以保护我修改已经推送的提交? 这个习惯不好吗?我应该做点别的,比如在服务器端加入"技术"提交?
您已经在本地完成了初稿工作,现在要进行下一步:学习使用Git修改您的草稿以供出版。
不要修改。只需串行提交即可启动,任何时候都可以按下和按下:
hack
git commit
hack some more
git commit
hackity hack
git commit
hack
git commit
# . . .
何时推送:
git reset --soft @{u}
git commit # this will be the only commit you push
就完成了。或者git reset @{u}
,做一系列的git add -p
/git commit
s来呈现一系列的工作,作为可消化的块,或者当你的编辑时间更工业化时使用git rebase --interactive
。
在本地临时签入东西,甚至是未完成的、不工作的东西,这些东西稍后会被清理,这不仅是可以的,但我认为,如果你不这样做,在某种程度上,你做错了。
现在,我建议对提交消息采用一种命名约定,以明确区分已完成和未完成的提交,例如====
的修复前和修复后提交消息。如果你做到了这一点,那么管理什么该推什么不该推就变得非常简单了。
你也可以把它和一个分支命名约定结合起来,比如my_feature
,它包含了完成的提交,然后另一个分支命名为wip/my_feature
或my_feature.playground
,例如,它包含了未完成的提交,然后你在my_feature
的基础上重新建立,最终变成"空">1当你把未完成的提交转换成完成的提交2。
1或者分支最终只是包含添加的调试打印提交或类似的东西,显然只是为了临时的东西。
2这些完成的提交然后被合并/挑选到my_feature
并"消失";