Як єдиний розробник (поки що), як я повинен використовувати Git? [зачинено]


60

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

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

Крім того, чи є якісь конкретні практики, які мені потрібно почати робити в очікуванні додати інших до моїх проектів у майбутньому?


3
Як пояснили інші, Git дає багато сил. Як єдиний розробник, головне, що ви оціните згодом, це те, що якщо ви отримуєте записи про внесені вами зміни (групування змін декількох файлів в один набір), коли ви вносили їх і чому! Це також чудова практика, коли ти стаєш частиною команди.
Ведучий Geek

1
Закрито, бо цікаво. :)

@ user93458 як завжди! Закриті теми, як правило, саме те, що я шукаю.
Мирослав Попов

відмінне запитання, яке ніколи не повинно було бути закритим.
том перший

Відповіді:


64

Крім того, чи є якісь конкретні практики, які мені потрібно почати робити в очікуванні додати інших до моїх проектів у майбутньому?

Звичайно. Існує проста хороша практика, яку ви можете використовувати, навіть якщо зараз немає команди: створіть окрему гілку для розвитку. Ідея полягає в тому, що головна гілка міститиме лише випущені версії коду або основні зміни. Це можуть легко прийняти нові розробники, які приєднаються до вашого проекту.

Крім того, розгалуження корисно, навіть якщо ви працюєте сольно. Наприклад, ви виявляєте помилку під час процесу кодування нової функції. Якщо ви не використовуєте гілки, вам доведеться зробити і те, і інше: додати нові функції та виправити помилку в одній гілці. Це не добре: P З іншого боку, якщо ви створили нову гілку для створення нової функції, ви можете просто оформити гілку розвитку, виправити помилку та повернути назад нову гілку функції.

Це лише короткий приклад того, що можна зробити єдиним програмістом. Я впевнений, що має бути більше хороших практик.

Я настійно рекомендую вам цю статтю: Успішна модель розгалуження Git


+1 - Це має сенс. Я також детальніше ознайомлюсь із цією статтею, це виглядає дуже корисно.
VirtuosiMedia

Я не фахівець з git, переважно користувач Mercurial. Чи є ця порада відділу розробників все ж таки у випадку з Меркуріалом? Схоже, це так, але, можливо, деякі розбіжності роблять це в цьому випадку недоброю ідеєю?
Клайм

2
Так, це в значній мірі стосується всього контролю джерел. Я фактично роблю це за допомогою SVN; "основний" багажник - це для останньої розробки, яка йде щодня або навіть частіше. Коли вимагається випуск, код заморожують і вирізають гілку. Ця гілка отримує лише незначні оновлення, щоб виправити основні проблеми з випуском, а потім із цього створюється розподільний файл. Таким чином, я маю гілку вихідного коду за кожною випущеною версією. Це краще, ніж просто позначати чи маркувати b / c, якщо комісії надходять після мітки, але перед випуском ви не знаєте, чи були вони фактично виключені.
KeithS

+1 для статті; @Klaim - так, чудово працює і для hg. насправді слід назвати "успішною моделлю розгалуження DCVS"
Wyatt Barnett

+1 спасибі за посилання, це змінило спосіб я працювати з git, але не з великим розумом, але, як кажуть, кожен маленький трішки допомагає!
ньютопійський

14

Я перебуваю саме в цій ситуації, але я вибрав дещо складніший, але не обов'язково більш складний робочий процес з Git.

Спочатку метою було вивчити спосіб git, тому я трохи досліджував. потім повернуто в значній мірі описаний вами робочий процес.

Через деякий час з цим стало важко працювати, оскільки виникали деякі ситуації, і це дало мені шкідливі звички, які важко було б порушити, коли я приєднаюся до команди.

тож я вирішив наступне:

  • Місцеве сховище для роботи.
  • Основна гілка як стабільний магістраль для програми
  • Одна гілка для кожної функції / рефактора, в основному одна гілка для кожного суттєвого зміни, яке буде зроблено.
  • З’єднайтеся назад до стовбура, коли гілка стабільна і пройдуть усі тести.

Я також встановлюю обліковий запис git hub, де я синхронізую магістраль. Це дозволило мені легко почати працювати на різних комп’ютерах. Це було необхідністю, але дозволило мені знайти помилки, прив’язані до середовища, в якому я знаходився, і які не були доступні на інших комп’ютерах. Тож тепер я маю звичку хоч раз спробувати проект у іншій "незайманій" системі. Врятує мені багато головних болів, коли настає час розгорнути клієнта.

  • Я тегую всі версії, що перетворюють його на github як звільну версію.
  • Якщо випущений клієнтом, я перейду на цю версію, щоб створити другий стабільний магістраль для виправлень помилок, заявлених клієнтом.

