2015-12-18 2 views
0

Недавно мой локальный git изменил способ нажатия ветвей на удаленный, и я не могу понять, почему. Раньше я бы создавать новые ветки с помощью команды:git push не создает/обновляет удаленную ветку, но напрямую удаляет удаленные файлы

git checkout -b feature_x origin/master

Затем нажмите на новую ветвь дистанционного (с целью создания Толкай запроса):

git push origin feature_x

Это работало отлично до последней недели, однако, теперь, когда я запускаю эту последнюю команду, git нажимает прямо на удаленный, не создавая ветку (или разрешая создание PR для этой ветви). Я думаю, что я, должно быть, изменил настройку, не осознавая этого, чтобы добраться до этой ситуации, но я не уверен, какой из них. Кто-нибудь знает, что может вызвать такое поведение и, возможно, способ вернуться к старому способу делать что-то?

Выход из git push origin feature_x:

To https://github.com/[URL] 
    2826f0c..66748dc feature_x -> master 

Config:

push.default=tracking 
core.editor=vim 
core.askpass=git-gui--askpass 
branch.autosetupmerge=true 
credential.helper=osxkeychain 
core.repositoryformatversion=0 
core.filemode=true 
core.bare=false 
core.logallrefupdates=true 
core.ignorecase=true 
core.precomposeunicode=true 
remote.origin.url=https://github.com/[URL] 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.master.remote=origin 
branch.master.merge=refs/heads/master 
branch.feature_x.remote=origin 
branch.feature_x.merge=refs/heads/master 
+0

Вы пытаетесь нажать на GitHub? – michas

+0

Да, я нажимаю на Github – odaata

+0

Пожалуйста, добавьте вывод 'git push origin feature_x' и' git config -l' к вашему вопросу. – michas

ответ

-1

Вы можете выполнить следующую команду для обновления восходящего

git push -u origin feature_x 

После этого он должен начать работать, как обычно

0

Пожалуйста, не перепутать и филиалы репозиториев.

У вас есть два разных репозитория. Ваш местный и удаленный в github.

В своем локальном репозитории вы создаете ветку feature_x и вносите изменения в эту локальную ветвь.

Позже вы попытаетесь направить свою локальную ветвь в удаленный репозиторий. Полный синтаксис:

git push origin src:dst 

Это означает, что толчок к отдаленному местоположению имени происхождения (который, вероятно, сконфигурированный в качестве хранилища GitHub) и взять на себя местное отделение src и назовите его dst в удаленном хранилище.

Вы не указали :dst, поэтому будут использоваться некоторые значения по умолчанию.

От вашего описания вы ожидали feature_x:feature_x, но у вас есть feature_x:master.

git help push говорит:

The <dst> tells which ref on the remote side is updated with this push. 
    Arbitrary expressions cannot be used here, an actual ref must be named. If git 
    push [<repository>] without any <refspec> argument is set to update some ref 
    at the destination with <src> with remote.<repository>.push configuration 
    variable, :<dst> part can be omitted---such a push will update a ref that 
    <src> normally updates without any <refspec> on the command line. Otherwise, 
    missing :<dst> means to update the same ref as the <src>. 

Спасибо за ваше обновление.

git branch -vv должен показать, что ваша ветка свойств отслеживается origin/master. Пока это прекрасно. Но тогда push.default=tracking говорит, что вы хотите нажать на ветку отслеживания по умолчанию. -> Это объясняет поведение feature_x:master.

Возможно, вы хотите push.default=current или push.default=simple. (Так как git 2.0 simple также по умолчанию.)

+0

Спасибо! Это помогает - я понял, что новые ветви, которые я создаю для отслеживания удаленно, теперь добавляются в мой файл конфигурации, поэтому каждая ветвь теперь добавляется с примером ниже. Я считаю, что команда слияния говорит git объединить ее непосредственно в эту ветку, а не создавать новую удаленную ветвь. Вы знаете, какая настройка делает это? У меня есть push.default = trakcing и branch.autosetupmerge = true. [отрасль "test_branch_3"] \t удаленный = начало \t merge = refs/heads/zanzibar – odaata

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