git add,commit和push命令合二为一?

时间:2013-10-25 16:31:22

标签: git

有没有办法在一个中使用这三个命令?

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

有时我只更改一个字母,CSS填充或其他东西。不过,我必须编写所有三个命令来推动更改。有很多项目,我只有一个推动者,所以这个命令会很棒!

30 个答案:

答案 0 :(得分:198)

建立@Gavin的答案:

使lazygit成为一个函数而不是别名允许你传递一个参数。我已将以下内容添加到我的.bashrc(如果是Mac,则为.bash_profile):

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

这允许您提供提交消息,例如

lazygit "My commit msg"

你当然可以通过接受更多的论点来加强这一点,比如要推进哪个偏远的地方,或者哪个分支。

答案 1 :(得分:70)

我最后在我的.gitconfig文件中添加了别名:

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

用法:git cmp "Long commit message goes here"

添加所有文件,然后使用提交消息的注释并将其推送到原点。

我认为这是一个更好的解决方案,因为您可以控制提交消息的内容。

也可以从命令行定义别名,这会将其添加到.gitconfig

git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'

答案 2 :(得分:40)

虽然我同意Wayne Werner的疑虑,但这在技术上是一个选择:

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

其中定义了运行commitpush的别名。将其用作git acp。请注意,此类“shell”别名始终从您的git存储库的根目录运行。

另一种选择可能是编写一个推送后的提交后挂钩。

答案 3 :(得分:33)

我认为你可能会误解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 - 但似乎你正试图这样使用它。您可能会发现文章here末尾的一些资源是有用的。

答案 4 :(得分:27)

我在.bash_profile中使用它

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

执行类似

gp A really long commit message

保存别名后别忘了运行source ~/.bash_profile

答案 5 :(得分:22)

您可以使用bash脚本,设置别名来启动任何命令或命令组

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

答案 6 :(得分:17)

在bash中设置为别名:

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

称之为:

$ lazygit

(要使此别名永久化,您必须将其包含在.bashrc或.bash_profile中)

答案 7 :(得分:12)

最简单的解决方案是:

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

git add已经包含在-commit参数中,但是如果您愿意,可以将它们全部连接起来:

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

答案 8 :(得分:7)

您可以尝试gitu

第一次(必须安装节点js):

npm install -g git-upload

之后:

gitu COMMIT_MSG

一次发出这三个命令。

好的一点是,当您重新安装系统或想要在不同的计算机上执行此操作时,不必担心,并且不需要修改文件。 这也在不同平台上工作(不仅仅是Linux和Mac,还有命令提示下的Windows,如cmdpowershell),只需要安装npmnodejs(当然git)。

答案 9 :(得分:7)

如果你想更好地编辑你的提交信息,我的意思是添加多行......然后

git commit -a && git push 

将打开编辑器,一旦保存消息,它也会推送它。

在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

答案 10 :(得分:6)

如果文件已被跟踪,则您无需运行git add,只需撰写git commit -am 'your message'

即可

如果您不想编写提交消息,可以考虑执行类似

的操作

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

答案 11 :(得分:3)

this回答中所述,您可以创建 git别名并为其分配一组命令。在这种情况下,它将是:

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

并将其与

一起使用
git add-com-push

答案 12 :(得分:2)

我使用批处理文件:

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

答案 13 :(得分:2)

对于macOS用户:

  1. 打开您的终端 iTerm2 或您使用的其他终端。

  2. 使用命令~/移至“用户个人资料”文件夹。这是.bash_profile文件的默认文件夹:

User folder example

  1. 键入nano .bash_profile,此命令将在最易于使用的终端文本编辑器中打开.bash_profile文档(如果尚不存在,则创建该文档)– nano

  2. 现在,您可以对文件进行简单的更改。粘贴以下代码行以更改终端提示:

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

Nano text editing

  1. 现在输入ctrl + o保存更改,然后按回车键保存。然后通过键入nano退出ctrl + x

  2. 现在我们需要激活您的更改。键入source .bash_profile(或. ~/.bash_profile)并注意您的提示更改。

  3. 在iTerm2中将Preferences/Profiles/General/Command设置为Login Shell,将Send text at start设置为source ~/.bash_profile。因此,您无需在每个macOS重新启动后手动进行设置。 iTerm 2 preferences

凭据:https://natelandau.com/my-mac-osx-bash_profile

答案 14 :(得分:1)

上述脚本存在一些问题:

shift"删除"参数$ 1,否则," push"会读它并且误解它"。

我的提示:

  

