[英]git: detach head and force overwrite
我通常繞着git工作,但是這次卻困擾着我! 我在某個分支,它不得不讓說,自成立以來(即3個提交001
, 002
, 003
)。 因此,當我在003
我簽出到002
然后進行了一些更改,然后提交到002
現在我想用新的提交覆蓋分支,使其成為分支的頭。
我嘗試進行推送,並得到以下git push origin HEAD:<name-of-remote-branch>
。 所以我然后嘗試git push origin HEAD:my-branch
,但被拒絕了(即使不確定這是否是我應該做的)。
關於如何解決它的任何想法?
也許您的推送被拒絕了,因為您已經將003
推送到服務器存儲庫,並且本地分支在002
頂部進行了更改,刪除了003
(如果我理解正確的話)
您可以嘗試使用git push
的--force
選項來強制推送並覆蓋遠程對象(如果確實要這樣做)。 即:
git push --force
如果不確定要執行的操作,建議使用--force
選項進行適當的備份...
git push -f origin HEAD:<name-of-remote-branch>
將用您的本地分支覆蓋您的遠程分支,將提示設置為當前分離的HEAD。
git clone
之后的本地倉庫狀態:
001----002----003 HEAD/master
當您簽出002
並進行一些更改並提交后,狀態為:
001----002----003 master
\
+----004 HEAD/detached branch
您想要的是:(a)
001----002------005----003 HEAD/master
\ /
+----004 detached branch
或者,這:(b)
001----002----003----004 HEAD/master
在以上情況下, 005
將是合並提交。
我認為不是(b),因為在這種情況下,簽出002
意義002
。 如果是(a),則必須:
如果重新設置基礎,而不是在步驟2中進行合並,則歷史記錄將是線性的,並且IMO干凈,如下所示:
001----002----004----003 HEAD/master
這樣可以解決您的問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.