54

repo status不要な変更がたくさん表示されます。

すべてのプロジェクトに入って使用すると複製されますgit reset --hard

のようなレポを使用してすべての変更をリセットする方法はありrepo reset --hardますか?

4

5 に答える 5

26

作業フォルダーをローカルの変更がなく、追跡されていないファイルがないクリーンな状態に戻す必要がある場合(つまり、リポジトリのステータスに何も表示されない場合)、これらの 2 つのアプローチがリポジトリの同期と削除/変更されたファイルに役立つことがわかりました。

repo forall -c 'git reset --hard ; git clean -fdx' 

また

rm -rf * ; repo sync -l
// note that .repo is preserved after that

これは、新しいローカル リポジトリを初期化して同期することと同等ではないことに注意してください (例: stash は保持されます)。

何が起こっているのかわからない場合は、完全なスレッドリポジトリの同期と削除/変更されたファイルをお読みください。

于 2014-02-25T11:32:52.370 に答える
11

次のようにコマンドを使用して、repoすべての変更を元に戻すことができます。

repo sync -d

これにより、すべての変更が元のリビジョンに戻ります。

編集:

上記のコマンドは、その時点のバージョンでのみ機能します。

作業コマンドは次のとおりです。

repo forall -vc "git reset --hard"

コマンドとオプションの説明

  • すべてのために

各プロジェクトで指定されたシェル コマンドを実行します

forallオプション (コマンドで使用できるもの)

-c: 実行するコマンドと引数。コマンドは、/bin/sh とシェルの位置パラメーターとして渡された後のすべての引数を介して評価されます。

-p: 指定したコマンドの出力前にプロジェクト ヘッダーを表示します。これは、パイプをコマンドの stdin、stdout、および sterr ストリームにバインドし、すべての出力を 1 つのページャー セッションで表示される連続ストリームにパイプすることによって実現されます。

-v: コマンドが stderr に書き込むメッセージを表示します。

詳細については、レポ ドキュメントを参照してください。

于 2012-03-06T16:29:25.107 に答える
9

以下の構文で repo forall コマンドを使用すると、追跡ファイルをリセットするのに役立ちます。

repo forall -p -c 'git checkout -f foo'

wherefooは正当なブランチ名に置き換える必要があります。

于 2012-07-28T17:25:02.650 に答える
5
#!/bin/bash
for gitdir in $(find . -name .git); do
    pushd $(dirname $gitdir)
    git reset --hard
    popd
done
于 2012-03-11T00:53:50.353 に答える