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

StackOverflow https://stackoverflow.com/questions/167697

  •  03-07-2019
  •  | 
  •  

Вопрос

Мы работаем с полуцентрализованным 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

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

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

Мой текущий .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 . Я решил, что имена локальных и удаленных веток будут одинаковыми. Похоже, что это будет наименьшая работа и наименее подвержены будущим проблемам.

Это было полезно?

Решение

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

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

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

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

В разделе [remote " origin "] добавьте по одной строке на отображение. Включая мастер-мастер.

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top