我正在开发一个网站,我使用git来更新网站, 我有两个分支,所以它是:
我需要一个看起来像
的lazygit函数function lazygit(){
git add .
git commit "$1"
git push
git checkout "prod"
git merge --no-ff dev
git push
git checkout "dev"
}
并且会像
一样使用lazygit( "CSS UPDATE" )
现在我的问题是,如何将此功能保存到文件或任何地方以便我可以在任何地方使用它?
非常感谢
答案 0 :(得分:2)
您可以在~/.bashrc
,~/.bash_profile
,~/.bash_login
或~/.profile
文件(以及其他选项)中保留Bash功能,别名和设置。它依赖于系统,但大多数系统都有~/.bashrc
,因此人们通常会参考这些系统。
我还建议用&&
链接这些命令,这样如果一个命令失败,函数就会停止,而你的当前函数会继续运行,忽略任何失败:
function lazygit(){
git add . &&
git commit "$1" &&
git push &&
git checkout prod &&
git merge --no-ff dev &&
git push &&
git checkout dev
}
另请注意,Bash在调用函数时不使用()
,参数与其他shell命令一样是空格分隔的。所以你要跑:
$ lazygit "CSS UPDATE"
答案 1 :(得分:1)
另一种选择是定义Git别名而不是shell函数。
别名是配置的一部分,所以让我们看一下gitconfig(7)
手册页(在本地运行git help config
):
alias.*
git(1)
命令包装器的命令别名 - 例如在定义"alias.last = cat-file commit HEAD"
之后,调用" git last"相当于" git cat-file commit HEAD"。为了避免混淆和 脚本使用的麻烦,忽略隐藏现有Git命令的别名。参数被分开 空格,支持通常的shell引用和转义。引号对或反斜杠可用于 引用它们。如果别名扩展以感叹号作为前缀,则将其视为shell命令。对于 例如,定义" alias.new =!gitk --all - not ORIG_HEAD",调用" git new"相当于 运行shell命令" gitk --all - not ORIG_HEAD"。请注意,shell命令将从中执行 存储库的顶级目录,可能不一定是当前目录。 GIT_PREFIX 设置为从原始当前目录运行
git rev-parse --show-prefix
返回。请参阅git-rev-parse(1)
。
所以你可以做到
$ git config --add alias.whatever '!set -eu; git add . &&
git commit "$1" &&
git push &&
git checkout prod &&
git merge --no-ff dev &&
git push &&
git checkout dev'
然后只是
$ git whatever "commit message"
除非您提交所需参数,否则set -eu;
会导致整个事件崩溃。
另一种方法是在{.1}}之间添加类似的东西。