Coo*_*ief 4 git bash function github
我正在开发一个网站,我使用 git 来更新网站,我有两个分支,所以它去:
我需要一个看起来像的lazygit函数
function lazygit(){
git add .
git commit "$1"
git push
git checkout "prod"
git merge --no-ff dev
git push
git checkout "dev"
}
Run Code Online (Sandbox Code Playgroud)
并且会像
lazygit( "CSS UPDATE" )
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如何将此函数保存到文件或其他任何内容中,以便我可以在任何地方使用它?
非常感谢
另一种选择是定义 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'
Run Code Online (Sandbox Code Playgroud)
然后只是
$ git whatever "commit message"
Run Code Online (Sandbox Code Playgroud)
该set -eu;除非您提交所需的参数会使整个事情崩溃。另一种方法是将类似的东西粘test $# -gt 0 || exit 1;在那里。
您可以将 Bash 函数、别名和设置保留在~/.bashrc、~/.bash_profile、~/.bash_login或~/.profile文件(以及其他选项)中。它依赖于系统,但大多数系统都有一个“ ~/.bashrcand”,因此人们通常会提到“and”。
我还建议将这些命令与 链接起来&&,这样如果一个失败,函数就会停止,而当前的函数将继续运行,忽略任何失败:
function lazygit(){
git add . &&
git commit "$1" &&
git push &&
git checkout prod &&
git merge --no-ff dev &&
git push &&
git checkout dev
}
Run Code Online (Sandbox Code Playgroud)
另请注意,Bash 在调用函数时不使用()参数,就像其他 shell 命令一样以空格分隔。所以你会运行:
$ lazygit "CSS UPDATE"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |