簡體   English   中英

通過移動分支指針與git一起返回

[英]Move back with git by moving a branch pointer

讓我們考慮這種情況:

                  v devel
o--x--o--o--o--o--o
                \ 
                 o--o
                    ^ feature

我想將devel分支移動到x並用新名稱替換它:

   v devel        v fork
o--o--o--o--o--o--o
                \ 
                 o--o
                    ^ feature

從關於SO的其他問題中,我發現git update-refgit rebase可能會有所幫助。 但是我發現的解決方案是:

git branch -m devel fork
git checkout -b devel x   # where x is the commit number `x`

這是正確的解決方案嗎?

您的解決方案是最簡單的方法(我認為)。

而且,只要您不修改現有的提交,將更改推送到遠程存儲庫(可能也由其他人使用)就不會產生不希望的副作用。

但是,不要在devel的新位置提交任何內容。 如果您這樣做並推動更改,則會使您的同事感到困惑。

假設您提交了分支devel的新位置(這就是為什么要移動它,對嗎?)並推送您的更改。 您的回購(以及來源)如下所示:

                  v fork
o--o--o--o--o--o--o
    \           \ 
     o           o--o
     ^ devel        ^ feature

但是您的同事擁有原始的樹(在fork處有devel ,並且不存在fork )。 當他們嘗試pull git時,將嘗試將您的devel合並到fork (他們的devel )中。 因為現在這兩個分支都不是另一個分支的祖先,所以fast-forward是不可能的,合並它們需要創建一個新的提交。 那可能不是您(和他們)想要的。

總而言之,向后移動分支通常不是一個好主意。 你被警告了!

暫無
暫無

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

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