如果我在Gerrit中有一個更改的補丁集版本,似乎我只能提交最新的補丁集版本(因爲只有那個人有必要的按鈕)。有沒有一種簡單的方法來改爲提交相同更改的舊修補程序集版本之一,只使用我在該Gerrit實例上的Web瀏覽器?通過Gerrit UI恢復到較早的補丁集版本?
我知道我可以從我的git客戶端獲取所需的補丁集版本,並將它作爲又一個新的補丁集版本放在最前面,但是我希望避免在評論中多次使用相同的補丁集版本並圍繞它進行討論。
如果我在Gerrit中有一個更改的補丁集版本,似乎我只能提交最新的補丁集版本(因爲只有那個人有必要的按鈕)。有沒有一種簡單的方法來改爲提交相同更改的舊修補程序集版本之一,只使用我在該Gerrit實例上的Web瀏覽器?通過Gerrit UI恢復到較早的補丁集版本?
我知道我可以從我的git客戶端獲取所需的補丁集版本,並將它作爲又一個新的補丁集版本放在最前面,但是我希望避免在評論中多次使用相同的補丁集版本並圍繞它進行討論。
不,對不起,這目前不可能。該設計假定最新的補丁集是開發人員將要審查和測試的補丁集,並且不能提交較舊的補丁集。他們也不能被審查/驗證。如果您想使用較舊版本的修補程序集,則必須重新提交它以使其成爲最新的修補程序集。爲了避免沒有新的變化錯誤做git commit --amend
和git將創建一個新的sha1,這將很高興地被Gerrit接受爲一個新的補丁集。
在Gerrit UI中,單擊Patch Sets
,然後在下拉菜單中,您會看到所有修補程序及其提交ID。只需點擊提交你想在中間窗格中選擇Revert
您也可以提交ID和結賬/修改提交,然後發送審查再次
如果你想拉/取/櫻桃選擇一個特定的補丁集,然後點擊Patch Sets
右邊的Download
並複製所需的命令。在命令中你會看到一個這樣的網址
ssh://[email protected]/branch.1 refs/changes/1/3456/4
^
注意在最後一個位置的數字。這是補丁號碼。因此,如果您想獲得修補程序,請修改URL爲ssh://[email protected]/branch.1 refs/changes/1/3456/2
沒有正確的方法可以僅使用Gerrit UI來執行此操作。櫻桃選擇「更改列表」的特定「補丁集」(例如,如果在更改列表中有15個補丁集並且想要恢復到補丁集#8)。從Gerrit UI獲取所需修補程序集的櫻桃選擇命令。
運行櫻桃挑選命令,並使用git commit --amend
,然後推動您的更改。它會生成新的補丁集(對於上例#16)。
這不起作用:推送舊補丁集的提交時,出現「無新更改」錯誤。 – oberlies 2015-06-26 10:54:06
這有點複雜。您需要實際恢復由所需補丁集引入的更改,然後將這些恢復修改爲審覈並重新提交。這會讓你回到你想要的補丁集所代表的狀態。如果你知道你在找什麼,你可以用reflog實現,但是我必須把它留給真正的git嚮導。 – geekofalltrades 2015-06-26 19:44:16
下面是一些可行的方法,雖然它可能有點瑕疵:在reflog中找到最新補丁集的HEAD狀態,稱之爲X,以及要恢復的補丁集的HEAD狀態,稱之爲Y. 'git diff HEAD @ {X} HEAD @ {Y} | git apply --index'。現在您已經進行了一些更改,撤消了Y和X之間所做的所有更改。執行'git commit --amend',然後重新提交審閱。您現在有了一個新的補丁集,可以讓您回到所需補丁集的狀態。 – geekofalltrades 2015-06-26 20:36:01