Как единственный разработчик (на данный момент), как я должен использовать Git? [закрыто]

60

У меня есть несколько проектов на Git, в которые я в конечном итоге хочу привлечь других. Однако сейчас только я и я очень упрощенно используем Git и GitHub: никаких веток и просто использование коммитов в качестве резервной копии моих локальных файлов. Иногда я возвращаюсь и просматриваю предыдущие версии своих файлов для справки, но мне не нужно было делать никаких откатов до этого момента, хотя я ценю возможность, если она понадобится мне в будущем.

Как единственный разработчик, какими функциями Git или GitHub я мог бы воспользоваться, что принесло бы мне пользу прямо сейчас? Каким должен быть мой рабочий процесс?

Кроме того, есть ли какие-то конкретные практики, которые мне нужно начать делать в ожидании добавления других в мои проекты в будущем?

VirtuosiMedia
источник
3
Как объяснили другие, Git дает вам много силы. Тем не менее, будучи единственным разработчиком, позже вы по достоинству оцените то, что if дает вам записи о том, какие изменения вы внесли (сгруппировать изменения в нескольких файлах в один набор), когда вы их сделали и почему! Это также отличная практика, когда вы становитесь частью команды.
Ведущий Компьютерщик
1
Закрыто потому что интересно. :)
@ user93458 как всегда! Закрытые темы - это как раз то, что я ищу.
Мирослав Попов
отличный вопрос, который никогда не должен был быть закрыт.
первый том

Ответы:

64

Кроме того, есть ли какие-то конкретные практики, которые мне нужно начать делать в ожидании добавления других в мои проекты в будущем?

Конечно. Существует простая полезная практика, которую вы можете использовать, даже если у вас сейчас нет команды: создайте отдельную ветку для разработки. Идея состоит в том, что основная ветвь будет содержать только выпущенные версии кода или значительные изменения. Это могут быть легко приняты новыми разработчиками, которые присоединяются к вашему проекту.

Кроме того, ветвление полезно, даже если вы работаете в одиночку. Например, вы находите ошибку в процессе кодирования новой функции. Если вы не используете ветки, вам придется сделать и то и другое: добавить новые функции и исправить ошибку в той же ветке. Это не очень хорошо: P С другой стороны, если вы создали новую ветку для создания новой функции, вы можете просто извлечь ветку разработки, исправить ошибку и вернуть новую ветку функции.

Это лишь краткий пример того, что вы можете сделать, будучи единственным программистом. Я уверен, что должно быть больше хороших практик.

Я настоятельно рекомендую вам эту статью: успешная модель ветвления Git

Cristian
источник
+1 - это имеет смысл. Я тоже поближе посмотрю на эту статью, она выглядит очень полезной.
VirtuosiMedia
Я не специалист по git, в основном пользователь Mercurial. Этот совет по ветке разработки все еще остается в случае с Mercurial? Похоже, что это так, но, может быть, некоторые различия делают это не очень хорошей идеей в этом случае?
Klaim
2
Да, это в значительной степени относится ко всем источникам контроля. Я фактически делаю это назад с SVN; «основной» ствол предназначен для новейших разработок, которые выходят ежедневно или даже чаще. Когда вызывается релиз, код останавливается и ветка обрезается. Эта ветвь получает только незначительные обновления для исправления основных проблем с выпуском, а затем из этого создается распространяемый файл. Таким образом, у меня есть ветвь исходного кода за каждой выпущенной версией. Это лучше, чем просто пометка или маркировка b / c, если коммиты приходят после метки, но перед выпуском вы не знаете, были ли они на самом деле исключены.
KeithS
+1 за статью; @Klaim - да, отлично работает и для hg. действительно следует называть «успешной моделью ветвления DCVS»
Wyatt Barnett
+1 спасибо за ссылку, она изменила способ, которым я буду работать с git, не слишком много, но, как говорится, каждое маленькое помогает!
Newtopian
14

Я точно в этой ситуации, но я выбрал немного более сложный, но не обязательно более сложный рабочий процесс с Git.

Сначала целью было научиться работать с ним, поэтому я немного изучил его. затем вернулся к описанному выше рабочему процессу.

Через некоторое время с этим стало трудно работать, так как возникли некоторые ситуации, и это дало мне вредные привычки, которые трудно было бы сломать, когда я присоединюсь к команде.

