2015-05-01 24 views
1

我的git設置有一個小問題。我經常使用分叉庫。爲了分叉它們,我使用GitHub上的按鈕。之後,命令git remote -v顯示我「來源」和「原始用戶名」。將git遠程名稱重命名爲「上游」

「原始用戶名」現在是上游分支,我可以從中提取更改並創建請求。儘管如此,我希望將此命名爲「上游」。 這將使它更容易在不同的叉子上使用相同的命令,我甚至可以使用它創建別名。

所以我知道我可以用git remote rename original-username upstream改變遠程名稱,但這意味着我必須爲每個叉子做這件事,每次我在機器上得到這個叉子,並且我必須讓git remote -v first等,而我很懶:P
原始的用戶名在每個分支上都不一樣。

所以我的問題是:
是否有重命名的遠程分支的可能性(來自不同的名字)上游,也許用冷靜的別名功能,或者一個小的腳本?

我的夢想woudl是這樣的:

[alias] 
    setupstream = "!f(){ git remote rename $oldupstream upstream; };f" 

$oldupstream應自動得到,以某種方式。

回答

1

假定本地存儲庫只有兩個遠程端配置,其中一個是origin,另一個是您想要重新命名的端口。

setupstream = "!f() { \ 
    local rem=$(git remote | grep -v '^origin$'); \ 
    if [ \"$(wc -l <<<\"$rem\")\" -gt 1 ]; then \ 
     echo 'Too many remotes.' >&2; \ 
     return; \ 
    fi; \ 
    if [ -z \"$rem\" ]; then \ 
     echo 'No non-origin remote found.' >&2; \ 
     return; \ 
    fi; \ 
    if [ \"$rem\" = upstream ]; then \ 
     echo '\"upstream\" remote already exists.'; \ 
     return; \ 
    fi; \ 
    git remote rename \"$rem\" upstream; \ 
    echo \"Renamed $rem to upstream.\"; \ 
}; f" 
+0

嘿!該功能看起來非常好,這應該是我正在尋找的。糟糕的是,它不適用於我的Windows環境。它告訴我無效的配置。如果找到[this](https://medium.com/@vitalyb/creating-powerful-git-aliases-3dfc0efc9a31)如何在Windows上使用這些功能,但在嘗試更改它時,我無法使其工作。我目前的功能看起來像[this](https://gist.github.com/Wolfsblvt/74f4ddba00c03b59eb63),這只是迴應了一些測試。你可以幫我把你的函數轉換成windows的工作嗎? – Wolfsblvt

+0

您可能需要將分號添加到行的末尾來終止語句。我打算把這些放在帖子裏。我現在將添加它們。 –

+0

太棒了!我還必須在「then」行之後添加斜槓(我認爲它們是用於轉義新行字符?),然後它就起作用了。現在我甚至添加了成功信息,它完成了我想要的所有功能。我非常感謝你! – Wolfsblvt