好的,我原以为这只是一个简单的git场景,我错了吗?
我有一个master
分支和一个feature
分支。我在master
上做了一些工作,在feature
上也做了一些工作,然后又在master
上做了一些工作。最终得到的结果类似于这样(按字典序排序意味着提交的顺序):
A--B--C------F--G (master)
\
D--E (feature)
我可以毫无问题地使用git push origin master
来保持远程master
的更新,也可以在feature
分支上使用git push origin feature
来维护我的feature
工作的远程备份。到目前为止,一切都很好。
但是现在,我想将feature
重新基于master上的F--G
提交,所以我执行了git checkout feature
和git rebase master
。还是很好的。现在我们有:
A--B--C------F--G (master)
\
D'--E' (feature)
问题: 当我想备份已经用git rebase
重置过的新的feature
分支时,由于树形结构发生了变化,推送被拒绝。这只能通过使用git push --force origin feature
来解决。
我不喜欢在不确定需要它的情况下使用--force
。那么,我需要使用它吗?重置是否一定意味着下一个push
必须使用--force
选项?
这个特性分支并没有与其他开发人员共享,因此我没有使用--force选项的实际问题,我不会丢失任何数据,问题更多是概念上的。