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%不应该使用它。我用过。我在公开推动后改写了历史。只是在这样做的时候要小心,要明白这会影响到其他人。这取决于你评估在特定情况下这样做是否合适。