Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 本地分支上的推送代码在重新基址后丢失_Git_Version Control_Rebase - Fatal编程技术网

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},并将其推送到origin
feature-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的更改是否丢失,取决于如何解决重设基础冲突。此外,如果您不想强制推送,那么可以使用合并而不是重基。