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

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

17 ответов

Решение

Есть ли

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

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


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

-A, --all, --no-игнорировать-удаление

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

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

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

git commit -am  "<commit message>"

От человека гит-коммит:

   -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.

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

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

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

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

git coa "A bunch of horrible changes"

НОТА: coa сокращение от совершать все и может быть заменено всем, что душе угодно

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

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

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

> gcaa This is the commit message

Автоматически ставить и фиксировать все файлы.

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

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

http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit

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

git commit -am  "<commit message>"

Из руководства 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.

вот ссылка на документацию git

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

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

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

    git add -A
    

    или же

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

    git commit
    

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

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

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

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

Запустить данную команду

git add . && git commit -m "Changes Committed"

Однако, даже если это кажется одной командой, две отдельные команды запускаются одна за другой. Здесь мы просто использовали&& объединить их. Это не сильно отличается от бега git add . а также git commit -m "Changes Committed"раздельно. Вы можете запускать несколько команд вместе, но здесь важна последовательность. Как, если вы хотите отправить изменения на удаленный сервер вместе с постановкой и фиксацией, вы можете сделать это, как указано,

git add . && git commit -m "Changes Committed" && git push origin master

Вместо этого, если вы измените последовательность и поставите push to first, он будет выполнен первым и не даст желаемого толчка после постановки и фиксации только потому, что он уже был запущен первым.

&& запускает вторую команду в строке, когда первая команда возвращается успешно или с уровнем ошибки 0. Противоположность && является ||, который запускает вторую команду, когда первая команда неуспешна или с уровнем ошибки 1.

В качестве альтернативы вы можете создать alise какgit config --global alias.addcommit '!git add -a && git commit -m' и использовать его как git addcommit -m "Added and commited new files"

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

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

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

git foo

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

git coa "my changes are..."

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

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

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

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

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

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

git-acc "<commit message>"

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

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

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

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

      git commit . -m "message"

Попробуйте использовать:

git add . && git commit -m "your message here"

Вот сценарий оболочки, который делает что-то похожее. В настоящее время он не фиксирует недавно добавленные файлы (добавить эту функцию должно быть легко), но он фиксирует все остальное. Кроме того, он рекурсивно обращается к подмодулям Git. Предполагаемый сценарий использования так же прост, как

      $ git powercommit

Самый простой способ — использовать следующую команду дляaddиcommitизменения одной командой:

      git commit -a -m "your commit message"

ВНИМАНИЕ ! Это не приведет к фиксации неотслеживаемых файлов.

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

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

Вам вообще не нужно использовать git add. Вы можете добавлять файлы с помощью самого git commit. Например:

git commit -m "comments" filename(s)

У меня сработало

Другие вопросы по тегам