Кілька гілок спочатку здавалися надмірними, але це дійсно дуже допомогло. Я міг запустити ідею у філії, попрацювати над нею деякий час, і коли я запускаю гуртки, я відмовився і почав іншу гілку працювати над чимось іншим. Пізніше з’явилася ідея, де я повернусь до напівзапеченої гілки та досліджую цю ідею. це в цілому зробило МНЕ набагато продуктивнішим, оскільки я міг діяти спалахів та ідей дуже швидко і побачити, чи спрацювало це. Вартість перемикання гілок з GIT надзвичайно низька, що робить мене дуже спритним зі своєю базою коду. Це сказало, що я все ще повинен освоїти концепцію ребазування, щоб очистити свою історію, але, оскільки я один, я сумніваюся, що мені це справді потрібно. Підштовхнув це як "приємно вчитися".

Коли все розгалуження ускладнилося, я вивчив варіант журналу, щоб намалювати дерево змін і побачити, яка гілка є де.

Коротше кажучи, git не схожий на SVN, CVS або (brrr) TFS. Розгалуження дуже дешеве, а помилки, які усунуть роботу, насправді досить важкі. Лише одного разу я втратив роботу, і це було тому, що я зробив свої зобов'язання занадто великими (див. Шкідливі звички вище). Якщо ви дотримуєтесь часто, маленькими шматками git, безумовно, стане вашим найкращим союзником.

Для мене git відкрив мій погляд на те, про що насправді йде контроль над джерелами. Все, що раніше було лише спробами отримати, git - це перше, що, на мою думку, це отримало. Зважаючи на це, я не пробував інших DVCS, цілком можливо, це твердження могло б бути розширеним для всієї родини.

Остання остання порада, командний рядок - ваш друг. Не кажучи про те, що графічні інструменти не є гарними, навпаки, але я дійсно потрудився, коли я відпустив командний рядок і спробував це самостійно. Насправді це дуже добре зроблено, легко дотримуватися за допомогою дуже всебічної системи допомоги. Моя найбільша проблема була прив’язана до але потворної консолі у Windows, поки я не знайшов альтернативи.

Тепер я використовую обидва, інтеграцію Eclipse з Git, щоб побачити, що відбувається в режимі реального часу, і виконувати деякі операції, такі як diff, вивчити історію для файлу тощо. І командний рядок для розгалуження, об'єднання, натискання, отримання та складніших дерев журналів . деякі основні сценарії, і я ніколи не був таким продуктивним щодо контролю над джерелами, і я ніколи не мав настільки великого контролю над своїм джерелом.

Успіхів, сподівався, що це допомогло.


4

Я добре розбираюся в декількох складних моделях розгалуження і використовую деякі в роботі. Однак, працюючи наодинці над проектами, я дуже точно роблю те, що ти зараз робиш. Я завжди можу створити гілку після факту, якщо мені потрібна, але я майже ніколи цього не роблю. Працюючи в самоті, у мене рідко виникають виправлення помилок, які не можуть дочекатися мого поточного завдання. Моя порада - ознайомитись з деякими моделями розгалуження, але немає сенсу ускладнювати речі, поки не потрібно.


4

Для більш простої моделі ви можете подивитися, що робить GitHub. "Потік GitHub" дуже простий, і тут є чудовий посібник: https://guides.github.com/introduction/flow/index.html

Підсумок (з блогу Скотта Чакона ):

Отже, що таке GitHub Flow?

  • Все, що знаходиться у головній галузі, є розгорнутим
  • Щоб працювати над чимось новим, створіть описово названу гілку від master (тобто: new-oauth2-scopes)
  • Приєднайтеся до цієї гілки на місцевому рівні та регулярно переносьте свою роботу до однойменної гілки на сервері
  • Коли вам потрібен зворотній зв'язок або допомога, або ви вважаєте, що філія готова до об'єднання, відкрийте запит на виклик
  • Після того, як хтось інший перевірив та вийшов із функції, ви можете об'єднати її в головний
  • Після того, як воно буде об'єднано і висунуто на "майстер", ви можете і потрібно негайно розгортати
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.