Windows自定义git命令

13

假设我想要一个新的Git命令,git new,它可以创建一个与origin/master同步的新分支。

是否有一种方法可以编写这个脚本,并从PowerShell在Windows上使其对所有存储库都可用?

编辑:为了澄清,我想要一个Git脚本而不是Powershell函数。我提到Powershell只是因为我不使用Git Bash。


2
你可以使用运行批处理文件的别名。这篇帖子会对你有很大帮助。 - byxor
1
这完全没有帮助。我想按照所述的使用 git new 运行它,而你不能创建这样的别名。我也不想制作一个 hacky PowerShell 函数,我想在 Windows 上制作一个 git 脚本。 - RusinaRange
1
好的,那只是一个建议而已。 - byxor
2个回答

24
创建一个批处理文件,其中包含以下命令:
git branch %1 origin/master
git checkout %1

将其保存为C:\Scripts\new-branch.cmd,例如。 (我从未使用过PowerShell,不了解它的规则。但是,使用旧版Windows命令提示符也应该可以正常工作)。

通过运行以下命令来测试批处理文件是否按预期工作:

C:\Scripts\new-branch.cmd test1

它应该输出类似于以下内容:

Branch test1 set up to track remote branch master from origin by rebasing.
Switched to branch 'test1'
Your branch is up-to-date with 'origin/master'.

如果您不需要新分支跟踪远程分支,则只需在git branch命令中添加--no-track

如果一切顺利,请运行:

git config --global alias.new "!C:/Scripts/new-branch.cmd"

这样做会在所有仓库中使得 Git 的别名 new 对您的Windows配置文件可用。如果您只需要在一个仓库中使用该别名,则删除 --global 并在当前目录在您需要它的仓库中运行该命令。

使用方式如下:

git new test2

1
顺便说一下,应该是%1而不是$1。 - RusinaRange
你说得对。我在Linux上编写并测试了它 :-) 现在已经更新了答案。 - axiac
即使在Windows上,别名的文件路径也必须使用斜杠(/)而不是反斜杠(\)。 - RusinaRange
1
您可以创建一个别名 git config --global alias.new '!git checkout origin/master -b'。使用方法如下: git new new_branch. - Thomas F
1
快速记录 - 我尝试了这个,但它没有起作用。结果发现我在使用cmd设置别名时需要将文件路径放在双引号中。我相信双引号也适用于Powershell,因此这会改善答案。 - Tom Troughton
显示剩余4条评论

7
你可以使用一个基于 git checkout 的别名(alias): git config --global alias.new 'checkout origin/master -b' 之后你就可以通过 git new new_branch 来使用了。
(相当于 git checkout origin/master -b new_branch)
参见 git checkout 文档。我尝试了该命令并且有效,但在查看文档时,并没有找到完全匹配我的形式的语法。(最接近的形式是:git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]
注意:@axiac,我可能使用了 !git 因为它不会有影响,并且我可能需要执行多个命令来解决问题,并且完成后没有将其移除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接