2016-08-24 2 views
2

могли бы вы объяснить мне, как подтолкнуть местное отделение к конкретной удаленной ветвимерзавца, как подтолкнуть местное отделение в конкретном удаленном

$ git branch -vv 
dev 4d46c96 [origin/dev] Merge branch '1783' into dev 
dev_3_feature 226b914 second commit in dev_3_feature 
dev_second_feature 6b5f10f second commit in dev_2_feature 
master baf5fc0 [origin/master: ahead 1] master feature 
* myFeature da5cc64 second commit in dev_1_feature 
test 334cf7e commiting my super changes locally 

1) я хочу, чтобы мои DEV возможностей для толкания в origin/dev и остаться там как ветки, как я могу это сделать?

2), что/где/как я должен настроить локально впихнуть origin/dev по умолчанию вместо origin/master

ответ

4

Update:

Таким образом, как правило, при работе с пультом дистанционного управления, в первую очередь вам нужно вытащите репозиторий или ветвь.

Если его хранилище затем

git pull origin 

, если его филиал затем

git pull origin <yourRemoteBranchName> 

после того, как вы вытащили его, то это будет на вашей машине. Теперь ваша текущая ветка - yourRemoteBranchName.


Теперь у вас есть удаленная ветвь, тогда вы можете создать локальную ветку из удаленной ветви. Он создаст новую локальную ветку из вашей текущей ветви Remote.

git checkout -b your_branch 

Удаленная ветка автоматически создается, когда вы нажимаете ее на удаленный сервер. Так что, когда вы почувствуете, что готовы к этому, вы можете просто сделать:

git push <remote-name> <branch-name> 

Где <remote-name> обычно origin, имя, которое мерзавец дает на пульте дистанционного управления вы клонировали. Тогда ваши коллеги просто потянули бы эту ветку, и она автоматически создается локально.

Однако обратите внимание, что формально, формат:

git push <remote-name> <local-branch-name>:<remote-branch-name> 

Но когда вы опускаете один, он принимает оба названия ветви одинаковы. Сказав это, в качестве слова предостережение, не делайте критической ошибки при указании только :<remote-branch-name> (с двоеточием), или удаленная ветка будет удалена!

Так что последующее git pull будет знать, что делать, вы можете вместо этого хотите использовать:

git push -u <remote-name> <local-branch-name> 

Как описано ниже, вариант -u устанавливает входную ветвь:

For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull(1) and other commands.

If вы хотите слиться непосредственно с ветвью вверх по течению,

git merge branchName 

Вы можете обратиться к этой документации: https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging. У этого есть довольно хорошие примеры.

+0

благодарит за ответ. вы имеете в виду, что все «feature_branches», создаваемые локально после нажатия, будут отслежены ветвями, и все они удаленно будут корниться из 'origin' как' origin/my_feature_branch_1', 'origin/my_feature_branch_2' и я не могу сделать' origin/DEV/my_feature_branch_1', 'origin/DEV/my_feature_branch_2' и т. д. – Eugene

+0

Вы можете это сделать, вы можете создать ветку из другой ветки. И вы можете использовать первую команду в моем ответе за это. –

+0

да, я сделал свои локальные 'feature_branches' с помощью команды' $ git checkout -b dev_3_feature dev', поэтому локально моя 'dev_3_feature' принадлежит локальному' dev', который отслеживает удаленный 'origin/dev', как вы видите из списка моих филиалов , теперь, когда функция сделана и запущена локально, как я могу загрузить ее на удаленный 'origin/dev', поэтому команда может потянуть мой« origin/DEV/super_feature », проверить его, и если ok слить его в' origin/dev', но если не скажу, что мне нравится «исправлять здесь и там», поэтому я могу локально переключиться на свою ветку, исправить что-то нужное и снова нажать его на удаленный – Eugene

2

Переключитесь на Dev ветви локально, а затем нажать на Dev ветви на нуле дистанционного управления:

git checkout dev 
git push -u origin dev 

-u вариант на git push наборов выше отслеживания таким образом, что, когда вы находитесь на Dev филиала, git push и git pull автоматически делают то же самое, что и git push origin dev и git pull origin dev.


Если я неправильно понял ваш вопрос, и вы хотите, чтобы подтолкнуть все ветви с «разработчиком ...» в свои филиалы по происхождению, вы можете сделать шаг выше для каждого из этих ветвей, или вы можете сделать git push origin --all, чтобы нажать все ваши ветви к источнику дистанционного управления. Так что по происхождению, вы бы origin/dev, origin/dev_3_feature и т.д.


Если я вдвойне неправильно ваш вопрос, и вы хотите, чтобы подтолкнуть все ветви с «разработчика ...» в одной удаленной ветви, хорошо, Я бы посоветовал не делать этого. Это, вероятно, лучше всего, если вы объедините/переустановите все свои ветви dev в одну ветку, а затем переместите их в исходное. Допустим, вы хотите использовать одну ветвь под названием dev:

git checkout dev 
git merge dev_3_feature 
git merge dev_second_feature 
git push -u origin dev 

После каждого слияния, возможно, придется разрешить конфликты слияния, поэтому имейте в виду.

В качестве последней заметки вы можете захотеть получить более описательные названия ветвей для будущих ветвей функций, так как имена, такие как dev_second_feature, действительно не говорят вам, что это за функция.

+0

спасибо, но могу ли я иметь' origin/dev/my_dev_branches' или git не поддерживать вид дерева со многими ветвями из других ветвей и так далее? Я хочу, чтобы моя ветвь 'master' была чистой с производственной версией, но мои новые функции были под' origin/dev/my_feature_branch_1', 'origin/dev/my_feature_branch_2' и так далее. поэтому команда может проверить мои 'feature_branches', и если они в порядке, то объединить их в' origin/dev' можно? – Eugene

+0

Да, вы определенно можете. Просто проверьте локацию функции локально ('git checkout -b dev/some-feature'), скопируйте некоторые вещи и нажмите ее (' git push -u origin dev/some-feature'). –

+0

'git push origin dev/dev_3_feature' error: src refspec dev/dev_3_feature не соответствует ни одному. Ошибка: не удалось нажать некоторые ссылки на 'https: //[email protected]/blabla/some.rep.git' – Eugene

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