用于获取和签出远程分支的 Git 别名?

ehi*_*ime 5 git alias

我正在尝试编写一个快速别名来使用此语法签出和跟踪远程分支

git get {branch_name}
Run Code Online (Sandbox Code Playgroud)

正确的方法是

git checkout --track origin/{branch_name}
Run Code Online (Sandbox Code Playgroud)

我试过

[alias]
   get = "!sh -c 'git checkout --track origin/$1'"
Run Code Online (Sandbox Code Playgroud)

但得到一个致命的:缺少分支名称

我缺少什么?

hyb*_*rid 6

将以下别名添加到您的 .gitconfig 文件中

cto = "!f() { \
    git checkout --track origin/\"$1\"; \
}; f"
Run Code Online (Sandbox Code Playgroud)

我使用 cto(checkout track origin)作为别名,并使用 shell 命令进行替换以传入分支名称。

然后您可以像这样使用别名

git cto my-cool-branch
Run Code Online (Sandbox Code Playgroud)

这将相当于

git checkout --track origin/my-cool-branch
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你。工作是一种享受。(看起来你的树枝比我的凉爽!) (2认同)

xer*_*ero 3

您的代码看起来像是一个 shell 别名(我看到 $1 替换和 sh 命令)。我建议将其添加为 .gitconfig 文件中的别名。在该文件中,“git”命令是可以理解的。

[alias]
    get = 'checkout --track origin/'
Run Code Online (Sandbox Code Playgroud)

(你可能需要双斜杠、转义等等,而不是 100%)

所以调用:

$ git get someName
Run Code Online (Sandbox Code Playgroud)

本质上会调用:

git checkout --track origin/someName
Run Code Online (Sandbox Code Playgroud)