有没有一种方法可以同时使用这三个命令?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
有时我只更改一个字母,CSS填充或其他内容。不过,我必须编写所有三个命令来推动更改。在许多项目中,我只是一个推动者,因此此命令非常棒!
有没有一种方法可以同时使用这三个命令?
git add .
git commit -a -m "commit" (do not need commit message either)
git push
有时我只更改一个字母,CSS填充或其他内容。不过,我必须编写所有三个命令来推动更改。在许多项目中,我只是一个推动者,因此此命令非常棒!
Answers:
以@Gavin的答案为基础:
使lazygit成为函数而不是别名使您可以向其传递参数。我已将以下内容添加到我的.bashrc(如果为Mac,则为.bash_profile):
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
这使您可以提供提交消息,例如
lazygit "My commit msg"
当然,您可以通过接受更多的参数(例如要推送到哪个远程位置或哪个分支)来进一步增强此功能。
$*而不是$1保存引号:lazygit My commit msg
function dirtygit() { git add . git commit -a -m "$*" git push }
我最终在.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'
!f() { ... }; f做什么的?关于该行的更多解释将使答案更好。
f,然后调用它。
git pull到开始,以便减少合并。
尽管我同意韦恩·沃纳的疑问,但从技术上讲,这是一个选择:
git config alias.acp '! git commit -a -m "commit" && git push'
其中定义了一个别名,该别名运行commit和push。用作git acp。请注意,此类“ shell”别名始终从git存储库的根目录运行。
另一个选择可能是编写执行推送的提交后挂钩。
哦,顺便说一句,您确实可以将参数传递给Shell别名。如果要传递自定义提交消息,请使用:
git config alias.acp '! acp() { git commit -a -m "$1" && git push ; } ; acp'
(当然,现在,你需要给一个提交信息:git acp "My message goes here!")
git自动添加了转义符(已选中git config -e)。
我认为您可能会误解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-但您似乎正在尝试使用它。你可以在文章的末尾找到一些资源在这里是一些使用的。
您可以使用bash脚本,设置别名来启动任何命令或命令组
git commit -am "your message" && git push
在bash中设置为别名:
$ alias lazygit="git add .; git commit -a -m '...'; git push;";
称它为:
$ lazygit
(要使该别名成为永久别名,您必须将其包含在.bashrc或.bash_profile中)
最简单的解决方案是:
git commit -a -m "commit" && git push
git add 已包含在-a参数commit中,但是如果需要,可以将它们全部连接:
git add . && git commit -a -m "commit" && 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
如果要在系统编辑器中编辑提交消息,则
git commit -a && git push
将打开编辑器,一旦您保存了消息,它也将推送它。
结果 - 尝试以下操作:一个简单的脚本命令,用于git add,git commit和git push
在Windows上打开您的CMD并粘贴此答案
git commit -m "your message" . && git push origin master
这个例子是我的图片截图:https : //i.stack.imgur.com/2IZDe.jpg
如本答案所述,您可以创建一个git别名并为其分配一组命令。在这种情况下,它将是:
git config --global alias.add-com-push '!git add . && git commit -a -m "commit" && git push'
并与
git add-com-push
用下面几行写一个名为gitpush.sh的小脚本,并将其添加到〜目录。
echo $1
git add .
git commit -m "$1"
git push
现在在〜/ .bashrc中添加一个别名,如下所示:
alias gitpush='~/gitpush'
现在,从任何git存储库中只需编写gitpush“ message”即可。
我使用一个批处理文件:
@ECHO OFF
SET /p comment=Comment:
git add *
git commit -a -m "%comment%"
git push
上面的脚本存在一些问题:
shift“删除”参数$ 1,否则,“ push”将读取它并“误解”。
我的提示:
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'
如果您使用的是鱼壳(基于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
已经有很多好的解决方案,但是对于我的工作方式,我发现以下解决方案更加优雅:
我在名为“ git-put”的路径中放置了一个脚本,该脚本包含:
#!/bin/bash
git commit "$@" && git push -u
这使我可以运行:
git put -am“我的提交消息”
..添加所有文件,提交并推送。
(我也添加了“ -u”,因为无论如何我都喜欢这样做,即使它与该问题无关。它可以确保始终为提取设置上游分支。)
我喜欢这种方法,因为它还允许使用“ git put”而不添加所有文件(跳过“ -a”),或者使用我可能希望传递以提交的任何其他选项。另外,“ put”是“ push”和“ commit”的简短组合
如果您使用的是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"
对于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以同时运行三个命令
对于macOS用户:
打开您的终端机或iTerm2或您使用的另一个终端机。
使用命令移到您的用户配置文件文件夹~/。这是文件的默认文件夹.bash_profile:
键入nano .bash_profile此命令将.bash_profile在最易于使用的文本编辑器-终端中打开文档(如果尚不存在,则创建文档)nano。
现在,您可以对文件进行简单的更改。粘贴以下代码行以更改终端提示:
function lazygit() {
git add .
git commit -a -m "$1"
git push
}
由于该问题未指定哪个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
添加在~/.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
基于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
}