git rebase:在公开提交后,是否有可能失去工作?

时间:2016-06-24 20:08:04

标签: git

我目前正在学习使用git rebase命令。在推到遥控器之前我已经用它来压缩提交,但刚才我注意到我可能搞砸了。不幸的是,我不太确定它,我也找不到任何专门告诉我会发生什么的资源,这就是我需要你帮助的原因。这是我做的:

在将多个提交压缩在一起后,我将它们推到远程。几个小时之后,我和master一起重新启动了分支,做了一些提交并将这些提交压缩到我之前推送的提交中,并推送到远程。

我认为这正是我不应该做的事情,因为我重新定义了已经公开的提交,但最糟糕的事情是什么 - 可以丢失工作吗?

顺便说一下:我非常有信心,没有其他人接触过这个分支,也没有人从中做过工作。

1 个答案:

答案 0 :(得分:3)

你是对的,你不应该改变已经发布的提交。这并不是真正失去工作,而是因为它会导致与此同时与存储库保持联系的任何人一团糟。这通常意味着他们必须通过移动分支指针并重置东西来手动修复它。

如果你确信没有其他人碰过这个分支 - 甚至没有抓住它! - 那么就不会有任何后果。但是你可能仍然想警告人们如果你决定推动它。

话虽如此,仅仅因为你重新定位它,这并不意味着你需要推动那个重新定位的提交。您实际上可以重置为非基础状态。例如,您可以使用git reflog检查reflog以返回到原始提交。或者你可以获取然后简单地git reset --soft origin/master去除自推送提交以来的所有更改(这只会删除历史记录,但会保留工作目录中的更改,以便您可以使用它进行新的提交)。这样你就可以恢复一个可以安全推送的状态。

  

可以丢失工作吗?

重新定位显然会让你失去你正在变相的原始历史。但除非你搞乱合并冲突,否则变更的<​​em>内容应该是相同的,不应该有任何损失。