2012-01-19 3 views
2

Предположим, что я нахожусь в местной ABC с ответвлениями branch_A и branch_B.Git, нажав на удаленный

От repo_A, каковы различия между:

- git push origin 
- git push origin branch_A 
- git push origin branch_A:branch_A 

Причина вопроса следующая последовательность событий, я считаю, что удивительно: поведение поведения

11:05:56 ~/blah $ git push origin 
Counting objects: 31, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (13/13), done. 
Writing objects: 100% (17/17), 1.28 KiB, done. 
Total 17 (delta 10), reused 0 (delta 0) 
To ssh://[email protected]/myrepo.git 
    141fc0d..d42c3b6 branch_B -> branch_B // While i was in branch_A 

11:06:02 ~/blah $ git branch 
    branch_A 
* branch_B 
+0

Здесь немного запутанно, что вы ссылаетесь на свои репозитории как 'repo_A' и' repo_B', когда кажется, что это имена ветвей в этих репозиториях. –

+0

@MarkLongair, ты абсолютно прав. обновлен – JAM

ответ

1

по умолчанию git push origin (если вы не настроили опцию конфигурации push.default) - это нажать все «соответствующие» ветви. Это означает, что каждая локальная ветвь перетаскивается в одно имя с исходным кодом , пока ветка с таким именем уже существует в источнике. В этом случае кажется, что у вас есть филиал branch_B в origin, а также локально.

Два других варианта вы процитировали:

git push origin branch_A 
git push origin branch_A:branch_A 

.... фактически эквивалентны - если не включать : в refspec, чтобы отделить имя источника от имени адресата, он предполагает, что вы имеете в виду одно и то же имя в источнике и получателе.

+0

Очень хороший ответ. большое спасибо – JAM

Смежные вопросы