Git с «двухступенчатым пультом» - PullRequest
1 голос
/ 07 января 2010

У меня есть проект, размещенный на GitHub, и я хотел бы работать над ним локально. У меня есть несколько компьютеров, которым требуется доступ к нему, и я хотел бы поделиться кодом между ними. Однако я не хочу, чтобы все эти коммиты были запущены на GitHub, поэтому простой подход «клон, а затем просто пуш-пул» не подходит.

По сути, я хочу это:

[GitHub] --> [A Local Network Share] --> [PC1]
                                     --> [PC2]

Таким образом, ПК1 и ПК2 должны иметь возможность выдвигать / извлекать ресурсы в локальную сеть и, таким образом, обмениваться кодами друг с другом, и время от времени я хочу отправить эти изменения в мой репозиторий GitHub.

Я немного растерялся - просто создать ветку? Или я получу git clone из GitHub в свою общую папку, а затем git clone из моей общей папки на PC1 и PC2, в результате чего у них будет только 1 удаленный (общий ресурс), а у общего ресурса только 1 удаленный (GitHub)?

Редактировать: Это не для безопасности - я не против, когда все немедленные коммиты переходят на GitHub, и я также не хочу препятствовать PC2 получить доступ к GitHub. Более того, я не хочу настраивать весь SSL-компонент, и потому что я тот, кто выполняет очень часто (иногда каждые несколько минут - я использую git commit в качестве расширенной функции отмены), и я хочу, чтобы код на GitHub всегда быть компилируемым.

Редактировать 2: Решения здесь у меня еще не сработали :( Так я и делаю

git clone --bare git@github.com:foo/bar

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

Однако на сервере ничего не настроено должным образом - пульты не добавлены, и я не могу нажать оттуда. С помощью git add легко добавить пульт, но как мне нажать? git status говорит, что для этого требуется рабочий каталог (которого у нас нет с --bare), а git push говорит: «Все в курсе», хотя это не так (я сделал изменение на ПК1 и git отправил на сервер ) * * тысяча двадцать-один

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

Я пропустил здесь шаг?

Ответы [ 3 ]

3 голосов
/ 07 января 2010

Второго решения должно быть достаточно.

  • Создание форка будет означать, что вашей промежуточной ступенью будет GitHub ( a fork - git clone на GitHub)
  • создание ветки ничего не решает с точки зрения совместного использования кода

Если вы сделаете git clone --bare myGitHubRepo.git для своей общей папки, а затем клонируете эту sharedRepo на ПК1 и ПК2, вы настроите для каждого из этих репо ПК естественное назначение для их push / pull.

Редактировать с помощью mstum: Этот подход работает и является правильным, но пропускает шаг. Голый клон на сервере не имеет удаленной настройки. Это должно быть сделано либо с

git remote add origin git@github.com:user/Project.git

или каждый переход с сервера на gitHub должен быть

git push git@github.com:user/Project.git
1 голос
/ 07 января 2010

Это вполне достижимо. Сначала сделайте голый клон репозитория github:

git clone --bare git@github:foo \\network\foo

Хранилище пустое (не содержит рабочей копии, чтобы вы могли клонировать его локально и отправить к нему).

Затем на каждом ПК вы клонируете сетевое местоположение:

git clone \\network\foo foo

Затем вы работаете с каждым репозиторием, делаете ветки, коммиты и т. Д. И помещаете их в общий ресурс. Когда вы будете готовы перейти на github, перейдите на \\network\foo и нажмите оттуда.

0 голосов
/ 07 января 2010

Это для безопасности, чтобы у PC2 не было доступа к push на github? Для этого я обычно устанавливаю несколько пультов http://www.kernel.org/pub/software/scm/git/docs/git-remote.html'>git со своего компьютера для разработки. Разработчики, у которых нет прямого доступа к главному пульту, могут выдвигать / извлекать отдельный пульт. Затем вы можете передать их изменения в другой локальный филиал и объединить их, как считаете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...