Git 本地分支上的推送代码在重新基址后丢失
我有一个Git 本地分支上的推送代码在重新基址后丢失,git,version-control,rebase,Git,Version Control,Rebase,我有一个feature-1分支。最终,它将合并到我的develope分支中,在我的团队中共享。在一些更改之后,我进行了一次提交{1},并将其推送到originfeature-1分支 当我将我的feature-1重设为develope时,没有冲突,git说:你的分支和'origin/feature-1'已经分开,分别有20个和1个不同的提交。在这一点上,人们将进行git推送——强制,仅此而已。但是我注意到,在rebase之后,我在local对commit{1}所做的所有更改都丢失了,因此我不能进行
feature-1
分支。最终,它将合并到我的develope
分支中,在我的团队中共享。在一些更改之后,我进行了一次提交{1},并将其推送到originfeature-1
分支
当我将我的feature-1
重设为develope
时,没有冲突,git说:你的分支和'origin/feature-1'已经分开,分别有20个和1个不同的提交。
在这一点上,人们将进行git推送——强制,仅此而已。但是我注意到,在rebase之后,我在local对commit{1}所做的所有更改都丢失了,因此我不能进行强制推送,因为我在origin/feature-1上的commit{1}将丢失
git在重设基础时忽略我的推式提交,这是git的正常行为吗?我不应该在重新设置基础之前推送提交吗?对于您的情况,可以强制推送
feature-1
分支到远程
我们可以用下图来说明:
在将功能-1
重定基址为开发
分支之前,提交历史应为:
...---C-F1 feature-1, origin/feature-1
\
D1---D2---...---D20 develop, origin/develop
在feature-1
branch上执行git-rebase-develope
命令后,提交历史记录将为:
...---C-F1 origin/feature-1
\
D1---D2---...---D20---F1' feature-1
|
develop, origin/develop
因此git将检测到feature-1
branch“您的分支和'origin/feature-1'已经分离,分别有20个和1个不同的提交
如果您强制推送feature-1
分支,并更新feature-1
分支将位于development
分支的顶部,然后,您可以将feature-1
分支合并到develope
分支中。feature-1
已经共享,这可以通过'origin/feature-1'
来证明。因此,如果分支存在于远程,它将被视为共享,尽管除了我之外没有人在处理它?我们正在切磋,但是,是的,一旦一个分支被推动,你就可以认为它是共享的。@海鸥,你能从玛丽娜的建议中得到有用的信息吗?我的团队有一个繁重的工作日程,包括周末。本周末我将休息一天,我将尝试在我的本地机器上测试它,并尽快对他的答案发表评论。我目前无法在我的本地机器上复制我的问题。当我使用feature-1和rebase develop时,git会报告冲突(如果有),我可以看到develop和master代码的代码。在rebase之后,我对feature-1所做的任何更改都没有丢失,我可以简单地git push-f
。但有时,在我公司的机器上,我对功能-1的更改在重设基础后丢失,因此我无法强制推送,因为它将覆盖origin/feature-1。@至于功能-1的更改是否丢失,取决于如何解决重设基础冲突。此外,如果您不想强制推送,那么可以使用合并而不是重基。