大規模なリポジトリ全体を検索して置換すると、typechangeステータスのファイルがたくさん表示されます。これらは主にシンボリックリンクです。
のではなく
git checkout -- eachfile.name
Typechangeファイルのみをリセットする方法はありますか?
git status | grep typechange | awk '{print $2}' | xargs git checkout
既存の答えの味ですが、私はそれを好みます:
git status --porcelain | awk '{if ($1=="T") print $2}' | xargs git checkout
--porcelain
は、この種の使用のために設計されています。
このawkの回答と既存の回答は、スペース、改行などを含むファイル名で壊れている可能性があることに注意してください。
git status -z | Perl -0 -ne 'print $1 if /^\s*T\s*(.+)$/s' | xargs -0 git checkout
git status -z
はreallyがこの種の使用に推奨されるもので、nullは各エントリを終了します。 Perlの-0
はそれを扱います、-ne
は、指定されたコマンドを各行に処理します(実際には「エントリ」)。 $1
は、ここで最初のキャプチャグループを参照します。これには、ファイル名とnullターミネーターが含まれます。
ほとんどの場合、リポジトリからシンボリックリンクを削除することをお勧めします。異なるオペレーティングシステムで作業している場合、リポジトリにリンクがあることが問題になります。
それを削除して新しい場所に設定すると、ファイルが変更されます。
一部のJava Gitクライアントにシンボリックリンクの問題があります。シンボリックリンクを追跡しようとすると、エラーが発生します。Jenkinsクライアントでこの問題が発生しました。
すべてのシンボリックリンクを.gitignore
に追加するには、Linuxで次のコマンドを実行します。
find /your/directory -type l >> .gitignore