Git - Форкинг без Github - PullRequest
       27

Git - Форкинг без Github

7 голосов
/ 18 января 2011

Функция "разветвления" специфична для github? или существует чисто git-процесс для создания «скопированных» дочерних репозиториев, которые могут получать обновления от родительского? Если да, то как?

РЕДАКТИРОВАТЬ: Я должен быть смущен о том, что тогда делает git clone. Насколько я понимаю, git clone - это то, что я делаю на своей машине, чтобы получить локальную копию хранилища для внесения изменений в commit и push. В настоящее время мы размещаем наши репозитории с gitosis . Так что, если бы я хотел выполнить «форк», я бы клонировал репозиторий на самом сервере gitosis (в начале)? Это создаст новый адрес git?

Ответы [ 4 ]

7 голосов
/ 18 января 2011

Вы, вероятно, не хотите делать это на самом деле.Ветви в git очень хороши и легки, и на самом деле нет причины, по которой вы не должны просто делать ветки в имеющемся у вас хранилище.Единственная причина, по которой я могу сделать это с помощью репозитория gitosis, заключается в том, чтобы сделать управление доступом интересным, если у вас есть непрерывное развертывание или что-то, что извлекается из одного репозитория gitosis, и вы хотите предоставить коммитный доступ к тому же коду, но нене хочу, чтобы они могли писать на тот, который развернут.Для всех остальных применений вы должны просто создать ветку с git branch и выполнить всю свою работу над веткой.С другой стороны, вы можете захотеть клонировать репозиторий github, а затем поработать над ним в рамках вашей центральной архитектуры Gitosis.

Учитывая это предварительное предупреждение, самый простой способ создать «форк» так, как вы описываете, это сделать отдельный репозиторий на сервере Gitosis.Поэтому настройте другой репозиторий с другим именем - например, если ваш исходный репозиторий имеет значение gitosis@server:repo1.git, вы должны установить другой репозиторий на gitosis@server:repo1-fork.git.Добавьте любых пользователей, которым вы хотите иметь доступ.

Затем вы бы клонировали репозиторий: git clone gitosis@server:repo1.git, который помещает полную копию репо в ./repo1.Чтобы скопировать его из локальной версии в разветвленный репозиторий, вы можете сделать git push gitosis@server:repo-fork.git --mirror.

7 голосов
/ 18 января 2011

Форкинг на Github эквивалентен простому git clone, хотя в случае с форком это больше похоже на git clone --mirror.

4 голосов
/ 18 января 2011

Каждый раз, когда вы git clone хранилище, вы фактически создаете форк.Единственное, что делает функциональность форка GitHub - это делает клон репозиторием GitHub с веб-страницей, графиками, статистикой и всем этим хорошим материалом.

Также, когда вы клонируете репозиторий, Git автоматически делает исходный репозиторийрепо по умолчанию «upstream» (пульт называется origin).Итак, из коробки git pull без аргументов должно вытягиваться прямо из оригинала.

3 голосов
/ 05 октября 2016
# clone wanted repo
git clone https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

# cd into created folder
cd ORIGINAL_REPOSITORY

# add your remote repository as origin
git remote add origin https://github.com/my_user/my_repository.git

# add original repository as upstream
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

# when want to pull from upstream just
git pull upstream master

# when want to create upstream pull-request just
# https://git-scm.com/docs/git-request-pull
# commit-hash - from where to start pull request
git request-pull commit-hash git@github.com:my_user/my_repository.git
...