我的工作流程如下: 在开发过程中,我经常(本地)提交,无论我是否达到了任何里程碑,只是为了备份并在开发朝着错误的方向发展时能够恢复,或者,例如,在一天结束时的所有时间。 但我不想在以后看到这些“技术”提交,所以我经常使用修改选项。 显然,有时(通常是在达到里程碑时)我会使用 git push。
问题是我倾向于尝试修改已经拉取的提交,这会产生冲突。
问题:
在本地检查临时的东西,甚至是未完成的、非工作的东西,稍后清理这些东西不仅可以,但我会声称如果你在某种程度上没有这样做,你做错了。
现在我建议在您的提交消息上采用命名约定,以明确区分已完成和未完成的提交,例如 修复前和修复后提交消息带有
====
。如果您已经准备就绪,那么管理推送或不推送的内容就会变得非常简单。
您还可以将其与分支命名约定结合使用,例如
my_feature
包含已完成的提交,然后是另一个名为 wip/my_feature
或 my_feature.playground
的分支,例如包含未完成的提交,然后您在 my_feature
之上变基,并最终变为“空”1,因为您将未完成的提交转换为已完成的提交2.
1 或者分支最终只包含添加的调试打印提交或类似的东西,这些显然只是临时的东西。
2 那些完成的提交然后被合并/挑选到
my_feature
中,并在重新设置基础时从另一个分支“消失”。
您已经在本地完成了初稿工作,现在进行下一步:学习使用 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
。