我找到了很多關于如何使本地分支看起來像遠程分支的答案,但就我而言,我需要接受強制推送到遠程的更改refs/notes/commits。
這些更改是使用git notes add. 遙控器已使用git push origin refs/notes/* -f.
我在refs/notes/commits當地有不同的歷史。到目前為止,我一直在使用git fetch origin "refs/notes/*:refs/notes/*"將遠程筆記更改集成到我的本地。在強行推動下,這兩個歷史現在是脫節的。我想扔掉我的并接受他們的。
由于refs/notes/commits不是分支(對嗎?),我不能使用git push或git checkout進入它,然后git reset(再次,對嗎?)。那么,我可以用什么來使我的本地refs/notes*等同于遠程refs/notes/*?
uj5u.com熱心網友回復:
確實這refs/notes/commits不是一個分支,因為所有分支名稱都以定義開頭refs/heads/。但是,git fetch使用git push任何參考名稱,您可以強制獲取和強制推送。所以:
到目前為止,我一直在使用
git fetch origin "refs/notes/*:refs/notes/*"將遠程筆記更改集成到我的本地。在強行推動下,這兩個歷史現在是脫節的。我想扔掉我的并接受他們的。
那將是強制提取。要強制獲取,請執行與 : 相同的操作git push:添加--force標志,或在refspec(由冒號分隔的一對名稱)前面加上加號。后者更短(至少一個字符),所以這就是我將在這里使用的:1
git fetch origin " refs/notes/*:refs/notes/*"
或者:
git fetch origin " refs/notes/commits:refs/notes/commits"
這將用refs/notes/commits獲取的值覆寫您的當前值(存盤的哈希 ID),前提是它們具有refs/notes/commits; 變體*將用他們的名字覆寫你的所有refs/notes/名字(創建他們以前沒有的任何名字)。
1請注意, 在 refspec 前面為該 refspec 設定強制標志,而--force在命令列中為所有refspec 設定強制標志。那是:
git fetch origin refs/heads/br1:refs/heads/br1 refs/heads/br2:refs/heads/br2
從原點的分支提取br1到(本地)分支而不強制,br1但從原點提取br2到強制。與之比較:br2
git fetch --force origin refs/heads/br1:refs/heads/br1 refs/heads/br2:refs/heads/br2
這會強制進行兩次更新。即使 Git 的正常規則會拒絕更新,也會發生強制更新。2
2對于git push,另一端可以添加額外的、非 Git 規則。例如,這就是 GitHub 和其他人提供“受保護分支”的方式。由于這些不是 Git 的常規規則,因此--forceor 標志不會覆寫這些規則。沒有什么等價的git fetch,因為它在您自己的存盤庫中,并且假定您知道自己在做什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/458822.html
標籤:混帐
