2016-03-21 3 views
18

Я попытался следовать this post, но запутался, а не решил мою проблему.Git нажатие на удаленную ветку

Вот сценарий.

Я создал ветку, как git checkout -b <branch_name>. Затем я работал над некоторыми изменениями и сделал

  1. git add .
  2. git commit -m "comment"

Теперь все эти изменения в моей незавершенной местном <branch_name> отрасли. То, что я хочу сделать, это нажать эти изменения вверх по течению, но я хочу надавить на ветвь, которая не существует, например, <branch_name>_test

Я не хочу нажимать ее на мой <branch_name>. Как я могу это сделать.

ответ

14

Просто нажмите эту ветку с другим именем филиала

git push -u origin branch_name: branch_name_test 
+1

Просто обратите внимание на это, если вы не включаете флаг '-u' или' --set-upstream', вам придется набирать всю эту команду каждый раз, когда вы нажимаете. 'git push' не будет работать на нем до тех пор, пока не будет установлен восходящий поток. – Scott

+0

хорошая точка, отредактировал мой ответ –

8

git push --set-upstream origin <branch_name>_test

--set-upstream устанавливает связь между вашим местным отделением и пульта дистанционного управления. Вам нужно только сделать это в первый раз. На последующих толчков вы можете просто сделать:

git push

Если вам не origin установить еще, использование:

git remote add origin <repository_url> затем повторите вышеуказанную команду.

+0

Как я уже упоминал, я не хочу толкать его в свою ветку, которая ''. Я хочу подтолкнуть его к новой ветке ' _test', которая на данный момент не существует –

+0

Извините, не видел этого. Обновлен мой ответ. Вы можете назвать удаленное отделение чем угодно, просто отрегулируйте последний параметр в команде 'push'. – Scott

5

С современными версиями Git, команда использовать будет:

git push -u origin <branch_name_test> 

Это автоматически устанавливает имя ветви для отслеживания от удаленного и надавите на один ход.

4

Вы можете нажать местный филиал в нового удаленного филиала так:

git push origin master:test 

(Предполагая, что origin ваша дистанционное, master ваше местное название филиала и test это имя нового удаленного филиала вы хотите создать)

Если в то же время вы хотите настроить местное отделение, чтобы отслеживать вновь созданный удаленный филиал, вы можете сделать это с -u (на новые версии Git) или --set-upstream, так.:

git push -u origin master:test 

или

git push --set-upstream origin master:test 

... создаст новый удаленный филиал, названный test, в удаленном хранилище origin, основанный на локальном master, и настройки вашего местного master отслеживать его.

27

Во-первых, отметим, что git push «хочет» еще два аргумента и будет автоматически создавать их, если вы их не предоставите. Поэтому основная команда git push remoterefspec.

remote часть обычно тривиальная, так как это почти всегда просто слово origin. Более сложная часть - refspec. Чаще всего люди пишут название ветки здесь: git push origin master, например. Это использует вашу локальную ветвь, чтобы нажать на ветку с таким же именем на пульте дистанционного управления, создав при необходимости. Но это не должно быть только название ветки.

В частности, a refspec имеет две части, разделенные двоеточием. Для git push часть слева идентифицирует то, что нужно нажать, , а часть справа идентифицирует имя, которое следует дать удаленному. Часть слева в этом случае будет branch_name, а часть справа будет branch_name_test. Например:

git push origin foo:foo_test 

Как вы делаете нажим, вы можете сообщить git push установить вверх по течению название вашего филиала по в то же время, добавляя -u к git push опций. Настройка имени восходящего потока делает ваш git сохранять имя foo_test (или что-то еще), так что будущее git push без аргументов, пока вы находитесь на ветке foo, может попытаться нажать на foo_test на пульте дистанционного управления (git также сохраняет удаленный, origin в этом случае, так что вам также не нужно вводить это).

Вам необходимо пройти только -u: он в основном просто запускает git branch --set-upstream-to для вас. (Если вы снова перейдете -u, он снова запустит настройку восходящего потока, изменив ее по указанию, или вы сами можете запустить git branch --set-upstream-to.)

Однако, если ваш git 2.0 или новее, и вы не установили никаких специальная конфигурация, вы столкнетесь с тем же типом вещей, который заставил бы меня ввести сноску 1 выше: push.default будет установлен в simple, который откажется от нажатия, потому что имя восходящего потока отличается от вашего собственного локального имени. Если вы установили push.default в upstream, git перестанет жаловаться, но самое простое решение - сначала переименовать локальную ветвь, чтобы совпадали локальные и удаленные имена. (Какие параметры для установки и/или следует ли переименовать ветку, до вас.)


Точнее, мерзавец консультируется ваши настройки remote.remote.push вывести вверх по течению половины refspec. Если вы ничего здесь не задали, то по умолчанию должен использовать одно и то же имя.

Это не должно быть название филиала. Например, вы можете указать HEAD или хеш-код фиксации.Если вы используете что-то другое, кроме имени филиала, то вы можете указать refs/heads/branch справа (это зависит от того, какие имена уже находятся на пульте дистанционного управления).