我可以在Git中决定最后一次提交被推送吗?



我有一个工作流程如下:在开发过程中,我经常不顾自己是否达到了任何里程碑而进行(局部)提交,只是为了在开发走向错误的方向时进行备份和恢复,或者,例如,在一天结束的时候。但我不想看到这些"技术"稍后提交,所以我经常使用修改选项。很明显,有时候(通常是在达到一个里程碑的时候)我做了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 commits来呈现一系列的工作,作为可消化的块,或者当你的编辑时间更工业化时使用git rebase --interactive

在本地临时签入东西,甚至是未完成的、不工作的东西,这些东西稍后会被清理,这不仅是可以的,但我认为,如果你不这样做,在某种程度上,你做错了。

现在,我建议对提交消息采用一种命名约定,以明确区分已完成和未完成的提交,例如====的修复前和修复后提交消息。如果你做到了这一点,那么管理什么该推什么不该推就变得非常简单了。

你也可以把它和一个分支命名约定结合起来,比如my_feature,它包含了完成的提交,然后另一个分支命名为wip/my_featuremy_feature.playground,例如,它包含了未完成的提交,然后你在my_feature的基础上重新建立,最终变成"空">1当你把未完成的提交转换成完成的提交2


1或者分支最终只是包含添加的调试打印提交或类似的东西,显然只是为了临时的东西。

2这些完成的提交然后被合并/挑选到my_feature并"消失";

最新更新