2013-03-29 14 views
10

Czy istnieje sposób w git gołe repozytorium, aby przesunąć oddział, który nie jest w HEAD teraz?git push NOT aktualna gałąź do zdalnego

Na przykład mam dwa oddziały:

$ git branch 
* master 
    another 

i mam dwa piloty zestawie: origin i another.

Potrzebuję być w stanie przesłać od another do another/another tylko w jednym poleceniu bez zmiany HEAD.

+0

Można rozważyć nie mają dokładnie taką samą nazwę dla pilota i gałęzi. To wprowadza zamieszanie. –

+3

Możesz użyć 'git branch -m another another_branch' lub' git remote zmień nazwę another_remote innego ' –

+2

@KlasMellbourn, to tylko dla celu przykładu. Oczywiście nie mam tego dziwnego nazewnictwa. – AlexKey

Odpowiedz

10

Z git push można określić zdalny i lokalny

git push another another 
+0

Czy to oznacza, że ​​popchnie lokalne do innego? Zawsze myślałem, że popchnie 'current HEAD' do innego/innego. – AlexKey

+3

Tak. (Drugi) "inny" to refspec, który (ogólnie) ma postać 'src: dst'. Oznacza to przepchnięcie gałęzi lokalnej 'src' do zdalnej gałęzi' dst'. Jeśli ': dst' zostanie pominięty, lokalny oddział' src' jest przekazywany do zdalnej gałęzi 'src'. –

+1

Obecna wartość HEAD jest domyślna, ale możesz podać dowolną gałąź (o bardziej ogólnie dowolny refspec), tak jak Lars wskazywał –

23

Wszyscy ci „inny inny” w oryginalne pytanie, odpowiedź i wiele komentarzy są tak mylące (który jest doskonałym przykładem dlaczego to jest ważne, aby nazywać swoje rzeczy w pierwszej kolejności), nie mogę pomóc (nie zamierzam) pomóc w napisaniu kolejnej odpowiedzi, jak poniżej.

P: Czy istnieje sposób w repozytorium git (bare) do wypychania gałęzi, która jest nie w HEAD teraz? Na przykład mam dwie gałęzie i dwa piloty. Muszę być w stanie odeprzeć od feature do upstream/feature tylko w jednym poleceniu bez zmiany HEAD.

$ git branch 
* master 
    feature 
$ git remote 
origin 
upstream 

O: Zrób to.

$ git push upstream feature 

P: Czy to oznacza, że ​​będzie naciskać lokalny feature do upstream/feature? Zawsze myślałem, że popchnie bieżącą HEAD do upstream/feature.

O: Tak. Część feature jest refspec, która na ogół ma postać src:dst. Oznacza to przeniesienie lokalnego oddziału src do odległego oddziału dst. Jeśli pominięto :dst, lokalny oddział src jest przekazywany do odległego oddziału src. Możesz również określić inną nazwę jako gałąź zdalna. Wystarczy zrobić:

$ git push upstream feature:cool_new_feature 

(dzięki @ Gabriele-Petronella i @alexkey za dostarczenie materiałów do tej odpowiedzi.)

+0

Należy zauważyć, że "upstream" jest po prostu aliasem dla konkretnego pilota. Szanse są, jeśli podążałeś za najbardziej typową konwencją online (tzn. Kopiujesz dużo), to będzie to "pochodzenie". Zobacz: https://stackoverflow.com/questions/9529497/what-is-origin-in-git – Kat

+0

@Kat: podczas gdy oba 'upstream' i' origin' są "tylko" aliasem dla konkretnego pilota, mają różne znaczenia, zgodnie z konwencją [github fork workflow] (https://help.github.com/articles/configuring-a-remote-for-a-fork/). Nie zakładaj, że zawsze możesz zastąpić 'upstream' przez' origin' w dowolnym poleceniu git, chyba że wiesz co robisz. – RayLuo

Powiązane problemy