簡體   English   中英

git:分離頭並強制覆蓋

[英]git: detach head and force overwrite

我通常繞着git工作,但是這次卻困擾着我! 我在某個分支,它不得不讓說,自成立以來(即3個提交001002003 )。 因此,當我在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),則必須:

  1. 從獨立分支結帳的主人。
  2. 將分離的分支合並到master。

如果重新設置基礎,而不是在步驟2中進行合並,則歷史記錄將是線性的,並且IMO干凈,如下所示:

   001----002----004----003 HEAD/master

這樣可以解決您的問題嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM