Могу ли я сопоставить локальные ветки с удаленными ветвями с разными префиксами в git?

Мы работаем с полуцентрализованным репозиторием git здесь, где я работаю. У каждого разработчика есть собственное поддерево в центральном репозитории git, поэтому оно выглядит примерно так:

master
alice/branch1
alice/branch2
bob/branch1
michael/feature
release/1.0
release/1.1

Работая локально в моем дереве, у меня есть topic/feature, который соответствует michael/feature в центральном дереве.

Я использовал

git push origin topic/feature:michael/feature

Чтобы отправить мои изменения в удаленное дерево. Однако это обременительно и подвержено ошибкам (например, пропуск имени разработчика, неправильное написание имени функции и т. д.).

Я ищу более чистый способ сделать это. Например, «git push». Я подозреваю, что установка другого пульта дистанционного управления с измененной ссылкой на выборку сделает это, но я не уверен, как именно это сделать. Я также не уверен, как изменить мои текущие определения веток, чтобы использовать другой пульт.

Мой текущий .git/config выглядит примерно так:

[remote "origin"]
    url = git://central/git/project
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "topic/feature"]
    remote = origin
    merge = refs/heads/michael/project

Редактировать: Я также хотел бы применить это к извлечению / извлечению. Но позаботится ли об этом branch.<name>.merge?

Я продолжу исследовать это и опубликую здесь, если что-то найду, но я надеюсь получить и другие хорошие идеи.

Изменить 2: Я решил оставить имена локальных и удаленных веток одинаковыми. Похоже, это будет наименее трудоемким и наименее подверженным проблемам в будущем.

Когда вы изменяете .git / config, не забудьте сначала сделать его резервную копию. Если вы что-то напортачите, вам нужно только восстановить заведомо исправную версию файла, чтобы вернуться в соответствующее состояние.

webmat 04.10.2008 02:23

На самом деле это часто возникает при развертывании git для размещения таких сервисов, как Heroku, Nodester и AppFog.

studgeek 12.07.2012 01:42
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Можете ли вы объяснить разницу между ngOnInit и конструктором в Angular?
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
12
2
3 785
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

В разделе [удаленное "происхождение"] добавьте по одной строке для каждого сопоставления. В том числе от мастера к мастеру.

push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature

Я не уверен, как это сделать с помощью команды git-config.

Имейте в виду, что с этого момента все ветки выталкиваются одновременно, когда вы выполняете прямой git push (без параметров).

Не могли бы вы объяснить, почему вы не сохраняете одни и те же имена веток локально и удаленно?

Хороший аргумент в отношении соответствия ветвей ... Я могу переключиться на это. Вместо этого можно ли включать в push-сопоставления подстановочные знаки, аналогичные общему в вопросе?

Michael Johnson 04.10.2008 09:58
Ответ принят как подходящий

Если вы можете, я предлагаю вам использовать одни и те же имена веток локально и удаленно. Затем git push переместит все ваши локальные ветки в соответствующие ветки в центральном репозитории.

Чтобы использовать разные префиксы в локальных и удаленных репозиториях, вам необходимо добавлять сопоставление в ваш файл конфигурации каждый раз, когда вы создаете новую ветку функции. Команда для настройки сопоставления для темы / BRANCH_NAME:

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME

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

git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master

Ваша конфигурация в конечном итоге похожа на то, что предлагает @Paul (на самом деле, немного «проще»).

См. Эту суть (с моими настройками) для шагов по использованию, которые подходят мне https://gist.github.com/2002048.

Использовать

git branch --set-upstream-to=origin/remoteBranch localBranch

Пожалуйста, добавьте объяснение, чтобы автор сообщения также мог узнать, как это работает.

JGallardo 23.10.2020 18:46

Другие вопросы по теме