Как я могу подготовить и зафиксировать все файлы, включая вновь добавленные, с помощью одной команды? - PullRequest
364 голосов
/ 10 марта 2010

Как я могу подготовить и зафиксировать все файлы, включая вновь добавленные, одной командой?

Ответы [ 10 ]

499 голосов
/ 10 марта 2010

делает

git add -A && git commit -m "Your Message"

считать "одиночной командой"?

Редактировать на основе ответа @ thefinnomenon ниже :

Чтобы иметь его как git alias, используйте:

git config --global alias.coa '!git add -A && git commit -m'

и передайте все файлы, включая новые, с сообщением:

git coa "A bunch of horrible changes"

Пояснение (из git add документация ):

-A, --all, --no-ignore-Removal

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

Если <pathspec> не задано при использовании опции -A, все файлы в все рабочее дерево обновляется (старые версии Git использовались для ограничения обновить до текущего каталога и его подкаталогов).

401 голосов
/ 27 июля 2011

Эта команда добавит и зафиксирует все измененные файлы, , но не вновь созданные файлы .

git commit -am  "<commit message>"

От man git-commit:

   -a, --all
       Tell the command to automatically stage files that have been modified
       and deleted, but new files you have not told Git about are not
       affected.
23 голосов
/ 10 июля 2014

Я использую эту функцию:

gcaa() { git add --all && git commit -m "$*" }

В моем файле конфигурации zsh, так что я могу просто сделать:

> gcaa This is the commit message

Для автоматической постановки и фиксации всех файлов.

22 голосов
/ 18 ноября 2014

Однострочное оформление для ВСЕХ файлов ( изменение , удаление и new ) и фиксация с комментарием:

git add --all && git commit -m "comment"

http://git -scm.com / документы / ГИТ-добавить
http://git -scm.com / документы / ГИТ-совершающие

13 голосов
/ 14 июня 2017

Не знаю, почему все эти ответы танцуют вокруг того, что я считаю правильным решением, но то, что стоит здесь, это то, что я использую:

Создать псевдоним:

git config --global alias.coa '!git add -A && git commit -m'

Добавить все файлы и зафиксировать с сообщением:

git coa "A bunch of horrible changes"

ПРИМЕЧАНИЕ: coa означает «совершить все» и может быть заменено на все, что душе угодно

8 голосов
/ 14 июня 2012

Фиксация в git может состоять из нескольких шагов или одного шага в зависимости от ситуации.

  1. В этой ситуации вы обновили несколько файлов и хотите совершить:

    Вы должны добавить все измененные файлы, прежде чем что-либо фиксировать.

    git add -A
    

    или

    git add --all
    
  2. После этого вы можете использовать коммит всех добавленных файлов

    git commit
    

    с этим вы должны добавить сообщение для этого коммита.

5 голосов
/ 26 января 2013

Если вы просто хотите «быстрый и грязный» способ сохранить изменения в текущей ветке, вы можете использовать следующий псевдоним:

git config --global alias.temp '!git add -A && git commit -m "Temp"'  

После выполнения этой команды вы можете просто набрать git temp, чтобы git автоматически зафиксировал все ваши изменения в текущей ветке в виде коммита с именем «Temp». Затем вы можете использовать git reset HEAD~ позже, чтобы «отменить» изменения, чтобы продолжить работу над ними, или git commit --amend, чтобы добавить больше изменений в коммит и / или дать ему правильное имя.

3 голосов
/ 17 апреля 2017

Отличные ответы, но если вы ищете одну строку, делайте все, вы можете объединить, псевдоним и наслаждаться удобством:

git add * && git commit -am "<commit message>"

Это одна строка, но две команды, и, как уже упоминалось, вы можете использовать псевдонимы этих команд:

alias git-aac="git add * && git commit -am " (пробел в конце важен), потому что вы собираетесь параметризировать новую короткую команду.

С этого момента вы будете использовать этот псевдоним:

git-acc "<commit message>"

Вы в основном говорите:

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

Надеюсь, вы используете Linux, надеюсь, это поможет.

3 голосов
/ 01 октября 2011

У меня в конфиге два псевдонима:

alias.foo=commit -a -m 'none'
alias.coa=commit -a -m

если мне лень, я просто фиксирую все изменения с помощью

git foo

и просто сделать быстрый коммит

git coa "my changes are..."

coa означает "совершить все"

0 голосов
/ 10 марта 2010

Вы можете написать небольшой скрипт (посмотрите на ответ Яна Клелланда) с именем git-commitall, который использует несколько команд git для выполнения того, что вы хотите сделать.
Поместите этот скрипт в любое место вашего $PATH. Вы можете позвонить по номеру git commitall ... очень удобно!

Найдено здесь (вопрос и все ответы, к сожалению, удалены, виден только с высокой репутацией)

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