web-dev-qa-db-ja.com

リポジトリを使用して変更を破棄する方法

repo statusは、多くの不要な変更を示しています。

すべてのプロジェクトを入力してgit reset --hardを使用すると重複します。

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

43
Johnny

これは私がこの種のものに使用するコマンドで、とても便利です

repo forall -vc "git reset --hard"

ここでのすべての意味は?

repo forallはすべてのリポジトリに対して実行されます。

-vは冗長であるため、コマンドの出力を出力します

-c "COMMAND TO EXECUTE"は、実際に必要なコマンドです

94
stdcall

作業フォルダをclean状態に戻す必要がある場合、ローカルの変更はなく、追跡されていないファイルはありません(つまり、whereレポステータスは何も表示されません)、私はこれらの2つのアプローチが有用であることを発見しました レポ同期と削除/変更されたファイル

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

または

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

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

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

20
pmod

以下の構文でrepo forallコマンドを使用すると、トラッキングファイルをリセットできます。

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

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

9
rans
#!/bin/bash
for gitdir in $(find . -name .git); do
    pushd $(dirname $gitdir)
    git reset --hard
    popd
done
4
h0tw1r3