有沒有辦法在git 裸存儲庫來推送一個不在HEAD中的分支?git push NOT當前分支到遠程
,比如我有兩個分支:
$ git branch
* master
another
而且我有兩個遙控器設置:origin
和another
。
我需要能夠從another
推到another/another
只需一個命令而不改變HEAD。
有沒有辦法在git 裸存儲庫來推送一個不在HEAD中的分支?git push NOT當前分支到遠程
,比如我有兩個分支:
$ git branch
* master
another
而且我有兩個遙控器設置:origin
和another
。
我需要能夠從another
推到another/another
只需一個命令而不改變HEAD。
隨着git push
您可以指定遠程和本地
git push another another
這是否意味着它會將本地另一個推向另一個?我一直認爲它會將'當前HEAD'推到另一個。 – AlexKey
是的。 (第二個)'another'是一個refspec,它(通常)的格式爲src:dst。這意味着將本地分支'src'推送到遠程分支'dst'。如果':dst'被省略,本地分支'src'被推送到遠程分支'src'。 –
當前的HEAD只是默認設置,但是您可以指定任何分支(或更通常的任何refspec),正如Lars指出的那樣 –
所有這些「另一個另一」在原來的問題,答案和大量的意見是如此混亂(這也是它一個很好的例子重要的是要首先命名你的東西),我不禁幫助(不打算用雙關語)寫下如下的答案。
問:git(裸)存儲庫是否有辦法在HEAD中將而不是的分支推入?例如,我有兩個分支和兩個遙控器。我需要能夠從feature
推到upstream/feature
只需一個命令而不改變HEAD。
$ git branch
* master
feature
$ git remote
origin
upstream
答:這樣做。
$ git push upstream feature
問:這是否意味着,這將推動當地feature
到upstream/feature
?我一直認爲它會將當前HEAD推到upstream/feature
。 A:是的。 feature
部分是refspec,其通常具有src:dst
的形式。這意味着將本地分支src
推送到遠程分支dst
。如果省略:dst
,則將本地分支src
推送到遠程分支src
。您也可以指定一個不同的名稱作爲遠程分支。只要做到:
$ git push upstream feature:cool_new_feature
(感謝@加布裏埃萊 - petronella和@alexkey爲這個答案提供的材料。)
請注意,「上游」只是特定遠程的別名。賠率是,如果你一直在線上遵循最典型的約定(即,你複製粘貼很多),它實際上是「起源」。請參閱:https://stackoverflow.com/questions/9529497/what-is-origin-in-git – Kat
@Kat:雖然'上游'和'起源'是「只是」一個特定的遠程別名,他們有不同的按照[github fork工作流]的慣例(https://help.github.com/articles/configuring-a-remote-for-a-fork/)來表示。不要以爲你總是可以在任何git命令中用'origin'替換'upstream',除非你知道你在做什麼。 – RayLuo
你可能會考慮沒有爲遠程和分支完全相同的名稱。這很混亂。 –
你可以使用'git branch -m another another_branch'或'git remote rename another another_remote' –
@KlasMellbourn,這僅僅是爲了舉例。當然,我沒有這個怪異的命名。 – AlexKey