git开关按下后哪个分支是主分支

git开关按下后哪个分支是主分支,git,Git,我有一个类似于其他人回购协议的分支机构,并对我的主分支机构进行了大量的更改,并将其推到了我的分支机构: [upstream/master] --- C1 --- C2[origin/master] 然后,我决定将我的更改C1和C2作为分支功能的一部分\u branch1,并希望我的主分支回到上游/master: [upstream/master === origin/master] --- C1 --- C2[origin/feature_branch1] 我通过以下途径实现了这一目标: g

我有一个类似于其他人回购协议的分支机构,并对我的主分支机构进行了大量的更改,并将其推到了我的分支机构:

[upstream/master] --- C1 --- C2[origin/master]
然后,我决定将我的更改
C1
C2
作为分支
功能的一部分\u branch1
,并希望我的
主分支回到
上游/master

[upstream/master === origin/master] --- C1 --- C2[origin/feature_branch1]
我通过以下途径实现了这一目标:

git checkout C2
git branch -m feature_branch1
git checkout upstream/master
git branch -m master
(不知道这是不是我的本意)

然后,我从
主分支添加了一些额外的功能,如下所示:

                                     C1 --- C2 [origin/feature_branch1]
                                   / 
[upstream/master === origin/master]
                                   \ 
                                     C1' --- C2' [origin/feature_branch2]
git签出主机;git签出-b功能;

现在我试着推到遥控器。我已经成功地推送了
feature\u branch1
feature\u branch2
git推送原点feature\u branchX
),但是当我尝试推送master时,我遇到了一个错误,即无法快进并丢失历史记录

我有点明白-我想它不希望我通过将
master
移回分支点而丢失
C1
C2
。但是我已经在
feature\u branch1
中保存了
C1
C2
,所以我不会丢失它们


有什么方法可以实现上面的图表吗?

在一个
git签出主机之后,您可以执行
git reset--hard origin/master
将您的分支重置为与远程主机相同的状态。

如果您将
--force
标志添加到推送中,应该会成功


重写历史记录被认为是一件坏事,因为如果其他人克隆了您的主机并拉取了您要删除的提交,他们将遇到问题,因为他们的引用已不存在。

是的,但我的源/主机当前位于C2,我希望它位于上游/主机。这是我的问题。哦,我误解了这个问题。。。我会在几分钟内删除这个答案,@cjc343的答案似乎就是你想要的答案这就是问题所在-我真的要删除它们吗?我不认为我是,因为具有相同SHA编号的提交仍然存在,但只是在分支
功能下,而不是在
master
下,因为我所做的只是重命名我的分支?或者我会感到困惑吗?你要把它们从主分支中移除。如果有人为您的主分支提取了最新的引用,那么他们将来将遇到错误,即使这些相同的提交现在存在于不同的分支中。关键是你应该小心使用这个标志,而不是你100%不应该使用它。我用过。我在公开推动后改写了历史。只是在这样做的时候要小心,要明白这会影响到其他人。这取决于你评估在特定情况下这样做是否合适。