[解決済み】Gitでダーティなインデックスや未追跡のファイルをチェックする
2022-04-20 08:25:20
質問
git リポジトリに未コミットの変更があるかどうかを確認するにはどうすればよいですか。
- インデックスに追加されたが、コミットされていない変更
- 未追跡のファイル
スクリプトから?
git-status
は、git バージョン 1.6.4.2 では常にゼロを返すようです。
解決方法は?
グレートタイミング! 数日前、プロンプトにgitのステータス情報を追加する方法を見つけたとき、まさにこのことについてブログ記事を書いたのです。
私がやっていることはこうです。
-
ダーティな状態の場合。
# Returns "*" if the current git branch is dirty. function evil_git_dirty { [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]] && echo "*" }
-
未追跡のファイルについて (注意
--porcelain
フラグをgit status
を使えば、パース可能な出力が得られます)。# Returns the number of untracked files function evil_git_num_untracked_files { expr `git status --porcelain 2>/dev/null| grep "^??" | wc -l` }
とはいえ
git diff --shortstat
の方が便利ですが
git status --porcelain
ダーティファイルの取得に使用します。
# Get number of files added to the index (but uncommitted)
expr $(git status --porcelain 2>/dev/null| grep "^M" | wc -l)
# Get number of files that are uncommitted and not added
expr $(git status --porcelain 2>/dev/null| grep "^ M" | wc -l)
# Get number of total uncommited files
expr $(git status --porcelain 2>/dev/null| egrep "^(M| M)" | wc -l)
注
2>/dev/null
はエラーメッセージをフィルタリングするので、これらのコマンドを非gitディレクトリで使用することができます。(これらのコマンドは単に
0
はファイル数を表しています)。
編集 :
以下はその書き込みです。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み] ローカルファイルシステムからファイルを削除せずに、Git リポジトリからファイルを削除する
-
[解決済み] ステージングされた変更を表示するにはどうしたらいいですか?
-
[解決済み] Git リポジトリからファイルを削除するにはどうすればよいですか?
-
[解決済み] Git のコミットからファイルを削除する
-
[解決済み] ローカルにあるファイルを無視するようにgitを設定するにはどうすればよいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [email protected] へのいくつかの参考文献のプッシュに失敗しました。
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[解決済み】GitHubで空のブランチを作成する
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
git commit リモートエラー [rejected] master -> master (フェッチファースト)
-
[解決済み】ローカルGitブランチとそのリモートブランチを比較する方法
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] [Solved] 未コミットの変更があるかどうかをプログラムで判断するには?