Git і github

Git і Github. Прості рецепти -13

  • 23.12.15 4:33 •
  • sunduchkov •
  • # 273897 •
  • Хабрахабр •
  • З пісочниці •
  • 10 •
  • 9600

- такий же як Forbes, тільки краще.

При розробці власного проекту, рано чи пізно, доводиться задуматися про те, де зберігати вихідний код і як підтримувати роботу з декількома версіями. У разі роботи на компанію, зазвичай це вирішується за вас і необхідно тільки підтримувати прийняті правила. Є кілька общеупотребимих систем контролю версій, і ми розглянемо одну з найпопулярніших - це Git і сервіс Github.

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

Сервіс Github надає хостинг (зберігання) вихідних текстів як на платній, так і на безкоштовній основі. Це одна з найбільших систем, яку люблять Open Source користувачі. Основна відмінність платної версії - це можливість створення приватних репозиторіїв (сховищ) вихідних текстів і якщо вам приховувати нічого, то можете спокійно користуватися безкоштовною версією.

Після того, як ви почали роботу над проектом і написали якийсь працюючий прототип, у вас з'явиться бажання зберегти результати роботи. Це так само може бути корисно в разі, якщо ви захочете продовжити роботу на іншому комп'ютері. Найпростіше рішення - це зберегти все на флешці. Цей варіант непогано працює, але якщо є підключення до інтернету (а зараз у кого його немає), то зручно скористатися системами Git / Github.

У цій статті будуть описані базові сценарії використання систем Git / Github при роботі над проектом в середовищі Linux за допомогою командного рядка. Всі приклади перевірялися на системі з Linux Ubuntu 14.04 і Git 1.9.1. Якщо ви користуєтеся іншим дистрибутивом, то можливі відмінності.

Створення локального сховища


Припустимо, що ваш проект знаходиться в папці / home / user / project. Перед тим, як зберігати вихідні, можна подивитися, чи немає тимчасових файлів в папці з проектом і по можливості їх видалити.

Часто тимчасові файли містять специфічні суфікси, за якими їх легко виявити і надалі видалити. Для пошуку таких файлів можна скористатися командою find. Як приклад подивимося, як знайти всі файли, які генеруються компілятором Python і мають розширення .pyc

Переходимо в папку з проектом / home / user / project:


І показуємо список файлів з розширенням .pyc:


Ця команда виведе список всіх файлів з розширенням .pyc в поточній директорії і в її піддиректоріях. Для видалення знайдених файлів, досить додати ключ -delete до цієї команди:

Створимо локальний репозиторій в папці з проектом:


Після виконання цієї команди з'явиться нова папка з ім'ям .git. У ній буде кілька файлів і піддиректоріями. На даний момент система управління версіями ще не бачить наших файлів.

Додавання файлів в локальний репозиторій


Для додавання файлів використовується команда:


Після виконання команди, файл readme буде додано до системи управління версій (звичайно якщо він вже був то цього в проекті). При додаванні файлу генерується хеш значення, яке виглядає приблизно так:


Додані файли зберігаються в папці .git / objects / xx / yyyyyyyy. при цьому перші 2 цифри хешу іпользуются для вказівки директорії, а решта хеш значення є ім'ям файлу. Наш доданий файл буде знаходиться тут:


Що легко побачити за допомогою команди:


Сам файл є архівом, який легко розпакувати і вивести на екран, вказавши повне значення хешу.


Для того, щоб додати всі файли з поточної директорії введіть:


Якщо потрібно додати файли з поточної директорії і з усіх піддиректоріями, то використовуйте:


Для того, щоб в систему не попадали тимчасові файли, можна їх занести в файл .gitignore. який потрібно створити самостійно і розмістити в кореневому каталозі проекту (на тому ж рівні, що і .git директорія).

Наприклад, якщо в в файл .gitignore додати наступний рядок * .pyc. то всі файли з розширенням .pyc НЕ будуть додаватися в репозиторій.

Після додавання файлів, всі зміни знаходяться в так званій staging (або cached) area. Це деякий временнное сховище, яке використовується для накопичення змін і з якого створюються власне версії проектів (commit).


Після виконання команди ми побачимо, що в stage area знаходиться наш файл:


Якщо ви продовжите вносити зміни в файл readme. то після виклику команди git status ви побачите дві версії файлу.


