Git добавить и зафиксировать в одной команде

Есть ли способ, которым я могу сделать

git add -A
git commit -m "commit message"

в одной команде?

Кажется, я много выполняю эти две команды, и если у Git есть такая опция, как git commit -Am "commit message"Это сделало бы жизнь намного удобнее.

git commit имеет -a модификатор, но это не совсем то же самое, что и git add -A до совершения. git add -A добавляет вновь созданные файлы, но git commit -am не. Что значит?

32 ответа

Решение

Вы можете использовать псевдонимы git, например

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

и использовать его с

git add-commit -m 'My commit message'

РЕДАКТИРОВАТЬ: Возврат к тикам ('), в противном случае это не удастся для расширения оболочки в Linux. В Windows следует использовать двойные кавычки (") вместо этого (указано в комментариях, не проверено).

git commit -a -m "message"

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

git add .
git commit -m "message"

это простой способ добавить все файлы, новые или измененные. также применяется вышеуказанная квалификационная квалификация. не удалит файлы, удаленные без git rm команда.

git add app
git commit -m "message"

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

Проще всего это сделать:

git commit -am "Your commit message"

Я не понимаю, почему мы все усложняем.

Чтобы держать его в одной строке, используйте:

git add . && git commit -am "comment"

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

Только адаптируя ответ Алеса и комментарий придворных к linux bash:

Чтобы держать его в одной строке, используйте:

git commit -am "comment"

Эта строка добавит и зафиксирует все изменения в хранилище.

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

git add . ; git commit -am "message"

Просто объедините ваши команды:

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

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

git commit -a -m "commit message"

Дополнительно вы псевдоним:

[alias]
    ac = commit -a -m

Тогда вы можете использовать это так:

git ac "commit message"

Я надеюсь, что это кому-то поможет, и, пожалуйста, не стесняйтесь редактировать или улучшать. Я не уверен, какой способ самый быстрый, но это, безусловно, упрощает мой процесс фиксации кода за счет использования "ohmyzsh" для Git.

https://ohmyz.sh/

  • git add . сокращается до ga .
  • git commit -m "message" сокращается до gc -m "message"
  • git push сокращается до gp

Уверен, что вы можете использовать:

git commit -am "commit all the things"

На моей машине Windows я настроил это .bashrc псевдоним, чтобы сделать весь процесс более простым.

  • создать / найти свой .bashrc - обратитесь так поток
  • добавить следующую строку в файл

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    

    это делает мерзавец добавить коммит и нажать. настроить его любым способом, скажем, вы не хотите, чтобы команда push удалила эту часть

  • перезагружать .bashrc / закройте и снова откройте вашу оболочку

  • Теперь вы можете сделать весь процесс с gacp командование

У меня есть эта функция в моем .bash_profile или же .profile или же .zprofile или что бы то ни было получено в логинах:

function gac () {
  # Usage: gac [files] [message]
  # gac (git add commit) stages files specified by the first argument
  # and commits the changes with a message specified by the second argument.
  # Using quotes one can add multiple files at once: gac "file1 file2" "Message".
  git add $1 && git commit -m "$2"
}

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

git commit -m "message" .     

Обратите внимание на "." в конце... который также может быть путем к файлу / каталогу

Если вы введете:

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

однажды вам нужно будет просто набрать

git a

каждый раз:

git a 'your comment'

Я делаю снаряд

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"

сохранить, например, git.sh и позже вызвать:

sh git.sh your commit message

Некоторые говорят, что git commit -amсделает свое дело. Это не сработает, потому что он может фиксировать изменения только в отслеживаемых файлах, но не добавляет новые файлы. Источник.

После некоторого исследования я решил, что для этого нет такой команды, но вы можете написать сценарий на своем .bashrc или же .bash_profile в зависимости от вашей ОС.

Поделюсь тем, которым пользуюсь:

      function gac {
  if [[ $# -eq 0 ]]
    then git add . && git commit
  else
    git add . && git commit -m "$*"
  fi
}

После этого все ваши изменения будут добавлены и зафиксированы, вы можете просто ввести gac и вам будет предложено написать сообщение фиксации

Или вы можете ввести сообщение о фиксации напрямую gac Hello world, все ваши изменения будут добавлены, и ваше сообщение фиксации будет Hello world , обратите внимание, что "" не используются

Вы можете использовать -a

git commit -h

...
Commit contents options
    -a, -all    commit all changed files
...

git commit -a # It will add all files and also will open your default text editor.

На случай, если кто-то захочет "добавить и зафиксировать" для одного файла, что было в моём случае, я создал скрипт, сделанный ниже:

#!/bin/bash

function usage {
    echo "Usage: $(basename $0) <filename> <commit_message>"    
}

function die {
    declare MSG="$@"
    echo -e "$0: Error: $MSG">&2
    exit 1
}

(( "$#" == 2 )) || die "Wrong arguments.\n\n$(usage)"

FILE=$1
COMMIT_MESSAGE=$2

[ -f $FILE ] || die "File $FILE does not exist"

echo -n adding $FILE to git...
git add $FILE || die "git add $FILE has failed."
echo done

echo "commiting $file to git..."
git commit -m "$COMMIT_MESSAGE" || die "git commit has failed."

exit 0

Я назвал его "gitfile.sh" и добавил его в свой $PATH. Затем я могу запустить git add и commit для одного файла в одной команде:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"
  1. Создайте псевдоним в bash:alias gac="git add -A && git commit -m"

    (Я назвал ярлык "gac", но вам не обязательно)

  2. Используй это: gac 'your commit message here'

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

1.git add .
2.git commit -m "no bugs please"
3.git push origin *

где * основан на ветке, на которую вы нажимаете, а также сообщения фиксации всегда можно изменить в соответствии с контекстом.

Я использую следующее (оба находятся в стадии разработки, поэтому я постараюсь не забыть обновить это):

# Add All and Commit
  aac = !echo "Enter commit message:" && read MSG && echo "" && echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"$MSG\" && echo "" && echo "New status:" && echo "===========" && git status

# Add All and Commit with bumpted Version number
  aacv = !echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"Bumped to version $(head -n 1 VERSION)\" && echo "" && echo "New status:" && echo "===========" && git status

С echo "Enter commit message:" && read MSG часть вдохновлена ​​Sojan V Jose

Я хотел бы получить if else там, чтобы я мог получить aacv, чтобы спросить меня, хочу ли я развернуть, когда это будет сделано, и сделать это для меня, если я наберу 'y', но я думаю, я должен поместить это в свой .zshrc файл

I use this git alias:

git config --global alias.cam '!git commit -a -m '

So, instead of call

git add -A && git commit -m "this is a great commit"

Я просто делаю:

git cam "this is a great commit"

Сначала проверьте, какие псевдонимы у вас есть...

git config --get-regexp alias

Если его там нет, вы можете создать свой собственный (ссылка: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases)

// git add

git config --global alias.a '!git add -A'

// git commit

git config --global alias.c '!git commit'

// git commit -m

git config --global alias.cm '!git commit -m'

// git add commit

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

// git add commit -m

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

Например, если вы используете последний...

git acm 'My commit'

Для серебряных спинок в толпе, которые привыкли к таким вещам, как Subversion... сделать "фиксацию" в старом смысле этого слова (то есть - или в git speak - добавить, зафиксировать и нажать) в single step Я обычно добавляю что-то вроде следующего в корень моего проекта (как файл bat в Windows, например git-commit.bat). Затем, когда я хочу добавить, зафиксировать и нажать, я просто набираю что-то вродеgit-commit "Added some new stuff" и все это переходит в удаленное репо.

Кроме того, таким образом любой участник проекта может использовать то же самое без необходимости что-либо менять локально.

Я обычно тоже бегаю git config credential.helper store один раз, поэтому мне не нужно указывать uid/pwd при его запуске.

::
:: add, commit, and push to git
::

@echo off
echo.
echo.
echo 
echo Doing commit...
git add -A && git commit -m %1
echo.
echo.
echo Doing push...
git push
echo.
echo.
echo Done.
echo.

Я использую следующий псевдоним для добавления всех и принятия:

git config --global alias.ac '!git add -A && git commit -a'

Затем, набрав:

git ac

Я получаю окно vim, чтобы получить больше инструментов для редактирования моего сообщения коммита.

Вы можете использовать git commit -am "[comment]" // лучшее решение или git add . && git commit -m "[comment]"

Чтобы добавить изменения, а также исправить последнее сообщение фиксации:

      git commit -a --amend --no-edit 

Или, возможно, обновите его:

      git commit -a --amend -m "new commit message" 

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

Следующий скрипт bash добавляет и фиксирует файлы одной командой. ЭТО НЕ ДОБАВЛЯЕТ ВСЕ ФАЙЛЫ, а просто добавляет файлы, которые вы указываете в командной строке. Это можно легко изменить, чтобы добавить все файлы, если файлы не указаны в командной строке. Однако мне это кажется немного опасным, поэтому я этого не делал.

      #!/bin/bash

if [[ $# -lt 2 ]]
then
    echo "Usage:  $(basename $0) FILENAME+ \"COMMIT_MESSAGE\""
    echo 
    echo 'Shorthand for "git add FILENAME_0 FILENAME_1 .. FILENAME_n && git commit -m "COMMIT MESSAGE".'
    echo 'You must specify at least one filename, and supply one single commit message.'
    echo 
else    
    git add ${*: 1: $#-1} && git commit -m "${*: -1}"
fi

Сохраните его в файл с именем gac, скажем, и используйте его так:

      gac file_a file_b file_c "adding three files because.. reasons"

Копирую работу @LuisEnMarroquin в этой теме.

Этот результат- Попробуйте это: Простой скрипт одна команда для git add, git commit и git push

Откройте свой CMD в Windows и вставьте этот ответ

git commit -m "your message" . && git push origin master

Вот пример моего снимка экрана:

  1. тип git add . && git commit -am и введите
  2. тип historyи введите
  3. запомните номер для вышеуказанной команды, скажем, номер 543
  4. Отныне для каждого типа коммита !543 "your comment here" т.е. восклицательный знак + номер и пробел и ваш комментарий.

Я создал репо с открытым исходным кодом, вдохновленный ответом Ленара Хойта :

репо: https://github.com/devpolo/gac

Пример

      gac n final version

# equals to:
git add -A
git commit -m "🚀 NEW RELEASE: final version"

Доступные команды

      gac
# print available semantics

gac <your message>
# <your message>

gac b <your message>
# 🐛 BUG FIX: <your message>

gac c <your message>
# 📦 CHORE: <your message>

gac d <your message>
# 📖 DOCS: <your message>

gac f <your message>
# ✅ FEAT: <your message>

gac n <your message>
# 🚀 NEW RELEASE: <your message>

gac i <your message>
# 👌 IMPROVE: <your message>

gac r <your message>
# 🪚 REFACTOR: <your message>

gac s <your message>
# 🎨 STYLE: <your message>

gac t <your message>
# 🧪 TEST: <your message>

gac w <your message>
# 🛠 WORKING ON: <your message>
Другие вопросы по тегам