2016-08-24 117 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,因爲它不傷害,我可能需要做多個命令來解決這個問題,我做的時候並沒有將其刪除