有没有办法在一个中使用这三个命令?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
有时我只更改一个字母,CSS填充或其他东西。不过,我必须编写所有三个命令来推动更改。有很多项目,我只有一个推动者,所以这个命令会很棒!
答案 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'
其中定义了运行commit
和push
的别名。将其用作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,如cmd
和powershell
),只需要安装npm
和nodejs
(当然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用户:
打开您的终端或 iTerm2 或您使用的其他终端。
使用命令~/
移至“用户个人资料”文件夹。这是.bash_profile
文件的默认文件夹:
键入nano .bash_profile
,此命令将在最易于使用的终端文本编辑器中打开.bash_profile
文档(如果尚不存在,则创建该文档)– nano
现在,您可以对文件进行简单的更改。粘贴以下代码行以更改终端提示:
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
答案 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:
启动终端类型“ cd〜/”以转到您的主文件夹
键入“ touch .bash_profile”以创建新文件。
使用您喜欢的编辑器编辑.bash_profile(或者您可以键入 “ open -e .bash_profile”以在TextEdit中将其打开)。
将以下内容复制并粘贴到文件中:
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)
这非常适合命令分组。
{列表; } 在大括号之间放置命令列表会导致该列表在当前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个字母c
和p
。或者您可以使用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