私は gerrit でいくつかの作業を行っていますが、gerrit ではコミットの refspec しか取得できません。何かのようなもの:
refs/changes/01/15501/2
これにハードリセットするにはどうすればよいですか?
仲良く遊んでみた
[me@server code ((7deac0e...))]$ git reset --hard refs/changes/01/15501/2
fatal: ambiguous argument 'refs/changes/01/15501/2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
これは最良のエラー メッセージではなかったので、試してみました。
[me@server code ((7deac0e...))]$ git reset --hard -- refs/changes/01/15501/2
fatal: Cannot do hard reset with paths.
reset --hard を使用する必要はありませんが、私の状況ではうまく機能します。私のスクリプトはコード リポジトリで実行されますが、それがどのような状態なのかわかりません。信頼できて変更されないファイルは 1 つだけです。それは reset_to_gerrit スクリプトです。
そのスクリプトに refspec にリセットするように指示すると、コード リポジトリが、少なくとも期待できる場所に配置されます。元の状態と最終状態の間でマージの競合が発生する可能性が非常に高いため、ハードにリセットすることでそのすべてを回避する必要があります。