Подтвердить что ты не робот

Git нажатие на удаленную ветку

Я попытался выполнить этот пост, но запутался, а не решил мою проблему.

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

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

  • git add .
  • git commit -m "comment"

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

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

4b9b3361

Ответ 1

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

 git push -u origin branch_name: branch_name_test

Ответ 2

Во-первых, учтите, что git push "хочет" еще два аргумента и автоматически их создаст, если вы их не предоставите. Поэтому основная команда git push remote refspec.

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

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

git push origin foo:foo_test

Как вы делаете push, вы можете указать своему 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 перестанет жаловаться, но самое простое решение - сначала переименовать локальную ветвь, чтобы совпадали локальные и удаленные имена. (Какие настройки для установки и/или переименование ветки, зависит от вас.)


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

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

Ответ 3

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

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

git push

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

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

Ответ 4

В современных версиях Git команда для использования:

git push -u origin <branch_name_test>

Это автоматически установит имя ветки для отслеживания с пульта дистанционного управления и нажимает один раз.

Ответ 5

Вы можете направить свою локальную ветвь на новую удаленную ветку, например:

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 для ее отслеживания.