[英]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-ref
或git 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.