Git рабочий процесс для внесения небольших изменений в большой совместный проект? - PullRequest
1 голос
/ 02 апреля 2012

Я начал пытаться внести свой вклад в крупный (около десяти миллионов строк C ++), известный проект с открытым исходным кодом, предоставляя небольшие исправления в свое свободное время.Проект управляется с помощью Git, для которого я совершенно новичок.Я пытался найти информацию о том, как лучше всего его использовать, но все, что я могу найти, это сложные религиозные споры по поводу пустяков, например, использовать ли git fetch или git pull.Может ли кто-нибудь сказать мне очень просто, какие команды мне нужно выполнить, чтобы упростить следующий рабочий процесс?

  1. Извлечение полного источника.
  2. Начните работать над некоторыми функциями или исправлением ошибки
  3. Продолжайте ежедневно проверять полный исходный код и объединять мои изменения с ним.
  4. Создание патча со всеми различиями между моим деревом и удаленным главным репозиторием
  5. (При необходимости) откат любых изменений со времени моего последнего коммита
  6. (При необходимости) откат любых различий между моим деревом и удаленным главным репозиторием

Ответы [ 2 ]

4 голосов
/ 02 апреля 2012
  1. Оформить заказ полностью.

    git clone git://url

  2. Начните работать над некоторыми функциями или исправлением ошибки

    Если вы работаете над несколькими вещами одновременно, желательно сделать отдельные ветви для каждой функции. Это обычно упоминается как тематические ветки.

    git checkout -b <branch name> <desired base commit>

  3. Продолжайте ежедневно проверять полный источник и объединять мои изменения так далеко с этим.

    Если вы используете ветки тем, подойдет простой git pull. Вместо этого, если вы работаете над мастером (вы пропустили шаг (2)), тогда я бы рекомендуем использовать git pull --rebase. Таким образом, ваша работа будет основана по последнему совету мастера по происхождению.

  4. Создание патча со всеми различиями между моим деревом и удаленный главный репозиторий

    Если вы уверены, что написали функцию без ошибок (хорошо удачи!) вы можете объединить изменения (если вы использовали ветки тем) git merge master, разрешите все конфликты и подтвердите. Тогда ты можешь сгенерируйте ваши патчи с помощью

    git format-patch <base commit for your feature>

  5. (При необходимости) откат любых изменений со времени моего последнего коммита

    Для отката вы можете использовать git reset <options>. Есть несколько я бы посоветовал вам посмотреть на man git-reset как различия довольно тонкие. Если вы хотите избавиться от своей работы полностью (вы действительно уверены?), опция --hard должна сделать трюк. С другой стороны, если вы хотите отменить совершенное изменение с отдельным коммитом git revert <commit> ваш друг.

  6. (При необходимости) устранение любых различий между моим деревом и удаленный главный репозиторий

    Не уверен, что вы имеете в виду здесь, но если вы имеете в виду обновление локального репо с последними изменениями в апстриме, я полагаю (3) адреса, которые.

1 голос
/ 02 апреля 2012
1$ git clone <repository> <directory>
2$ <edit as you please>     # suggest 'git checkout -b <new branch>' prior to edit
3$ git pull origin master
4$ git push origin master    # you probably won't have permission for this, ask repo admins
5$ git reset --hard
6$ git checkout -b <new branch> origin/master   # not a rollback, just leave your stuff and shift to a new branch.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...