Щоб додати нові зміни досить повторити команду. Команда git add не тільки додає нові файли, але і всі зміни файлів, які були додані раніше.


Можна скасувати додавання файлу readme в staging area за допомогою команди:


Після виконання команди, файл readme відзначиться, як незмінений системою.

Створення версії проекту


Після того, як ми додали потрібні файли в staging area ми можемо створити версію проекту. За допомогою команди:

Після коммітов, ми зможемо знайти два нові об'єкти всередині .git сховища.


Подивимося, що всередині:


Ключ -t показує тип об'єкта. В результаті ми бачимо:


Для другого об'єкта:


Для самого першого файлу:

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


Ключ --name-only потрібен, щоб показувати тільки імена змінений файлів. Без нього по кожному ізмененнному файлу буде виданий список всіх змін.

Якщо ви продовжили працювати і змінили тільки ті файли, які були вже додані в систему командою git add. ви можете зробити Комміт однією командою:


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


Для скасування останнього коммітов (крім самого першого) можна скористатися наступною командою:


Для того щоб видалити всі файли в папці, які не належать до проекту і ще не введено репозиторії, можна скористатися командою:

Створення сховища на Github


До теперішнього моменту ми працювали з локальним репозиторієм, який зберігався в папці на комп'ютері. Якщо ми хочемо мати можливість збереження проекту в інтернеті, створимо репозиторій на Github. Для початку потрібно зареєструватися на сайті github.com під ім'ям myuser (в вашому випадку це може бути будь-яке інше ім'я).

Після реєстрації натискаємо кнопочку "+" і вводимо назву сховища. Вибираємо тип Public (репозиторій завжди Public для безкоштовної версії) і натискаємо Create.

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

Додаємо віддалений репозиторій (по протоколу SSH) під ім'ям origin (замість origin можна використовувати будь-яке інше ім'я).


Якщо все було правильно зроблено, то побачимо:


Для того, щоб скасувати реєстрацію віддаленого сховища введіть:


Це може знадобитися, якщо ви захочете поміняти SSH доступ на HTTPS. Після цього можна додати його знову, наприклад під ім'ям github і протоколом HTTPS.


Наступною командою ви занесете всі зміни, які були зроблені в локальному репозиторії на Github.


Ключ -u використовується для того, щоб встановити зв'язок між віддаленим репозиторієм github і вашої гілкою master. Всі подальші зміни ви можете переносити на віддалений репозиторій спрощеної командою.

Перенесення сховища на інший комп'ютер


Після того, як репозиторій був створений на Github, його можна скопіювати на будь-який інший комп'ютер. Для цього застосовується команда:


Результатом виконання цієї команди буде створення папки project в поточному каталозі. Ця папка також міститиме локальний репозиторій (тобто папку .git).

Так само можна додати назву папки, в якій ви хочете розмістити локальний репозиторій.

Робота з одним репозиторієм з різних комп'ютерів


З одним репозиторієм з різних комп'ютерів може працювати кілька розробників або ви самі, якщо наприклад працюєте над одним і тим же проектом будинку і на роботі.

Для отримання оновлень з віддаленого сховища скористайтеся командою:


Якщо ви змінили ваші локальні файли, то команда git pull видасть помилку. Якщо ви впевнені, що хочете перезаписати локальні файли, файлами з віддаленого сховища то виконайте команди:


Замість github підставте назву вашого віддаленого сховища, яке ви зареєстрували командою git push -u.

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


У разі, якщо в віддаленому репозиторії лежать файли з версією більш нової, ніж у вас в локальному, то команда git push видасть помилку. Якщо ви впевнені, що хочете перезаписати файли в віддаленому репозиторії незважаючи на конфлікт версій, то скористайтеся командою:


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


Після виконання цієї команди ваша локальна директорія міститиме файли такі ж, як і при останньому Ком. Ви можете завантажити нові файли з віддаленого сховища командою git pull і після цього повернути ваші зміни які ви відклали командою:

висновок


Ми розглянули базові сценарії роботи з системами Git і Github. Кожна наведена вище команда має значно більше ключів і відповідно можливостей. Поступове їх вивчення дасть вам можливість легко оберігати свої іходнікі і більше концентруватися безпосередньо на розробці.

Схожі статті