git config --global alias.acpp'!git add -A&& branchatu =" $(GIT   symbolic-ref HEAD 2> / dev / null)" &安培;&安培; branchatu = $ {branchatu ##参/头/}   &安培;&安培; git commit -m" $ 1" &安培;&安培;转移&& git pull -u origin $ branchatu&&混帐   push -u origin $ branchatu'

答案 15 :(得分:1)

如果您使用的是Mac:

  1. 启动终端类型“ cd〜/”以转到您的主文件夹

  2. 键入“ touch .bash_profile”以创建新文件。

  3. 使用您喜欢的编辑器编辑.bash_profile(或者您可以键入 “ open -e .bash_profile”以在TextEdit中将其打开)。

  4. 将以下内容复制并粘贴到文件中:

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

之后,重新启动终端,然后简单地添加,提交和推送一个简单的命令,例如:

lazygit "This is my commit message"

答案 16 :(得分:1)

对于MAC VSC用户,最佳设置是:

1)按'shift + cmd + P'并输入:

Shell Command: install 'code' command in PATH

按ENTER(这将安装代码命令以轻松访问bash_profile)

2),您现在可以运行:code ~/.bash_profile打开空的bash_profile

3)在其中输入新功能:

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

4)现在重新启动VSC

5)进行更改,保存并键入lazygit message以同时运行这三个命令

答案 17 :(得分:1)

如果使用VSCode,则可以下载this扩展名,该扩展名将使您可以通过一个简单的键盘快捷键来完成此操作。

答案 18 :(得分:1)

已经有很多好的解决方案,但是对于我的工作方式,我发现以下解决方案更为优雅:

我在路径中放入了一个名为“ git-put”的脚本,其中包含:

#!/bin/bash
git commit "$@" && git push -u

这使我可以运行:

  

git put -am“我的提交消息”

..添加所有文件,提交并推送。

(我也添加了“ -u”,因为无论如何我都喜欢这样做,尽管它与该问题无关。它确保始终为拉动设置上游分支。)

我喜欢这种方法,因为它还允许使用“ git put”而不添加所有文件(跳过“ -a”),或者使用我可能希望传递以提交的任何其他选项。另外,“ put”是“ push”和“ commit”的简短写法

答案 19 :(得分:0)

请查看我的答案,我将所有内容添加到一行中

alias gitcomm="echo 'Please enter commit message';read MSG ;git add --all;git commit -am=$MSG;git push"

答案 20 :(得分:0)

我发现this yolo别名非常棒,甚至在我很懒的时候甚至对提交内容都随机提交了评论。它开箱即用的效果很好,所以我只需git yolo,所有更改都将自动推送。

答案 21 :(得分:0)

This Result -尝试以下操作:一个简单的脚本命令,用于git add,git commit和git push

在Windows上打开您的CMD并粘贴答案

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

  

这个例子我的图片截图:   https://i.stack.imgur.com/2IZDe.jpg

答案 22 :(得分:0)

我喜欢运行以下内容:

git commit -am "message";git push

答案 23 :(得分:0)

用以下几行写一个名为gitpush.sh的小脚本,并将其添加到〜目录。

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

现在在〜/ .bashrc中添加一个别名,如下所示:

alias gitpush='~/gitpush'

现在从任何git存储库中只需编写gitpush“ message”。

答案 24 :(得分:0)

这非常适合命令分组。

Grouping Commands

  

{列表; }   在大括号之间放置命令列表会导致该列表在当前Shell上下文中执行。没有创建子外壳。以下是分号(或换行符)。

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

答案 25 :(得分:0)

如果你正在使用鱼壳(建立在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

答案 26 :(得分:0)

建立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
}

答案 27 :(得分:0)

添加~/.bash_profile以添加,提交和推送一个命令put:

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即可。 E.g。

c your commit message

您还可以添加别名以推送到遥控器:

alias p='git push'

用法:

p

在使用您的git存储库时,您将使用2个字母cp。或者您可以使用g代替只用一个字母来完成所有操作。

别名和功能的完整列表: https://gist.github.com/matt360/0c5765d6f0579a5aa74641bc47ae50ac

答案 28 :(得分:0)

由于问题没有指定哪个shell,这里是基于早期答案的eshell版本。这是在eshell别名文件中,它可能在〜/ .emacs.d / eshell / alias中我添加了第一部分z https://github.com/rupa/z/,让你快速cd到一个目录,这样就可以运行了无论您当前的目录是什么。

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

答案 29 :(得分:0)

我为命令执行了.sh脚本

#!/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