Git добавить, зафиксировать и нажать команды в одном?

Можно ли использовать эти три команды в одном?

git add .
git commit -a -m "commit" (do not need commit message either)
git push

Иногда я меняю только одну букву, добавление CSS или что-то в этом роде. Тем не менее, я должен написать все три команды, чтобы внести изменения. Есть много проектов, где я всего лишь один толкатель, поэтому эта команда была бы потрясающей!

Ответ 1

Создание ответа @Gavin:

Создание lazygit функции вместо псевдонима позволяет передать ему аргумент. Я добавил следующее в мой .bashrc(или .bash_profile, если Mac):

function lazygit() {
    git add .
    git commit -a -m "$1"
    git push
}

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

lazygit "My commit msg"

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

Ответ 2

В итоге я добавил псевдоним в мой файл .gitconfig:

[alias]
    cmp = "!f() { git add -A && git commit -m \"[email protected]\" && git push; }; f"

Использование: git cmp "Long commit message goes here"

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

Я думаю, что это лучшее решение, потому что вы контролируете, что такое сообщение фиксации.

Псевдоним может быть также определен из командной строки, это добавляет его в ваш .gitconfig:

git config --global alias.cmp '!f() { git add -A && git commit -m "[email protected]" && git push; }; f'

Ответ 3

Хотя я согласен с Уэйн Вернер в его сомнениях, это технически вариант:

git config alias.acp '! git commit -a -m "commit" && git push'

Определяет псевдоним, который запускает commit и push. Используйте его как git acp. Помните, что такие псевдонимы "shell" всегда запускаются из корня вашего репозитория git.

Другим вариантом может быть запись крюка post-commit, который делает push.

Ответ 4

Я думаю, вы можете неправильно понять рабочий процесс, для которого был разработан git. (Чтобы уточнить/исправить то, что я имел в виду в комментарии, вам не нужен git add ., поскольку commit -a обычно выполняет ту же задачу - добавление каких-либо изменений, которые еще не были поставлены, если файлы уже добавлены)

Обычно вы будете делать что-то вроде этого:

# make some changes
$ git commit -a -m "Changed something"
# make some more changes
$ git commit -a -m "Changed something else"

мойте, промойте, повторите, пока вы не закончите функцию X, или вы не остановитесь, или просто хотите, чтобы другие люди увидели, что вы сделали. Затем вы делаете

$ git push

Git не является SVN - но кажется, что вы пытаетесь использовать его как таковой. Вы можете найти некоторые из ресурсов в конце статьи здесь, чтобы использовать их.

Ответ 5

Я использую это в моем .bash_profile

gitpush() {
    git add .
    git commit -m "$*"
    git push
}
alias gp=gitpush

Выполняется как

gp A really long commit message

Не забудьте запустить source ~/.bash_profile после сохранения псевдонима.

Ответ 6

Вы можете использовать bash script, установить псевдоним для запуска любой команды или группы команд

git commit -am "your message" && git push 

Ответ 7

Установить как псевдоним в bash:

$ alias lazygit="git add .; git commit -a -m '...'; git push;";

Назовите его:

$ lazygit

(Чтобы сделать этот псевдоним постоянным, вы должны включить его в свой .bashrc или .bash_profile)

Ответ 8

Самое простое решение:

git commit -a -m "commit" && git push

git add уже содержится в параметре commit -a, но при желании вы можете подключить их все:

git add . && git commit -a -m "commit" && git push

Ответ 9

В Linux/Mac этот практичный вариант также должен работать

git commit -am "IssueNumberIAmWorkingOn --hit Enter key
> A detail here --Enter
> Another detail here --Enter
> Third line here" && git push --last Enter and it will be there

Если вы работаете с новой веткой, созданной локально, измените git push часть с помощью git push -u origin branch_name

Если вы хотите отредактировать сообщение о коммите в системном редакторе, тогда

git commit -a && git push 

откроет редактор, и как только вы сохраните сообщение, оно также будет отправлено.

Ответ 10

Вы можете попробовать gitu.

В первый раз (node js должен быть установлен):

npm install -g git-upload

После этого:

gitu COMMIT_MSG

Чтобы выполнить эти три команды сразу.

Хорошо, что вам не нужно беспокоиться, когда вы переустанавливаете свою систему или когда хотите сделать это на разных компьютерах, и не требуется модификация файла. Это также работает на разных платформах (не только Linux и Mac, но и Windows в командной строке, например cmd и powershell), просто вам нужно установить npm и nodejs (git конечно).

Ответ 11

Если файл уже отслеживается, вам не нужно запускать git add, вы можете просто написать git commit -am 'your message'

Если вы не хотите писать сообщение фиксации, вы можете подумать о том, чтобы сделать что-то вроде

git commit --allow-empty-message -am ''

Ответ 12

Как указано в ответе this, вы можете создать алиас git и назначить для него набор команд. В этом случае это будет:

git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'

и используйте его с

git add-com-push

Ответ 13

Я использую пакетный файл:

@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push

Ответ 14

Напишите небольшой скрипт с именем gitpush.sh со строками ниже и добавьте его в ~ директорию.

echo $1
git add .
git commit -m "$1"
git push

Теперь добавьте псевдоним в ~/.bashrc, как показано ниже:

alias gitpush='~/gitpush'

Теперь из любого git-репозитория просто напишите gitpush "message".

Ответ 15

Есть некоторые проблемы со сценариями выше:

