[英]How can I change the commit a remote-tracking branch points to?
我有一個名為appsec/master
的遠程跟蹤分支,我想將其設置為HEAD
。 我通常使用git branch -f <branch> <commit>
來設置本地分支,但是執行branch branch -f appsec/master HEAD
會導致創建一個新的本地分支appsec/master
。
如何在執行git push -f -u <upstream> <branch>
之前明確設置遠程跟蹤分支?
(master %<>)$ git log --graph --oneline --decorate --all -n 25
* 211e9d7 (HEAD -> master) Working version of scanner
| * c5a9ec4 (appsec/master) Added regex.json
|/
...
注意:我知道這個問題有點綜合性,因為我永遠不應該執行git push -f
或手動修改遠程跟蹤分支,但在這種情況下,我使用我自己的存儲庫,沒有合作伙伴。
您不能“設置”遠程跟蹤分支,它們是您上次檢查時從遠程獲取的內容的設計圖像。
但是,您可以在本地分支上設置任何引用,然后將其強制推送到遠程。 然后,簡單地從中獲取也會更新您的遠程跟蹤分支。
您在本地計算機上的遠程分支也有顯示,但默認情況下它們是隱藏的。 您可以使用git branch --all
查看它們的列表。 因此,即使您沒有 inte.net 連接,您也可以合並遠程分支(在本地緩存)。 因此,您可以簡單地運行git push --force appsec master
。 然后運行git fetch
以將所有更改從服務器接收到本地遠程分支。 查看git 遠程分支。
您可以使用git update-ref
在沒有任何推送或拉取的情況下執行此操作:
git update-ref refs/remotes/REMOTE_NAME/BRANCH_NAME NEW_COMMIT OLD_COMMIT
git update-ref
將為您驗證ORIGIN_NAME/BRANCH_NAME
在更新為OLD_COMMIT
之前確實指向NEW_COMMIT
。 如果您不需要此驗證,則可以省略OLD_COMMIT
。
在問題中,它將是git update-ref refs/remotes/appsec/master HEAD
。
您可以使用git show-ref
列出所有參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.