Огорчает то, что раньше это было возможно и было стандартным синтаксисом для фиксации и добавления любых новых файлов: git commit -a Но при правильном формировании синтаксис git изменился. Это смутило существующих пользователей (и сломало их скрипты), устранило полезную функциональность и заменило ненужный флаг.
Fijiaaron
1
Есть дубликат этого в git add -A, git commit в одной команде? , Принятый ответ здесь аналогичен принятому ответу, но предлагает создать псевдоним git, чтобы сократить время ввода (и показывает, как это сделать).
Обновите индекс не только там, где в рабочем дереве есть соответствие файла, но также там, где в индексе уже есть запись. Это добавляет, изменяет и удаляет записи индекса в соответствии с рабочим деревом.
Если не задано no <pathspec>при использовании опции -A, обновляются все файлы во всем рабочем дереве (старые версии Git использовались для ограничения обновления текущим каталогом и его подкаталогами).
@NarendraJaggi git add -A && git commit -m "Твое сообщение"
Dr.jacky
1
можно поместить это в свой собственный файл .sh или .bat и просто использовать его как одну команду. Сообщение может быть param1
BlueWizard
А также вы можете добавить ярлыки для основных команд git в ваш .bashrc: псевдоним gpl = 'git pull' псевдоним gps = 'git push' псевдоним gc = 'git commit' псевдоним gs = 'git status' псевдоним gd = 'git diff' псевдоним ga = 'git add' псевдоним gck = 'git checkout' псевдоним gb = 'git branch' псевдоним gl = 'git log' псевдоним lcp = 'git format-patch -1 HEAD' псевдоним resetToMaster = 'git reset --hard origin / master '
ni3
3
В powershell заменить "&&" на ";" запустить обе команды, например так:git add -A ; git commit -m "Your Message"
Рафаэль
415
Эта команда добавит и зафиксирует все измененные файлы, но не вновь созданные файлы .
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.
Это на самом деле не отвечает на вопрос, на самом деле конкретно (не менее жирным шрифтом) исключается одна из ключевых частей искомого решения.
Арунас
6
Не добавляет и не фиксирует неотслеживаемые файлы.
b15
3
Но он охватывает наиболее типичную ситуацию, когда вы фиксируете после «git add -A» и замечаете, что вы забыли изменить что-то маленькое в коде. Я ненавижу писать одно и то же сообщение о
коммите
но
автор
А также вы можете добавить ярлыки для основных команд git в ваш .bashrc: псевдоним gpl = 'git pull' псевдоним gps = 'git push' псевдоним gc = 'git commit' псевдоним gs = 'git status' псевдоним gd = 'git diff' псевдоним ga = 'git add' псевдоним gck = 'git checkout' псевдоним gb = 'git branch' псевдоним gl = 'git log' псевдоним lcp = 'git format-patch -1 HEAD' псевдоним resetToMaster = 'git reset --hard origin /мастер'
ni3
26
Я использую эту функцию:
gcaa() { git add --all && git commit -m "$*" }
В моем файле конфигурации Zsh, так что я могу просто сделать:
После выполнения этой команды вы можете просто набрать, git tempчтобы git автоматически зафиксировал все ваши изменения в текущей ветке как коммит с именем «Temp». Затем вы можете использовать git reset HEAD~позже, чтобы «отменить» изменения, чтобы продолжить работу над ними, или git commit --amendдобавить больше изменений в коммит и / или дать ему правильное имя.
Я бы не хотел работать с репозиторием, заполненным сообщениями коммита «Нет», и я бы также отклонял любые PR на этой основе. К сожалению, единственный способ узнать важность наличия хороших коммит-сообщений - это когда вам нужно вернуться, чтобы проверить что-то написанное давным-давно («эта строка вызывает ошибку ... почему она была даже добавлена, и будет ли что-нибудь сломать, если я его поменяю / уберу? ").
gregmac
1
Комитеты с «none» никогда не предназначены для длительного проживания. Обычно я запускаю свою собственную ветку функций, выполняю микро-коммиты и делаю их более разумными перед слиянием. Очевидно, что люди, которые делают коммиты для каждой модифицированной функции и не возражают против полноценного журнала git, не нуждаются в этом.
SystematicFrank
1
Я использую «wip» (сокращение от «работа в процессе») вместо «none» для этой цели, и я только помещаю такие коммиты в свои частные ветки.
Сергей Кошчеев
Это по-прежнему бесполезно, потому что в конечном итоге те коммиты "wip" или "none" превратят его в ветку, которую видят другие люди, и будут загрязнять журнал сообщений. Если вы раздавили все свои коммиты до того, как нажали, это было бы приемлемо, но в остальном это все равно раздражает команду.
Иордания,
Это отличная идея, и, сочетая ее со следующим ответом, вы можете получить 100% точный ответ для ОП. Я на самом деле изложил необходимые шаги (используя git-bash) в своем ответе. ( stackoverflow.com/a/43442269/869239 )
VeRo
3
Запустите данную команду
git add .&& git commit -m "Changes Committed"
Однако, даже если кажется, что это одна команда, это две отдельные команды, запускаемые одна за другой. Здесь мы просто привыкли &&их объединять. Это не сильно отличается от бега
git add .и git commit -m "Changes Committed"отдельно. Вы можете запустить несколько команд вместе, но последовательность имеет значение здесь. Как, если вы хотите отправить изменения на удаленный сервер вместе с подготовкой и фиксацией, вы можете сделать это, как указано,
Вместо этого, если вы измените последовательность и поместите ее pushв первую очередь, она будет выполнена первой и не даст желаемого толчка после постановки и фиксации только потому, что она уже была запущена первой.
&& запускает вторую команду в строке, когда первая команда возвращается успешно или с уровнем ошибки 0. Противоположность && является|| , что вторая команда выполняется, когда первая команда не выполнена, или с уровнем ошибки 1.
В качестве альтернативы, вы можете создать alise as git config --global alias.addcommit '!git add -a && git commit -m'и использовать его какgit addcommit -m "Added and commited new files"
Вы можете написать небольшой скрипт (посмотрите на ответ Яна Клелланда), git-commitallкоторый использует несколько команд git для выполнения того, что вы хотите сделать.
Разместите этот скрипт в любом месте вашего $PATH. Вы можете позвонить по этомуgit commitall ... очень удобно!
Нашел здесь (вопрос и все ответы к сожалению удалены, виден только с высокой репутацией)
Вся тема - хорошее чтение ... вот почему я связал ее ^^
tanascius
@Dimitri - к сожалению, некоторые изумительные люди решили удалить эту полезную ветку. Это все еще видно с высокой репутацией, поэтому я держу ссылку здесь.
Ответы:
Имеет ли
считать "единой командой"?
Редактировать на основе ответа @ thefinnomenon ниже :
Чтобы иметь это как
git alias
, используйте:и передайте все файлы, включая новые, с сообщением:
Пояснение (из
git add
документации ):источник
git add -A ; git commit -m "Your Message"
Эта команда добавит и зафиксирует все измененные файлы, но не вновь созданные файлы .
От человека гит-коммит:
источник
Я использую эту функцию:
В моем файле конфигурации Zsh, так что я могу просто сделать:
Автоматически ставить и фиксировать все файлы.
источник
function gcaa() { git add --all && git commit -m "$*" && git push }
gaa && gc -m "my commit"
но это намного приятнее ... <поспешил изменить bashrc ..>Один вкладыш для размещения ВСЕХ файлов ( измененных , удаленных и новых ) и фиксации с комментарием:
http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit
источник
Не уверен, почему все эти ответы танцуют вокруг того, что я считаю правильным решением, но то, что он стоит здесь, это то, что я использую:
Создать псевдоним:
Добавить все файлы и зафиксировать с сообщением:
ПРИМЕЧАНИЕ:
coa
это сокращение от «совершать все» и может быть заменено всем, что душе угодноисточник
git alias
путь, остальное скучно.Фиксация в git может состоять из нескольких шагов или одного шага в зависимости от ситуации.
В этой ситуации вы обновили несколько файлов и хотите зафиксировать:
Вы должны добавить все измененные файлы, прежде чем что-либо зафиксировать.
или
После этого вы можете использовать коммит всех добавленных файлов
с этим вы должны добавить сообщение для этого коммита.
источник
Если вы просто хотите «быстрый и грязный» способ сохранить изменения в текущей ветке, вы можете использовать следующий псевдоним:
После выполнения этой команды вы можете просто набрать,
git temp
чтобы git автоматически зафиксировал все ваши изменения в текущей ветке как коммит с именем «Temp». Затем вы можете использоватьgit reset HEAD~
позже, чтобы «отменить» изменения, чтобы продолжить работу над ними, илиgit commit --amend
добавить больше изменений в коммит и / или дать ему правильное имя.источник
У меня в конфиге два псевдонима:
если мне лень, я просто фиксирую все изменения
и просто сделать быстрый коммит
coa означает «совершить все»
источник
Запустите данную команду
Однако, даже если кажется, что это одна команда, это две отдельные команды, запускаемые одна за другой. Здесь мы просто привыкли
&&
их объединять. Это не сильно отличается от бегаgit add .
иgit commit -m "Changes Committed"
отдельно. Вы можете запустить несколько команд вместе, но последовательность имеет значение здесь. Как, если вы хотите отправить изменения на удаленный сервер вместе с подготовкой и фиксацией, вы можете сделать это, как указано,Вместо этого, если вы измените последовательность и поместите ее
push
в первую очередь, она будет выполнена первой и не даст желаемого толчка после постановки и фиксации только потому, что она уже была запущена первой.&&
запускает вторую команду в строке, когда первая команда возвращается успешно или с уровнем ошибки 0. Противоположность&&
является||
, что вторая команда выполняется, когда первая команда не выполнена, или с уровнем ошибки 1.В качестве альтернативы, вы можете создать alise as
git config --global alias.addcommit '!git add -a && git commit -m'
и использовать его какgit addcommit -m "Added and commited new files"
источник
Отличные ответы, но если вы ищете одну строку, делайте все, вы можете объединить, псевдоним и наслаждаться удобством:
git add * && git commit -am "<commit message>"
Это одна строка, но две команды, и, как уже упоминалось, вы можете использовать псевдонимы этих команд:
alias git-aac="git add * && git commit -am "
(пробел в конце важен), потому что вы собираетесь параметризировать новую короткую команду.С этого момента вы будете использовать этот псевдоним:
git-acc "<commit message>"
Вы в основном говорите:
git, добавьте для меня все неотслеживаемые файлы и передайте их с помощью данного сообщения коммита.
Надеюсь, вы используете Linux, надеюсь, это поможет.
источник
Вы можете написать небольшой скрипт (посмотрите на ответ Яна Клелланда),
git-commitall
который использует несколько команд git для выполнения того, что вы хотите сделать.Разместите этот скрипт в любом месте вашего
$PATH
. Вы можете позвонить по этомуgit commitall
... очень удобно!Нашел здесь (вопрос и все ответы к сожалению удалены, виден только с высокой репутацией)
источник
попробуйте использовать:
источник