Как работать на развилке проекта при наличии оригинала в Eclipse? - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь создать на GitHub запрос на извлечение проекта "original / QWERTY", поэтому я поставил репо на "Mark / QWERTY". В Eclipse у меня уже есть репозиторий, настроенный для «original / QWERTY», и этот проект находится в моей рабочей области с именем QWERTY.

Теперь, если я создам новый репозиторий, указывающий на «Mark / QWERTY», у меня будет два проекта с одинаковым именем, и обоим Eclipse и мне это не понравится.

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

Как правильно настроить два проекта GitHub для создания запроса на извлечение из моего форка в Eclipse с EGit?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

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

Сначала сделайте эти 2 вещи в любом порядке:

  • fork оригинальный проект на сайте github, так что теперь у вас есть оригинал и разветвление. У них одинаковый код и ветви.
  • создать локальный репозиторий, указывающий на оригинал репо на github. Допустим, вы решили выбрать только ветку master.
    • Remotes: вы получите новый пульт, я позвоню origin (по умолчанию). настроить его выборку, если это не сделано для вас, спецификация по умолчанию +refs/heads/*:refs/remotes/origin/*. Эта справочная спецификация отображает все ветки репо на ветки удаленного отслеживания с тем же именем. Если вы хотите получить только ветку master, используйте +refs/heads/master:refs/remotes/origin/master.
    • Ветви: вы получаете ветку «Remote Tracking» с именем origin/master и локальную ветку с именем master с конфигурацией «Remote: origin» и «Upstream Branch: refs /head / master». Вы будете работать под локальным master, поскольку сейчас это единственная ветвь.

Теперь вы хотите быть в состоянии продвинуться к своей вилке, чтобы вы могли создать PR. Вы можете и уже использовали оригинал, чтобы получать обновления от работы других людей.

  • Щелкните правой кнопкой мыши на "Remotes" и создайте новый пульт, я назову его fork (называйте как хотите). Настройте его толчок.
    • URI указывает на вашу вилку так же, как origin Удаленный URI указывает на оригинал.
    • Ref map отображает ветви. Перейдите в «Advanced» и нажмите «Add All Specs Specs», если это не сделано для вас. Вы должны получить спецификацию refs/heads/*:refs/heads/*. С этой спецификацией легко работать, но вы можете изменить ее на все, что вам нужно.
  • Создайте локальную ветвь (щелкните правой кнопкой мыши -> переключиться на -> новую ветвь), источником которой является локальная ветвь с именем master, и имя ветви соответствует тому, что она делает. это может быть ветка master или новая ветка, которая, скажем, исправляет ошибку, поэтому bug 123. У вас нет ветки удаленного отслеживания, потому что они используются для вытягивания. Если вы также извлекаете из fork, вам необходимо настроить это в Remote fork и получить удаленную ветку.
  • Теперь вы работаете в местном филиале bug 123 (рядом с ним вы можете увидеть галочку). Исправьте ошибку в своем коде, и в представлении Git Staging вы увидите измененные файлы и заголовок <Repository name> [bug 123]. Убедитесь, что вы собираетесь совершить / нажать на правильную ветку! Подготовьте все, что вам нужно, и зафиксируйте (добавляет изменения в локальную ветку bug123) и нажмите (создайте ветку в репозитории github с именем bug 123, если вы остались со спецификацией по умолчанию).
  • Теперь перейдите на страницу репозитория GitHub оригинала или форка, и пользовательский интерфейс сообщит вам, что вы можете создать PR. Оттуда GitHub поможет вам.

После того, как PR объединен с master веткой оригинала на GitHubm, вы захотите извлечь из master.

  • Щелкните правой кнопкой мыши на пульте дистанционного управления origin или выберите его «subdir» и выберите выборку. Будут извлекать любые изменения в всех удаленных ветвях, потому что спецификация выборки, которую мы использовали, отображает все ветки (мы использовали символ *).

Вот и все. Продолжайте переключаться на локальную ветку, которая отображается на вашем форке на основе обновленного master, исправляйте ошибки, фиксируйте и нажимайте, создавайте PR, ждите слияния с оригиналом, извлекайте и извлекайте из оригинала.

0 голосов
/ 27 октября 2018

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

При такой настройке вы можете переключаться между ветвямикоторые исходят из разных удаленных репозиториев.

Документация Fork a repo GitHub объясняет эту настройку при использовании CLI Git.Большая часть этого также должна применяться к репозиториям, размещенным в других местах.

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

Как управлять несколькими удаленными устройствами с помощью EGitзадокументировано здесь: https://wiki.eclipse.org/EGit/User_Guide#Remote_Repositories

...