В настоящее время я работаю над проектом, в котором мне пришлось разветвиться от master, внести кучу изменений локально и начать работу с тестовой средой, которая помещается в конкретное удаленное репо, следующим образом:

git push origin site-testing 

Выдвигает ветку site-testing в следующем репо:

user-name@testing.com:/path/to/root-dir-containing-.git

Теперь мне нужно выбрать изменения из ветви site-testing в ветку master.

Подвох в том, что когда я git push origin master, я бы хотел, чтобы эти изменения были перенесены в совершенно другое удаленное репо.

Итак, желаемый результат:

git push origin master 

Подталкивает master к следующему репо:

user-name@aws-live-domain.com:/path/to/root-dir-containing-.git

И нет master в testing.com ..

Это возможно? Я ценю любые предложения

1
AnchovyLegend 28 Май 2017 в 00:13

2 ответа

Лучший ответ

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

git remote add origin1 https://aws-live-domain.com/user-name/<path/to/root-dir-containing->.git
git push origin1 master 
3
Arpit Aggarwal 27 Май 2017 в 21:27

Вы можете иметь более одного пульта. Это позволяет вам делать то, что вы хотите.

Общий синтаксис использования git push:

git push remote branch

Который вы часто будете видеть, например, как git push origin master. Часть origin - это имя удаленного , а вторая часть - это имя ветви (ну, на самом деле это более сложно, но давайте просто перейдем к «имени ветви» :-)) ,

Помните, что remote в Git - это просто краткое имя для другого репозитория Git по какому-то другому URL. Как правило, Git-репозиторий поставляется с одним пультом с именем origin, предварительно сделанным, потому что git clone устанавливает один пульт для вас, и по умолчанию он использует имя origin.

Чтобы добавить другой, другой, удаленный, запустите git remote add, например:

git remote add xyzzy ssh://user-name@testing.com/path/to/repo.git

Теперь xyzzy - это имя второго удаленного сервера, которое ссылается на репозиторий Git в testing.com, доступ к которому осуществляется через ssh user-name@testing.com, и который находится в path/to/repo.git этой системы. Теперь вы можете git push xyzzy branch.

Но подождите, это еще не все!

Каждая ветвь может иметь один (и только один) параметр upstream . На самом деле ветвь ветки - это пара элементов: это имя удаленного узла плюс имя ветки. Эта пара элементов также является тем, что ваш Git использует для запоминания этой ветви , как видно на том удаленном в последний раз, когда ваш Git фактически обращался с этим другим Git.

Следовательно, если у вас есть ветвь plugh-test, которая обычно должна передаваться на удаленный xyzzy, вы можете сделать:

git branch --set-upstream-to=xyzzy/plugh-test plugh-test

Теперь ваша ветка plugh-test помнит, что ее восходящий поток - xyzzy/plugh-test, который является памятью вашего собственного Git plugh-test, как видно на удаленном xyzzy.

Если вы установили push.default simple (как по умолчанию в Git 2.0 или новее), и вы находитесь в в ветке plugh-test, вы можете просто запустить:

git push

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

Обратите внимание, что если вы случайно запустите:

git push colossal-cave

Думая, что это подтолкнет ветвь colossal-cave, этого не произойдет: позиционный аргумент здесь всегда удаленный , а не ветвь.

( xyzzy И plugh магические глаголы из Приключения в Колоссальной пещере.)

2
torek 27 Май 2017 в 21:39