2016-08-24 163 views
2

说我想要一个新的git命令,git new,它使得一个新的分支与原点/主机保持同步。Windows自定义git命令

有没有一种方法可以让这个脚本在PowerShell中的所有仓库中都可用?

编辑:澄清我想要一个git脚本不是PowerShell功能。我提到powershell的唯一原因是因为我不使用git bash。

+1

您可以使用运行批处理文件的别名。[本文](http:// stacko verflow.com/questions/24914589/how-to-create-permanent-powershell-aliases)会帮助你很多。 – byxor

+0

这完全没有帮助。我想用'git new'来运行它,因为你不能这样做别名。我也不想做一个hacky的powershell函数,我想在Windows上创建一个git脚本。 – RusinaRange

+0

好吧,这只是一个建议。 – byxor

回答

6

创建包含以下命令的批处理文件:

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'. 

如果你不需要新的分支追踪远程分支那么您只需将--no-track添加到git branch命令。

如果一切顺利,然后运行:

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

这使得Git别名new提供给所有存储库的Windows配置文件。如果只需要在一个存储库中使用它,请删除--global,并在当前目录位于您需要的存储库中时运行该命令。

使用它作为:

git new test2 
+0

这不完全是我想到的,但肯定是做我想要的。谢谢! – RusinaRange

+0

btw是%1不是$ 1 – RusinaRange

+0

你说得对。我在Linux上编写并测试了它:-)现在更新答案。 – axiac

1

你可以使用你的git一个别名其中使用git checkout

git config --globla alias.new 'checkout origin/master -b'

这将被用来作为git new new_branch

(这是equivolent到git checkout origin/master -b new_branch

git docs for checkout。我试着命令和它的工作,但是当我看了看文档,我没有找到完全匹配我的形式语法。(最近是git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]

注:@axiac,我可能已经使用了!git,因为它不伤害,我可能需要做多个命令来解决这个问题,我做的时候并没有将其删除