repo status
不要な変更がたくさん表示されます。
すべてのプロジェクトに入って使用すると複製されますgit reset --hard
。
のようなレポを使用してすべての変更をリセットする方法はありrepo reset --hard
ますか?
作業フォルダーをローカルの変更がなく、追跡されていないファイルがないクリーンな状態に戻す必要がある場合(つまり、リポジトリのステータスに何も表示されない場合)、これらの 2 つのアプローチがリポジトリの同期と削除/変更されたファイルに役立つことがわかりました。
repo forall -c 'git reset --hard ; git clean -fdx'
また
rm -rf * ; repo sync -l
// note that .repo is preserved after that
これは、新しいローカル リポジトリを初期化して同期することと同等ではないことに注意してください (例: stash は保持されます)。
何が起こっているのかわからない場合は、完全なスレッドリポジトリの同期と削除/変更されたファイルをお読みください。
次のようにコマンドを使用して、repo
すべての変更を元に戻すことができます。
repo sync -d
これにより、すべての変更が元のリビジョンに戻ります。
編集:
上記のコマンドは、その時点のバージョンでのみ機能します。
作業コマンドは次のとおりです。
repo forall -vc "git reset --hard"
コマンドとオプションの説明
各プロジェクトで指定されたシェル コマンドを実行します
forall
オプション (コマンドで使用できるもの)
-c
: 実行するコマンドと引数。コマンドは、/bin/sh とシェルの位置パラメーターとして渡された後のすべての引数を介して評価されます。
-p
: 指定したコマンドの出力前にプロジェクト ヘッダーを表示します。これは、パイプをコマンドの stdin、stdout、および sterr ストリームにバインドし、すべての出力を 1 つのページャー セッションで表示される連続ストリームにパイプすることによって実現されます。
-v
: コマンドが stderr に書き込むメッセージを表示します。
詳細については、レポ ドキュメントを参照してください。
以下の構文で repo forall コマンドを使用すると、追跡ファイルをリセットするのに役立ちます。
repo forall -p -c 'git checkout -f foo'
wherefoo
は正当なブランチ名に置き換える必要があります。
#!/bin/bash
for gitdir in $(find . -name .git); do
pushd $(dirname $gitdir)
git reset --hard
popd
done