git添加,提交和推命令在一个?
有没有办法在一个中使用这三个命令?
git add . git commit -a -m "commit" (do not need commit message either) git push
有时我只改变一个字母,CSS填充等等。 不过,我必须写出所有三个命令来推动变化。 有很多项目,我只是一个推动者,所以这个命令会很棒!
build立@加文的答案:
让懒惰函数而不是别名允许你传递一个参数。 我已经添加到我的.bashrc(或.bash_profile如果Mac):
function lazygit() { git add . git commit -a -m "$1" git push }
这允许你提供一个提交消息,比如
lazygit "My commit msg"
你当然可以通过接受更多的论据,比如推动哪个偏远的地方,或者哪个分支来加强这一点。
虽然我同意韦恩·维尔纳的怀疑,但这在技术上是一个select:
git config alias.acp '! git commit -a -m "commit" && git push'
其中定义了一个运行commit
和push
的别名。 用它作为git acp
。 请注意,这样的“shell”别名总是从你的git仓库的根目录运行。
另一个select可能是编写一个post-commit钩子来执行推送。
我结束了添加一个别名到我的.gitconfig
文件:
[alias] cmp = "!f() { git add -A && git commit -m \"$@\" && git push; }; f"
用法: git cmp "Long commit message goes here"
添加所有文件,然后使用注释提交消息并将其推送到原点。
我认为这是一个更好的解决scheme,因为您可以控制提交消息的内容。
别名也可以从命令行定义,这将它添加到您的.gitconfig
:
git config --global alias.cmp '!f() { git add -A && git commit -m "$@" && git push; }; f'
我想你可能会误解git所devise的工作stream程。 (为了澄清/更正我在评论中的意思,你不需要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 – 但是看起来你正在尝试使用它。 在这篇文章的最后,你可能会发现一些资源是有用的。
设置为bash中的别名:
$ alias lazygit="git add .; git commit -a -m '...'; git push;";
叫它:
$ lazygit
(为了使这个别名永久,你必须将它包含在你的.bashrc或.bash_profile中)
我在我的.bash_profile上使用这个
gitpush() { git add . git commit -m "$*" git push } alias gp=gitpush
它执行像
gp A really long commit message
别忘了在保存别名后运行source ~/.bash_profile
。
您可以使用bash脚本,设置别名来启动任何命令或一组命令
git commit -am "your message" && git push
如果文件已经被跟踪,那么你不需要运行git add
,你可以简单地写git commit -am 'your message'
如果你不想写一个提交消息,你可能会考虑做类似的事情
git commit --allow-empty-message -am ''
你可以尝试gitu 。
第一次(必须安装节点js):
npm install -g git-upload
之后:
gitu COMMIT_MSG
一次发出这三个命令。
好的一点是, 当你重新安装你的系统或者你想在不同的计算机上这样做时 ,你不必担心,也不需要修改文件。 这也适用于不同的平台 (不仅仅是Linux和Mac,而且还包括命令提示符下的Windows,比如cmd
和powershell
),只需要安装npm
和nodejs
(当然是git
)。
正如在这个答案中提到的,你可以创build一个git别名并为它分配一组命令。 在这种情况下,这将是:
git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'
和它一起使用
git add-com-push
我使用batch file:
@ECHO OFF SET /p comment=Comment: git add * git commit -a -m "%comment%" git push
上面的脚本有一些问题:
移动“移除”参数$ 1,否则,“推”将读取它并“误解它”。
我的提示:
git config –global alias.acpp'!git add -A && branchatu =“$(git symbolic-ref HEAD 2> / dev / null)”&& branchatu = $ {branchatu ## refs / heads /} && git commit – m“$ 1”&& shift && git pull -u origin $ branchatu && git push -u origin $ branchatu'
当你想要git commit的类似svn的行为时,在你的.gitconfig的git别名中使用它
commit = "!f() { git commit \"$@\" && git push; };f"
我做了这个.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
由于该问题没有指定哪个shell,因此这里是基于早期答案的eshell版本。 这在eshell别名文件,这可能在〜/ .emacs.d / eshell /别名我已经添加了第一部分z https://github.com/rupa/z/ ,让你快速cd到一个目录,这样无论你当前的目录是什么都可以运行。
alias census z cens; git add .; git commit -m "fast"; git push