Git отключить pushing из локального репозитория - PullRequest
11 голосов
/ 04 декабря 2011

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

Чтобы не испортить ситуацию и не внести изменения, которые видит только одна компания, есть ли способ разрешить выборки только на основе локального репозитория? Я все еще хочу иметь возможность вносить изменения в ядро ​​репозитория из моей среды разработки, но не хочу, чтобы производственные машины могли продвигаться.

Ответы [ 2 ]

15 голосов
/ 04 декабря 2011

Укажите несуществующий pushurl в удаленном разделе репозитория клонов-источников (называемого источником) в файле .git/config.Пример:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = <url>
        pushurl = www.non-existing-url.com

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

$ git config remote.origin.pushurl www.non-existing.com

При нажатии вы получите сообщение об ошибке типа:

$ git push
fatal: 'www.non-existing-url.com' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Конечно, вам нужно будет отредактировать файл конфигурации каждого клонированного репозитория.

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

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

git remote set-url --push origin www.non-existing-url.com

должно работать так же

...