後,我有別人的回購像叉子和犯了一些變化,以我的主分支,像這樣的,並推到我的叉:混帳開關,分支是主分支推
[upstream/master] --- C1 --- C2[origin/master]
然後我決定,我想我的變化C1
和C2
是一個分支feature_branch1
的一部分,我希望我的master
分支能回到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_branch1
和feature_branch2
成功(git push origin feature_branchX
),但是當我試圖把主人,我得到有關無法快進,失去歷史的錯誤。
我得到這個 - 我想它不想讓我失去C1
和C2
通過將master
移回分支點。但我已經在feature_branch1
已經保存了C1
和C2
,所以我不會失去它們。
有沒有什麼辦法可以實現上面的圖表?
這就是問題 - 我是否真的將它們刪除?我不認爲我是這樣的,因爲使用相同的SHA編號的提交仍然存在,但是在分支'feature'而不是'master'下,因爲我所做的只是重命名了我的分支?或者我感到困惑 –
您正在將它們從主分支中刪除。如果有人爲您的主分支拉取了最新的參考,他們將在未來遇到錯誤,即使這些相同的提交現在存在於不同的分支中。關鍵是你應該小心那面旗幟,而不是你100%不應該使用它。我用過它。公開推動後我重寫了歷史。這樣做時要小心,並理解它會影響其他人。您需要評估在特定情況下是否合適。 – cjc343
啊,我明白了。乾杯。 –