2014-10-08 3 views
3

Признаюсь, что я иногда использую git commit -a, когда не должен. Он получил рефлекс примерно в половине случаев, часто, когда я думаю Я работаю в отдельных хранилищах - но я на самом деле работаю в гораздо большем, что будет влиять на каталоги далеко и широко.Как я могу заставить себя использовать 'git commit -a'?

Есть ли способ .git/config Я могу указать, что приведет к ошибке -a?

+0

None, что я могу видеть. Вы можете взломать commit.c об этом. –

+0

related: http://stackoverflow.com/questions/25884007/disable-git-add-command/25886149#25886149 – Jubobs

+0

Может ли кто-нибудь указать мне в сторону чего-то, что иллюстрирует, почему -a плохо? –

ответ

1

Есть ли параметр .git/config Я могу указать, что приведет к ошибке -a для ошибки?

Не то, чтобы я знал.

Вам понадобится обертка для git, которая проверит аргументы («commit», «-a», ...), а по конкретной команде «commit -a» выдает ошибку.

Jubobs 'script (упомянутый в comment above) является хорошим примером такой обертки.

1

Нет, в конфигурации git нет ничего, что сделает это. Однако есть решение, и это git-крючки.

Git hooks - это скрипты, которые выполняются до или после выполнения команды git - например, есть крючок, который не выполняет вашу фиксацию, если нет сообщения о фиксации. Таким образом, вы можете написать крюк costum для ваших потребностей, который падает, когда фиксация неаккуратная.

Однако, лично, я бы не отказался от этого, но скорее покажу дополнительную подсказку (например, «Вы уверены?»/«N»). Подумайте об этом, вы действительно хотите заблокировать функциональность навсегда?

Подробнее: http://git-scm.com/book/en/Customizing-Git-Git-Hooks

удачи!

+0

И как вы получаете команду git и опции в крючке? –

+0

Это сработало бы, если бы у меня был простой способ обнаружить «неряшливый» фиксаж, но при этом большая логика казалась расточительной, когда я мог сделать это другим, более простым способом. Но спасибо за эту идею, она хорошая! –

2

Благодаря VonC, я изрубил функцию я застрял в моем файле гс:

git() { 
    if [[ ($1 == "add") || ($1 == "stage") || ($1 == "commit") ]]; then 
     if [[ [email protected] == *-a* ]]; then 
      echo "Don't use 'git $1 -a'."; 
     else 
      command git "[email protected]"; 
     fi 
    else 
     command git "[email protected]"; 
    fi; 
} 
+0

Отлично. Это выглядит хорошо. +1 – VonC

Смежные вопросы