Перехват "git commit -a (m)" - PullRequest
       1

Перехват "git commit -a (m)"

2 голосов
/ 30 ноября 2010

Мне нравятся мелкозернистые коммиты, которые разрешает индекс git, т. Е. Подготовка отдельных файлов или даже фрагменты через git add перед финальным коммитом.К сожалению, иногда после того, как я потратил некоторое время на постановку определенного коммита, включается мышечная память, так что я git commit -a -m "msg".Тогда мне придется либо смириться с этим, либо прыгнуть через несколько reset или --amend обручей.

Есть ли способ для меня (в идеале, глобально) настроить Git так, чтобы, если я выдаю git commit -a, он был перехвачен?Может быть, сценарий с просьбой подтвердить, действительно ли я хочу передать все?Я думал о делегировании операции commit скрипту-обёртке (например, «gitcommit»), но не думаю, что это будет работать очень хорошо, так как это не мешает мне делать git commit -a -m "msg", что является проблемой в первомместо.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2010

Попробуйте pre-commit hooks :

что-то вроде этого (не проверено)

.git / hooks / pre-commit

#!/bin/sh
git diff-files --quiet    # check if the working directory have non-staged files
DIRTY_WORKING=$?

if [ ! $DIRTY_WORKING ] ; then        #  check if we are committing all files
   # list all files to be committed
   git diff-index --name-status --cached HEAD

   echo "Are you sure? (type YES to continue)"
   read VALUE
   [ "x$VALUE" != "xYES" ]
   exit $?
fi
exit 0

Вы можете узнать количество файлов для фиксации, используя git diff-index --cached HEAD | wc -l.Но я думаю, что оставил бы это для себя.

1 голос
/ 30 ноября 2010

Один из способов - сделать git псевдонимом, запускающим созданный вами скрипт, который просматривает аргументы командной строки и позволяет узнать, набрали ли вы commit, а затем -a в командной строке.

Лично я никогда не использую commit -a и вместо этого всегда использую git add -u плюс git commit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...