Гит — это система контроля версий
… что значит для вас примерно нихуя. Так что давайте по-другому.
Во-первых, Гитом пользуются через Терминал. SourceTree и прочее это от лукавого.
UPD: проще всего через терминал, но для сложных задач GUI может удобнее. Никита Голоденко описал подробнее.
Пользуются через Терминал потому что там всего 6 команд. Остальные не нужны вам 99% времени.
Так вот, запоминайте терминологию.
Во-первых, репозиторий — место, где хранится ваш код.
Во-вторых, пуш и пулл—пуллом вы скачиваете изменения из репозитория (если туда кто-то пушнул свои), ну а пуш… в принципе, вы догадались.
В-третьих, коммит. Если вы думали, что вы просто пушите время от времени код в репозиторий, то ваще-то нет. Сначала вы его коммитите в локальную копию, а потом пушите уже её.
В-четвёртых, это бранчи и мерджинг. Гит работает как дерево — у каждой ветки могут быть свои ветки. Ветка это бранч, конечно.
Изначально у вас есть бранч master, но лучше всего сразу завести ещё и develop — там будет основная разработка, которую после завершения вы мерджите в мастер. Сливаете, типа.
Бранчей может быть много, но лучше всего почитать про git flow: это когда бранчи бьются на ветки feat/{feature} для фичи и fix/{fix} для исправлений. Остальным я обычно не пользуюсь, как и многие другие.
В-пятых, пуллреквест. Чтобы не делать мердж руками, обычно в сервисах есть функция пуллреквеста — это запрос на мердж одной ветки в другую.
Летс ду ит
Теории достаточно, пробуем.
- заводите проект на Гитхабе, например,
testtesttest
; - делаете клон — клонируете репозиторий к себе,
git clone https://github.com/evgenyrodionov/testtesttest.git
; - заходите в директорию
testtesttest
и создаёте файлreadme.md
, туда что-нибудь пишете, например, что Родионов молодец и делает заебатые вещи; - теперь в консоли (если вы находитесь в директории) выполняете команду
git status
; - добавляете файлы для коммита через
git add readme.md
; - ещё раз проверяете через
git status
, если надо, а потом коммитите черезgit commit -am 'init commit'
, где флаг-a
это опять же “добавить все файлы”, а-m
это сообщение коммита (оно и идёт в кавычках); - пушите в мастер:
git push origin master
; - открываете свой репозиторий на Гитхабе и проверяете коммиты;
- если кто-то пушнул в репозиторий, то делаете
git pull
;
Ок, теперь давайте попробуем посложнее: сделаем отдельную ветку и через пуллреквест её смерджим.
- в консоли создаём новый бранч через
git checkout -b develop
; - добавляем файл
index.html
, потом его всё так же коммитим и пушим в репозиторий; - идём в репозиторий на Гитхабе и создаём пуллреквест, нажимаем кнопку “merge”;
Да, всё так просто! Можно было, кстати, и руками:
- возвращаемся в мастер:
git checkout master
; - мерджим девелоп в мастер:
git merge develop
; - пушим:
git push
.
Альясы
Гит по-умолчанию бесит своими длинными командами, поэтому там можно прописать альясы. Открывайте свой ~/.gitconfig
и добавляете там вот этот блок:
SSH
Чтобы каждый раз не вводить пароль от того же Гитхаба, можно завести SSH-ключ и работать через него.
- заведите себе SSH-ключ:
ssh-keygen -t rsa -b 4096
; - при создании спросит про passphrase — это пароль от ключа, ❗️❗️❗️обязательно ставьте ❗️❗️❗️
- теперь в директории
~/.ssh
у вас два файлаid_rsa
иid_rsa.pub
; id_rsa
это ваш ПРИВАТНЫЙ ключ, который НИКОМУ не надо НИКОГДА давать;id_rsa.pub
это публичный ключ, его вы копируете (это обычный текст, поэтому можете открыть редактором или простоcat ~/.ssh/id_rsa.pub
или дажеpbcopy < ~/.ssh/id_rsa.pub
);- ну и вставляете в настройках Гитхаба, Битбакета, Гитлаба и где угодно ещё.
Ну всё. Основная боль начинается при мерджинге веток, а так Гит очень даже простой. Всегда рекомендую пройти Git How To, кстати: https://githowto.com/. Хороший туториал.
Кстати, подписывайтесь на мой канал про фронтэнд в телеграме.