Могу ли я сопоставить локальные ветки с удаленными ветвями с разными префиксами в 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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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 [email protected]: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

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