repo status
は、多くの不要な変更を示しています。
すべてのプロジェクトを入力してgit reset --hard
を使用すると重複します。
repo reset --hard
のようなリポジトリを使用してすべての変更をリセットする方法はありますか?
これは私がこの種のものに使用するコマンドで、とても便利です
repo forall -vc "git reset --hard"
ここでのすべての意味は?
repo forall
はすべてのリポジトリに対して実行されます。
-v
は冗長であるため、コマンドの出力を出力します
-c "COMMAND TO EXECUTE"
は、実際に必要なコマンドです
作業フォルダを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は保持されます)
何が起こっているのかわからない場合は、スレッド全体を読んでください レポ同期と削除/変更されたファイル
以下の構文でrepo forallコマンドを使用すると、トラッキングファイルをリセットできます。
repo forall -p -c 'git checkout -f foo'
ここで、foo
は正当なブランチ名に置き換える必要があります。
#!/bin/bash
for gitdir in $(find . -name .git); do
pushd $(dirname $gitdir)
git reset --hard
popd
done