Как сделать ссылку на ветку git доступной только для чтения? - PullRequest
7 голосов
/ 21 марта 2012

Как я могу сказать git, что хотя я хочу разрешить "git fetch" в определенных ветвях, я не хочу разрешать "git push" в этих ветвях.

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

Это мой удаленныйхранилище, и в других контекстах я хочу быть в состоянии проникнуть во все его ветви.Но не из этого конкретного локального экземпляра.

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

Сейчас самое лучшее, что я могу сделать, это сделатьуверен, что моя локальная копия устарела для вышестоящих веток, которые я хочу оставить нетронутыми.(Кроме того, указание получающей ветви в явной форме в моей командной строке git push - указание, что я хочу вставить только в удаленный экземпляр, соответствующий локальной проверенной ветви - предотвращает вставку в нежелательные ветви. Но я хотел бы устранить это осложнение.)

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

На самом деле, похоже, что push.default = current будет делать то, что я хочу.

Это не совсем то, что я просил, но это "достаточно хорошо".И оно имеет преимущество в том, что оно простое.

Простота - это добродетель - упрощает понимание и использование системы.

Это также близко имитирует поведение, которое, как мне кажется, я вижу в git pull.

0 голосов
/ 22 марта 2012

Подобно тому, что Borealid сказал в комментариях, в вашей локальной копии вы должны установить git config push.default upstream, а затем дополнительно убедиться, что ветвям, которые вы не хотите использовать, не нужно назначать ветку восходящего направления. , Есть команда git branch --set-upstream, но она не позволит вам установить пустую исходную конфигурацию для ее удаления, поэтому вам придется вручную отредактировать ваш файл .git / config и удалить строку merge = refs/heads/* из разделов соответствующие филиалы.

...