2014-09-12 3 views
1

Я хотел бы использовать git как автоматическую историю папок. Мой поток больше или меньше, как показано ниже:Зафиксировать все изменения в папке git repository

изменение
  1. Сделать в некоторых файлах
  2. Git совершить
  3. Выполните мою команду (например vagrant up или vagrant provision)

идеи, которые приходят к мой разум: 1. Создайте псевдоним для моей команды (в bash или powershell в зависимости от ОС) 2. В псевдонимах всегда выполняйте git add . и git commit -m "txt" и после этого выполните команду «real»

Но выше идея выглядит довольно уродливо (например, «txt» всегда статична и ничего не описывает). Кто-нибудь видит что-то лучше?

ответ

1

Можно определить функции bash для создания более продвинутых псевдонимов.

В вашем случае это может выглядеть следующим образом:

[alias] 
    ... 
    my_alias = "!f() { git add "./$GIT_PREFIX"; git commit -m '$1'; vagrant up; }; f" 

! говорит мерзавца выполнить псевдоним на баш (не мерзавец псевдоним)

git my_alias "my commit message" 

Это добавит все файлы в текущем каталоге и его подкаталоге, передать их с указанным сообщением и начать с vagrant.

С другой стороны, такая без мерзавец псевдоним всегда будет выполняться в корневом каталоге репозитория, что означает, что использование git add . приведет весь репозиторий добавляется в индекс.

В настоящее время я не вижу простого способа обойти это ограничение, поэтому вам, вероятно, придется добавить файлы, о которых идет речь, прежде чем они будут введены вручную.

EDIT Этан упомянул о имеющейся переменной GIT_PREFIX именно для этой цели. Я отредактировал ответ соответственно.

+1

Это переменная 'GIT_PREFIX' предназначена для использования в командах с псевдонимом оболочки ... что, как утверждается, нет оснований для того, чтобы сделать это псевдонимом git, а не псевдонимом оболочки, который не нужно использовать' GIT_PREFIX 'и может просто работать с текущим каталогом. –

+0

@ EtanReisner приятно знать о 'GIT_PREFIX'. Создание псевдонима git вместо псевдонима оболочки делает его независимым от платформы и делает его, например, легко доступным в * Powershell * или * CMD *. Я думаю, что это преимущество. –

+0

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

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