分支名稱指向分支的提示/結束提交。更改分支名稱指向的提交?
是否有直接將分支名稱更改爲指向其他現有提交(例如原始提示提交的某個始祖/後代)的命令?通過「直接」,我的意思是命令將提交移動到(或類似的)和分支的名稱作爲參數。通過「間接」,例如,提交,合併,重定位,推送和拉取/提取,移動分支的名稱,但不要將提交移動到(或類似的東西)作爲一個參數)。
分支名稱指向分支的提示/結束提交。更改分支名稱指向的提交?
是否有直接將分支名稱更改爲指向其他現有提交(例如原始提示提交的某個始祖/後代)的命令?通過「直接」,我的意思是命令將提交移動到(或類似的)和分支的名稱作爲參數。通過「間接」,例如,提交,合併,重定位,推送和拉取/提取,移動分支的名稱,但不要將提交移動到(或類似的東西)作爲一個參數)。
$ git checkout the-branch
$ git reset <commit-hash>
如果你也想擁有你的工作目錄反映了國家提交,添加--hard
標誌。
我是失職,如果我沒有提供這2個警告:
--hard
標誌,那麼您將失去自該提交以來完成的所有進度。除非您有其他參考您當前分支的提示,否則您將無法(但reflog
)回到當前狀態。git branch -f $BRANCH $COMMIT
請注意,您試圖移動不能成爲你的當前分支的分支。有關更多信息,請參見man page。
分支名稱指向分支的提示/結束提交。
正確(根據定義,真的)。
是否有命令直接將分支名稱更改爲指向不同的現有提交(例如,原始提示提交的某個始祖/後代)?
創建或更改引用的目標SHA-1標識的低級命令是git update-ref
。使用它需要一點技巧,因爲它需要你拼寫出完整的參考名稱:
$ git update-ref refs/heads/foo newvalue [ oldvalue ]
(加入oldvalue
部分使得報錯了,如果引用不具備預期的值;見the documentation瞭解詳細信息)。它也能夠打破象徵性的參考。
git branch
command將允許您將分支移動到新的目標提交,如Corubba already noted。它更適合隨意使用(不像git update-ref
那樣容易出錯),但對於腳本編寫(如果想要緊密但完全控制的話)更不適合。
的允許移動到HEAD
是一個符號引用,或改變存儲在HEAD
值時HEAD
不是一個符號引用的分支(即,當你在「分離HEAD」模式)。儘管如此,它不能移動任何其他分支。並且它也在索引上運行(除了--soft
模式以外的任何其他模式),這兩種模式都不是git branch
也不是git update-ref
。
你的意思是說,一旦分支合併(這將是你當前的分支),你希望移動到當前提交哈希從哪裏來的分支? –
沒有。我提到了「一個分支」,不一定是當前的分支。 「合併」不算數,因爲它不會將提交移動到(或類似的)作爲參數。 – Tim