[解決済み】ローカルのGitリポジトリが変更されたかどうかをBashスクリプトで確認するにはどうすればよいですか?
2022-04-21 02:03:13
質問
変更点をチェックすると正しく動作しないスクリプトがあります。
こんな感じでやってみました。
VN=$(git describe --abbrev=7 HEAD 2>/dev/null)
git update-index -q --refresh
CHANGED=$(git diff-index --name-only HEAD --)
if [ ! -z $CHANGED ];
then VN="$VN-mod"
fi
最後のコミット以降に変更があったかどうかをブール値でチェックする方法はありますか?あるいは、ローカルリポジトリに新しい変更があったかどうかを実際にテストする方法はありますか?
私は、(ここのどこかで見つけた)バージョン作成スクリプトのために、このすべてをやっています。
どのように解決するのですか?
あなたがやっていることはほとんどうまくいきます。
$CHANGED
が空の場合、そして
-z
は、空であることをテストする、つまり変更がないことを意味します。あなたが言いたかったのは
if [ -n "$CHANGED" ]; then
VN="$VN-mod"
fi
Gitの引用
GIT-VERSION-GEN
:
git update-index -q --refresh
test -z "$(git diff-index --name-only HEAD --)" ||
VN="$VN-dirty"
それをコピーしていたように見えますが、その引用のディテールを忘れていただけなのです。
もちろん、このままでもいいのですが。
if git diff-index --quiet HEAD --; then
# No changes
else
# Changes
fi
あるいは、「何かが変わった」というケースだけを気にするのであれば。
if ! git diff-index --quiet HEAD --; then
VN="$VN-mod"
fi
使用方法
--quiet
は、Git がひとつの diff に遭遇するとすぐに処理を停止することができるという利点があるので、ワークツリー全体をチェックする必要はないかもしれません。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] ステージングされた変更を表示するにはどうしたらいいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Git リポジトリに空のディレクトリを追加するには?
-
[解決済み】ローカルの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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み】git rev-parseは何をするのですか?
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] ERROR: リモートレポ 'origin' のクローン作成に失敗しました。
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] git update-index --assume-unchanged <file> を元に戻す。