Можно ли перенести ветку на два пульта, каждый с разными именами веток? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два репозитория (два удаленных).

У меня есть ветвь staging, которую я хотел бы нажать на удаленный a на ветви staging и удаленный b на главном филиале.

По существу:

staging -> a/master
staging -> b/staging

Возможно ли это настроить с помощью git config?Поэтому мне понадобится один git push?

В качестве альтернативы я могу сделать:

git push a staging/master
git push b staging/staging

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Технически не с буквальным одиночным git push, но вы можете эффективно достичь желаемого точного поведения с локальным (только проект, иначе не --global) псевдоним git .

Отредактируйте файл .git/config в каталоге вашего проекта.Лучше всего редактировать файл напрямую, а не запускать git config ... из терминала, чтобы избежать проблем с цитированием / экранированием.Добавьте это в конец:

[alias]
  pushall = "!git push a staging:master; git push b staging"

(pushall может быть любым, если вы не используете команду по умолчанию git.)

! означает запускэто из оболочки (например, набрав его в терминал).Эта команда говорит: «Передайте локальную промежуточную ветвь на ведущую на удаленном сервере a и добавьте локальную промежуточную ветвь на удаленной стороне b, только .

Чтобы проверить, у нас есть два пульта с главной веткой ипромежуточная ветвь:

I] sean at goz in ~/d/stack (staging|✔)
> git remote -v
a       git@github.com:sh78/stack.git (fetch)
a       git@github.com:sh78/stack.git (push)
b       git@bitbucket.org:musophob/stack.git (fetch)
b       git@bitbucket.org:musophob/stack.git (push)

Теперь мы вносим некоторые изменения и фиксируем:

[I] sean at goz in ~/d/stack (staging|✔)
> touch afile
[I] sean at goz in ~/d/stack (staging|…1)
? (0) git add afile
[I] sean at goz in ~/d/stack (staging|●1)
> git commit -m "test"
[staging 64e5ee6] test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 afile

Теперь мы используем наш локальный псевдоним:

[I] sean at goz in ~/d/stack (staging↑1|✔)
> git pushall
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 269 bytes | 89.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To github.com:sh78/stack.git
  bb8587b..64e5ee6  staging -> master
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 269 bytes | 269.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
remote:
remote: Create pull request for staging:
remote:   https://bitbucket.org/musophob/stack/pull-requests/new?source=staging&t=1
remote:
To bitbucket.org:musophob/stack.git
  1e5a81a..64e5ee6  staging -> staging

В результате нашcommit с afile передается в главную ветвь удаленного a (не промежуточная) и одновременно передается в промежуточную ветвь удаленного b (не ведущую). Я подтвердил это на живых удаленных устройствах с помощью GitHub (™ Microsoft Corporation)и BitBucket.

0 голосов
/ 08 июня 2018

Нет, вы не можете настроить 2 пульта для филиала и не можете настроить push.default для отправки в филиалы с разными именами.Вам необходимо выполнить следующие команды:

git push a staging:master
git push b staging:staging

Последняя может быть сокращена до

git push b staging

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

git push -u b staging

и теперь голый git push подтолкнет staging к удаленной b ветви staging, но это все.Первая команда (git push a staging:master) не может быть сокращена или автоматизирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...