我正在编写一个脚本来执行此操作:
#!/bin/bash
mysqldump -u user -p database > db_file
git add db_file
git commit -m 'db_file updated by script'
但是,如果运行此脚本时索引是脏的怎么办?也就是说,如果我已经git add
编辑了我希望在此脚本运行时没有自动提交的文件,该怎么办?我能做到这一点:
#!/bin/bash
mysqldump -u user -p database > db_file
git stash
git add db_file
git commit -m 'db_file updated by script'
git stash apply
但现在的问题是,如果索引和工作树不脏,那么git stash不会向存储列表添加任何内容,但git stash apply
将错误地应用任何内容在藏匿之上并丢弃那个藏匿的历史。
如何根据索引是否为脏来生成bash条件?
答案 0 :(得分:1)
git diff --cached --quiet
上一个回答:
git diff --cached
将准确显示我想知道的内容。唯一的问题是无论如何返回值都是真的,因此很难有条件地做到这一点。如果没有更好的答案,那么我可以将输出转储到文件中并在文件为空时创建条件。但这听起来很痛苦。当然有更好的方法。
答案 1 :(得分:0)
您可以解析git status -s
的输出。
if git status -s | grep -q '^.M'
then
# ...
fi