git switch推送后哪个分支是master分支

时间:2012-10-05 01:04:25

标签: git

我有一个别人的repo的分支,并且像我这样对我的主分支进行了一些更改,然后推到我的分支:

[upstream/master] --- C1 --- C2[origin/master]

然后我决定我希望我的更改C1C2成为分支feature_branch1的一部分,我希望我的master分支返回{{ 1}}:

upstream/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 分支上添加了一些额外功能,如下所示:

master

C1 --- C2 [origin/feature_branch1] / [upstream/master === origin/master] \ C1' --- C2' [origin/feature_branch2]

现在我正试图推向远程。我已成功推送git checkout master; git checkout -b feature_branch2; <changes>; <commits>feature_branch1feature_branch2),但当我尝试推送主人时,我收到一条错误,指出无法快进和丢失历史记录。

我有点得到这个 - 我认为通过将git push origin feature_branchX移回分支点,我不希望丢失C1C2。但我已经在master中保存了C1C2,所以我不会丢失它们。

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

2 个答案:

答案 0 :(得分:1)

git checkout master之后,您可以执行git reset --hard origin/master将分支重置为与远程主服务器相同的状态。

答案 1 :(得分:1)

如果您在推送中添加--force标记,则应该会成功。

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