Подтвердить что ты не робот

Как выталкивать из одного открытого репозитория git в другое?

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

Мы не можем создать ветвь на самом сервере репо из-за более высоких взлетов.

  • Создавайте и отправляйте электронные письма друг другу, затем теряйте изменения и используйте diff, когда нам нужно вернуться к странице групп. Человек, получающий электронные письма, применяет diff. и т.д.
  • Мы вносим изменения в наш код, фиксируем его, но не нажимаем на него. Тогда тот, кто нуждается в этом неполном коде, может напрямую отвлечься от нас.
  • Сделайте еще один клон центрального сервера с флагом -bare. Поэтому мы можем рассматривать его как локально-центральный сервер только для страницы групп. Мы можем извлечь из него и создать отдельную рабочую область для группы. Мы можем тянуть и тянуть к нему.

Теперь у каждого из них есть проблемы.

  • слишком утомительно. Я хочу использовать git для этого.
  • Когда кто-то вытащил меня, а затем работал над новой функцией, а затем он толкает (на центральный сервер), то то, что он вытащил от меня, не попадает на сервер. Как он, наконец, подтолкнет его к серверу, когда код страницы наших групп будет завершен.
  • Та же проблема. Есть ли способ, который я нажимаю с этого локально-центрального сервера на главный сервер? Разумеется, оба являются голыми репозиториями. Есть ли способ проталкивать от одного голого клона к основному реплиту github?
4b9b3361

Ответ 1

3 - ваш лучший вариант. На самом деле, действительно, как Git предполагается использовать; с репозиториями для отдельных компонентов, которые будут работать в более центральном репозитории при выполнении работы.

Нет проблем с нажатием каких-либо изменений. Допустим, вы внесете изменения и перетащите их в репозиторий страниц групп. Затем я тяну это, делаю некоторые изменения и отталкиваю их назад. Теперь мы решили, что мы закончили. Если я нажму на центральный репозиторий, это нажатие будет включать как мои изменения, так и ваши изменения, на которых были основаны мои изменения.

Вам не нужно нажимать с одного голого репо на другое. Git работает, отталкиваясь от вашего локального репо, к одному или нескольким удаленным репозиториям. Когда вы клонируете, существует дистанционное репо по умолчанию, называемое "происхождение". Но вы можете настроить столько удаленных репозиториев, сколько хотите. Чтобы установить это, скажем, вы клонировали из центрального репо; который называется "происхождение". Теперь вы создаете голый репо: он находится в ssh://some-machine.corp.com/path/to/groups-repo.git. В своем локальном рабочем репо просто git remote add groups ssh://some-machine.corp.com/path/to/groups-repo.git, и у вас будет ссылка на это репо. Теперь вы можете использовать git fetch, git pull, git push и т.д. С помощью groups, а также с origin.

Ответ 2

Чтобы сделать его простым, Git - это система управления версиями распределенная. Это означает, что всякий раз, когда вы клонируете репо, вы клонируете весь репозиторий. И каждый клон полностью независим. Фактически, то, что вы клонируете на своей машине, точно такое же, как на сервере, ваш клон может получать push/pull и т.д. (Только разница, вероятно, в том, что вы не позволяете никому подключаться через ssh)

Итак, как бы вы ни пошли, если ваши коллеги выйдут от вас, они могут подтолкнуть вашу фиксацию к основному репо. То же самое будет применяться с вариантом 3, используйте команду Git server, и когда будете готовы, некоторые из вас потянутся к его машине и оттолкнутся оттуда на главный сервер.

Итак, в вашем случае вариант 3 будет самым простым. Хотя, как только вы нажмете на основное репо, это репо даст всю работу, которую вы сделали на своем частном сервере. Поэтому я даже не уверен, что вам действительно полезно иметь собственный сервер (если вы не хотите, чтобы никто не касался вашего ветки "private").

Ответ 3

Есть ли способ проталкивания от одного голого клона к основному репозиторию github?

Да, вам не обязательно находиться в рабочем дереве, чтобы перетаскивать изменения из голого репо.

Просто ssh в том месте, где находится ваш локальный мастер, и запустите:

git push origin master

Как и в другом ответе, вы также можете нажать прямо из локальной копии на удаленный мастер, но иногда удобнее иметь автоматический репозиторий "gatekeeper", подобный этому, который может быть запущен для вытеснения изменений (например. после просмотра) в несколько удаленных репозиториев с помощью автоматизации, не беспокоясь о настройке ключей ssh ​​и т.д. для конкретного человека, чтобы вывести изменения.