shift "удаляет" параметр $1, в противном случае "push" читает его и "неправильно понимает".

Мой совет:

git config --global alias.acpp '! git add -A && & branchatu = "$ (gitsymbolic-ref HEAD 2 > /dev/null)" & & branchatu = ${branchatu ## refs/heads/} & & git commit -m "$ 1" && & сдвиг && git pull -u origin $branchatu && & gitpush -u origin $branchatu '

Ответ 16

Если вы хотите использовать svn-поведение git commit, используйте это в своих псевдонимах git в вашем .gitconfig

commit = "!f() { git commit \"[email protected]\" && git push; };f"

Ответ 17

Если вы используете рыбную скорлупу (ответ строится на btse):

Сохраните этот файл в "~/.config/fish/functions" как "quickgit.fish". Создайте каталог, если он не существует. '--git-dir = $ PWD/.git' Гарантирует, что мы запускаем команды git для проекта git, где мы вызвали функцию

function quickgit # This is the function name and command we call
    git --git-dir=$PWD/.git add . # Stage all unstaged files
    git --git-dir=$PWD/.git commit -a -m $argv # Commit files with the given argument as the commit message
    git --git-dir=$PWD/.git push # Push to remote
end

Перезапустите терминал, перейдите к проекту, внесите изменения, и теперь вы можете вызвать "quickgit" пример сообщения ". Изменения будут добавлены, зафиксированы и отправлены :).

Также можно найти в Гисте здесь: https://gist.github.com/Abushawish/3440a6087c212bd67ce1e93f8d283a69

Ответ 18

Уже есть много хороших решений, но вот решение, которое я считаю более элегантным для того, как я хочу работать:

Я поместил в свой путь скрипт под названием "git-put", который содержит:

#!/bin/bash
git commit "[email protected]" && git push -u

Это позволяет мне бежать:

git put -am "мое сообщение о коммите"

..добавить все файлы, зафиксировать их и отправить их.

(Я также добавил "-u", потому что мне все равно нравится это делать, хотя это не связано с этой проблемой. Это гарантирует, что ветвь вверх по течению всегда настроена для вытягивания.)

Мне нравится этот подход, потому что он также позволяет использовать "git put", не добавляя все файлы (пропустите "-a"), или с любыми другими опциями, которые я мог бы хотеть передать для фиксации. Кроме того, "put" - это короткое portmanteau из "push" и "commit"

Ответ 19

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

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

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

Вот пример моего снимка экрана: https://i.stack.imgur.com/2IZDe.jpg

Ответ 20

Я сделал это .sh script для команды

#!/bin/sh
cd LOCALDIRECTORYNAME/  
git config --global user.email "YOURMAILADDRESS"
git config --global user.name "YOURUSERNAME"
git init
git status
git add -A && git commit -m "MASSAGEFORCOMMITS"
git push origin master

Ответ 21

Так как вопрос не определяет какую оболочку, здесь версия eshell основана на более ранних ответах. Это относится к файлу псевдонимов eshell, который может быть в ~/.emacs.d/eshell/alias. Я добавил первую часть z https://github.com/rupa/z/, который позволяет быстро скопировать каталог в каталог, чтобы он мог запускаться независимо от того, каков ваш текущий каталог.

alias census z cens; git add .; git commit -m "fast"; git push

Ответ 22

Добавьте в ~/.bash_profile для добавления, фиксации и нажатия одной командой:

function g() { git commit -a -m "$*"; git push; }

Использование:

g your commit message
g your commit message 'message'

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

g "your commit message; (message)"

Для создания комментария в вашем сообщении сделайте:

g "your commit message:
> your note"

Также есть функция добавления и фиксации аналогичным образом:

function c() { git add --all; git commit -m "$*"; }

Работает точно так же, как функция g и имеет те же ограничения. Просто поставьте c вместо. Например

c your commit message

Вы также можете добавить псевдоним для отправки на пульт:

alias p='git push'

Использование:

p

Это составляет 2 буквы, c и p вы используете при работе с вашим git-репозиторием. Или вместо этого вы можете использовать g чтобы сделать все это только одной буквой.

Полный список псевдонимов и функций: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac

Ответ 23

Основываясь на ответе lazygit, следующее решение добавляет пользовательскую проверку для проверки изменений перед нажатием. Он отменит команды в случае отмены. И все это произойдет тогда и только тогда, когда в локальном репо произойдут изменения.

### SAFER LAZY GIT
function lazygit() {
  git add .
  if git commit -a -m "$1"; then
    read -r -p "Are you sure you want to push these changes? [y/N]} " response
    case "$response" in
      [yY][eE][sS]|[yY])
        git push
        ;;
      *)
        git reset HEAD~1 --soft
        echo "Reverted changes."
        ;;
    esac
  fi
}

Ответ 24

Это идеально подходит для группировки команд.

Группировка Команд

{список; } Размещение списка команд между фигурными скобками приводит к тому, что список будет выполнен в текущем контексте оболочки. Никакая подоболочка не создана. Точка с запятой (или новая строка) следующий список обязателен.

legit(){ git add --all; git commit -m "$1"; git push origin master; }
legit 'your commit message here'

Ответ 25

Мне нравится запускать следующее:

git commit -am "message";git push

Ответ 26

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

Ответ 27

Если вы используете VSCode, вы можете загрузить это расширение, которое позволит вам сделать это одним простым сочетанием клавиш.