0

私は 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 にリセットするように指示すると、コード リポジトリが、少なくとも期待できる場所に配置されます。元の状態と最終状態の間でマージの競合が発生する可能性が非常に高いため、ハードにリセットすることでそのすべてを回避する必要があります。

4

1 に答える 1

6

2 つのステップでそれを行うことができます。

  1. 最初に変更を取得します
  2. 次に、FETCH_HEAD にハード リセットします。

何かのようなもの:

git fetch origin refs/changes/01/15501/2
git reset --hard FETCH_HEAD
于 2011-10-07T14:14:37.640 に答える