Git и GitHub

Термины

Комит (commit) – зафиксированная (сохраненная) после изменений версия разрабатываемого приложения. Еще в аналогию к понятию коммит приволят слово “слепок”.

Проиндексировать файлы – пометить (подготовить) файлы, поместив их в так называемый стейдж. Это нужно сделать, чтобы можно было их закомитить, т.е. добавить в репозиторий, как одну из версий изменений.

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

Начало работы с Git

  1. Устанавливаем сам Git на ПК (как любую другую программу на вашей ОС).
  2. В консоли указываем свое имя, чтобы потом его содержал каждый комит: git config --global user.name "Vasya Pupkin"
  3.  Указываем также свою почту: git config --global user.name "vaspupkin@gmail.com"
  4. Можно посмотреть теперь наш config: git config --list
  5.  Можно посмотреть список всех команд git help либо описание отдельной команды: git [имя команды] --help

Основные команды для работы с Git

  1. Импортировать в Git существующий текущий каталог: git init
  2. Проверить статус файлов: git status

Красным показывет те файлы, которые еще не проиндексированы (не помечены для дальнейшего комита). Зеленым – уже проиндексированные. 

  1. Добавить файлы в индекс (пометить для коммита): git add .

Точка означает “все файлы”. Т.е. будут проиндексированы все возможные файлы, которые изменились в данной директории (папке). Какие файлы были проиндексированы можно проверить через вышеупомянутую коману для проверки статуса.

  1. При необходимости можно удалить ненужные файлы из индекса (стейджа): git restore --staged [name file]
  2. Закомитить: git commit -m [name of commit]

Заливка созданных версий приложения на удаленный репозиторий

GitHub – самый популярный на сегодня удаленный репозиторий.

  1. Зарегистрироватьсян на GitHub или войти в аккаунт.
  2. Создать новый репозиторий, нажав на плюсик в верхнем правом углу и “New repository”. Приватный являетяс платным.
  3. Определяем удаленный репозиторий через консоль git remote add origin [url нашего созданного репозитория]
  4. Заливаем: git push -u origin master
    , где origin – название нащешл ремоута (удаленного репозитория), а master – имя ветки. Если история коммитов отличается, то гит не даст их запушит просто так. Нужно тогда сделать это принудительно – git push --force origin master
  5. GitHub запросит наш логин и пароль поочередно, после чего произойдет заливка локального репозитория на удаленный со всеми созданными ранее комитами.

Копирование на ПК уже созданного на GitHub проекта

  1. Клонирование репозитория с GitHub: git clone [url проекта]

Как переключаться между версиями?

  1. Открываем графическую оболочку для переключения версий: gitk --all
  2. Копируем SHA 1 ID – строку с длинным кодом версии (очень много букв и цифр) с помощью комбинации ctrl + insert.
  3. Вводим в консоль: git checkout [наш скопированный ID версии]
  4. Теперь все файлы в текущей директории содержат код той версии, которую мы подключили.

СПИСОК РАЗЛИЧНЫХ КОМАНД

Ветки и их соединение

git branch <name branch> – создать ветку
git checkout <name branch> – перейти в ветку
git checkout -b <name branch> – создать ветку и перейти в нее
git merge <name branch> – слияние текущей ветки с <name branch>
git merge <branch 2> <branch 1> – перешли в ветку <branch 2> и выполнили слияние ее с <branch 1>
git rebase <name branch> –  переобразование (rebasing), которое по предназначению напоменает слияние, но здесь текущая ветка становися поверх указанной <name branch> и перезаписывает коммиты, чего не происходит при слиянии. Эта команда позволяет делать проект чище, но должна выполняться с осторожностью и в случаях, когда текущая ветка не являетяс публичной и в ней никто не работает.
git rebase i <name branch>– более контролируемое преобразование, при ктором можно конкретно указывать коммиты, которые будут соединены. Чтобы его выполнить, в появившемся wix (подобие файлового редактора) меняем у одного из коммитов “pick” на “squash“. Именно его он после сохранения файла и сольется с предыдущими коммитами, у которых остался указанным “pick“, а сами они исчезнут.
 

Перемещение

git checkout <branch name>^ – шаг назад по коммитам ветки (т.е. переключение на предыдущий коммит)
git checkout <branch name>^^ – два шага назад по коммитам ветки (т.е. переключение на прародителя)
либо можно вместо <branch name> написать <HEAD> – это текущий коммит. Т.е. можно писать:
git checkout <HEAD>^ или git checkout <HEAD>^^

git checkout <HEAD>~4 – переместиться на 4 коммита назад.
git branch -f <branch name> HEAD~3 – принудительно (о чем говорит -f, т.е. forcing) переместить ветку <branch name> на 3 родителя назад. Чтобы сработало HEAD в текущий момент должно быть установлено в эту ветку (т.е. git checkout <branch name>)
Также можно ветку переместить принудительно не на несколько шагов, а непосредственно указав коммит:
git branch -f <branch name> <id commit> – переместить ветку <branch name> на коммит <id commit>

Отмены

git stash – убирает все изминения, котоыре не были закоммичены с файлов.
git stash pop – возвращает изменения, убранные предыдущей командой.

git reset HEAD~1 либо git reset <name commit> – отменяет изменения, перенося ссылку на ветку назад, на более старый коммит, как будто некоторых коммитов вовсе и не было. Это своего рода “переписывание истории”. Проблема в том, что этот метод работает отлично только локально и не подойдет для отмены / удаления коммитов удаленно в тех ветках, где работают другие пользователи. Для этого нужен git revert.

git revert <name commit> – по факту создает на основании указанного в команде коммита новый вместо текущего проблемного. Т.е. откатывает последние изменения к тому коммиту, когда все было хорошо, создав его копию в конце ветки. Этот коммит можно запушить, чобы поделиться изменениями с остальными.

git branch -d  <name branch> – удалить ветку

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *