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"
Создайте псевдоним в bash:
alias gac="git add -A && git commit -m"
(Я назвал ярлык "gac", но вам не обязательно)
Используй это:
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
- тип
git add . && git commit -am
и введите - тип
history
и введите - запомните номер для вышеуказанной команды, скажем, номер
543
- Отныне для каждого типа коммита
!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>