📓Git cheatsheet

Шпаргалка для тех, кто так и не может разобраться с гитом

Основные операции с Git

Подключение SSH ключа к Github/Gitlab

ВАЖНО: подвязать SSH под гит - делается один раз на каждой машине, после этого больше не нужно вводить логин/пароль.

Создаем SSH ключ

  1. Открываем терминал (git bash или любой другой).

  2. Выполняем команду ssh-keygen -t rsa -b 4096 -C "your_email@example.com".

  3. Когда спросят "Enter a file in which to save the key" просто нажмите Enter, ключ будет лежать в файле по умолчанию.

  4. После этого попросят написать секретную фразу и повторить ее.

Копируем ключ и подвязываем под гитхаб/гитлаб

  1. Выполняем команду pbcopy < ~/.ssh/id_rsa.pub

  2. Если не сработает, пишем cat ~/.ssh/id_rsa.pub и копируем то что нам вернулось.

  3. Ищем в настройках аккаунта на Github/Gitlab SSH keys, выбираем в этой вкладке new key, вставляем то что скопировали.

  4. Сохраняем.

  5. Теперь можно (и нужно) клонировать и стягивать все нужные репозитории через SSH.

Бонус: перевод всех https репозиториев на ssh

  1. Как проверить какой репозиторий у вас? git remote -v.

  2. Если адрес начинается на https://, необходимо выполнить команду git remote set-url origin git@github.com:USERNAME/REPOSITORY.git, где указать хост (github/gitlab), ваше имя пользователя и имя репозитория.

  3. Еще раз git remote -v чтобы убедиться, что все сработало.

Создание нового репозитория и закидывание туда своих файлов (если они есть)

  1. Создаем новый репозиторий в GitHub/GitLab/BitBucket.

  2. В папке с проектом выполняем git init.

  3. git add .

  4. git commit -m "initial commit"

  5. git remote add origin git@git-where-you-are.com:your-name/your-awesome-git-project.git

  6. git push -u origin master

Готово

Объединение нескольких гит комманд в одну

Например, мы хотим сделать коммит и запушить одной командой. Для этого используется оператор последовательного выполнения команд &&:

git commit -am "new commit" && git push

Отмена всего непотребства, которое написали и еще (к счастью) не закоммитили

git checkout -- .

Отмена последнего коммита, который случайно залили не в ту ветку

  1. В ветке, в которой вы сделали коммит, необходимо выполнить git reset HEAD~1 --soft.

  2. Последний коммит будет отменен, все изменения вернутся в нужные файлы (не пропадут).

  3. git stash (спрятать все изменения в хранилище гита).

  4. git checkout correct-branch

  5. git stash apply (возвращаем изменения в нужную ветку).

  6. git commit -am "Your commit message"

Отмена последнего коммита и удаление всех изменений, которые были в нем сделаны

git reset HEAD~1 --hard


Работа с ветками

ВАЖНО! При работе в командах создавайте как минимум свои собственные ветки.

Создание новой ветки и переход на нее

git checkout -b your-new-awesome-branch

Pull/push изменений

git pull/push origin your-branch

Слияние (merge) ветки master с вашей веткой с новыми фичами

  1. Закинуть все изменения в гит на свою ветку(git add . && git commit -m "new-commit" && git push origin your-branch).

  2. git checkout master

  3. git pull

  4. git checkout your-branch

  5. git merge master

  6. Фиксим конфликты (консоль будет говорить в каких файлах конфликты, ищите много знаков >>>>>>>> и <<<<<<<<<), либо с помощью IDE.

  7. git commit -am "merging changes from my branch" && git push

  8. Теперь в вашей ветке есть слитые ваши изменения и последняя версия мастера, теперь нужно закинуть все это дело в мастер.

  9. git checkout master

  10. git merge your-branch

  11. Конфликтов уже не должно быть, все должно слиться автоматически.

  12. Profit

Как переключаться с ветки на ветку локально, чтобы постоянно не возникал конфликт с git?.

Если вы работаете в какой то ветке (имеете незакомиченные файлы), при переключении на другую ветку git попробует смерджить всю вашу текущую работу с этой другой веткой. При этом могут возникнуть конфликты, а часть работы при переключении обратно позже вообще может быть утеряна. Поэтому, если хотите переключиться на другую ветку (например чтобы проверить пулл реквест соседа), сделайте одно из следующих действий:

  1. Перед переключением закомитьте все файлы. Переключайтесь только когда у вас локально нет никаких изменений.

  2. Если ваш код не до конца рабочий и вы не хотите его коммитить, вы можете его временно "спрятать", используя команду git stash. В гите есть специальный "карман", в котором можно хранить куски кода. После выполнения этой команды все ваши изменения локально исчезнут, и будут помещены в этот карман. То есть код откатится до изначального состояния. Теперь можно смело переходить на другие ветки. Когда вы вернетесь обратно на свою ветку и захотите снова увидеть свои изменения, выполните команду git stash apply - это вернет последние изменения из кармана обратно в вашу ветку.

Last updated