поэтому я согласился на следующее:

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

Я также настраиваю учетную запись git hub, где я синхронизирую транк. Это позволило мне легко начать работать на разных компьютерах. Это было по необходимости, но позволило мне найти ошибки, которые были связаны с окружением, в котором я находился, и которого не было на других компьютерах. Так что теперь у меня есть привычка хотя бы один раз попробовать проект в другой «девственной» системе. Избавляет меня от головной боли, когда приходит время развертывания для клиента.

  • Я отмечаю каждую версию, которая превращает его в GitHub как выпускаемую версию.
  • Если он будет выпущен для клиента, я разветвлюсь из этой версии, чтобы создать вторую стабильную соединительную линию для исправлений ошибок, объявленных клиентом.

Сначала несколько веток казались излишними, но это ДЕЙСТВИТЕЛЬНО помогло. Я мог начать идею в ветке, поработать над ней некоторое время, и когда я начал бегать кругами, я сдался и начал другую ветку, чтобы работать над чем-то другим. Позже пришла идея, где я вернусь к полуобжаренной ветке и исследую эту идею. В целом это сделало меня НАМНОГО более продуктивным, так как я мог очень быстро проявить идеи и идеи и посмотреть, сработало ли это. Стоимость переключения веток с помощью GIT чрезвычайно низкая, что делает меня очень ловким с моей базой кода. Тем не менее, я все еще должен освоить концепцию rebase, чтобы очистить свою историю, но, поскольку я совсем один, я сомневаюсь, что мне действительно нужно. Выдвинул это как "приятно учиться".

Когда все ветвления усложнились, я исследовал опцию log, чтобы нарисовать дерево изменений и посмотреть, где какая ветвь.

Короче говоря, git не похож на SVN, CVS или (бррр) TFS. Ветвление очень дешево, и делать ошибки, которые уничтожат работу, на самом деле довольно сложно. Только однажды я потерял какую-то работу, и это было потому, что я сделал свои коммиты слишком большими (см. Дурные привычки выше). Если вы часто делаете коммиты, git будет вашим лучшим союзником.

Для меня git открыл мой разум для того, что на самом деле все о контроле над источниками. Все остальное раньше было просто попытками получить это, git - первое, что, на мой взгляд, получило это. Тем не менее, я не пробовал другие DVCS, вполне возможно, что это утверждение может быть расширено для всей семьи.

Последний совет, командная строка - твой друг. Нельзя сказать, что графические инструменты не очень хороши, скорее наоборот, но я действительно вздрогнул от мерзавца, когда спустился в командную строку и попробовал его сам. Это на самом деле очень хорошо сделано, легко следовать с очень всеобъемлющей системой помощи. Моя самая большая проблема была связана с ужасной консолью в Windows, пока я не нашел альтернативы.

Теперь я использую обе возможности: интеграцию Eclipse с Git, чтобы увидеть, что происходит в режиме реального времени, и выполнить некоторые операции, такие как diff, изучить историю файла и т. Д. И командную строку для ветвления, слияния, перемещения, получения и более сложных деревьев журналов. , некоторые базовые сценарии, и я никогда не был настолько продуктивным в отношении контроля над источниками, и у меня никогда не было такого большого контроля над своим источником.

Удачи, надеюсь, это помогло.

Newtopian
источник
4

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

Карл Билефельдт
источник
4

Для более простой модели вы можете посмотреть, что делает GitHub. «Поток GitHub» очень прост, и здесь есть отличное руководство: https://guides.github.com/introduction/flow/index.html

Резюме (из блога Скотта Чакона ):

Итак, что такое GitHub Flow?

  • Все в основной ветке можно развернуть
  • Чтобы поработать над чем-то новым, создайте ветвь с именем с описательным именем от master (то есть: new-oauth2-scopes)
  • Выполните эту ветку локально и регулярно отправляйте свою работу в одноименную ветку на сервере.
  • Если вам нужна обратная связь или помощь, или вы считаете, что филиал готов к объединению, откройте запрос на включение.
  • После того, как кто-то еще проверил и подписал эту функцию, вы можете объединить ее с основным
  • Как только он объединен и передан в «master», вы можете и должны немедленно развернуть
AdrianoFerrari
источник