Git

Contents
Типичные команды пользователя
Installation в Windows
--version: Узнать версию Git
config: Задать имя пользователя Git
init: Инициализация репозитория Git
status: Текущее состояние репозитория
add: Добавить файл в staging area
commit: Записать изменения
checkout -- . : Восстановить последний коммит
clone: Клонировать (скачать) репозиторий
Удалённое хранение на GitHub
remote -v: Проверить с каким удалённым репозиторием git связывает локальный репозиторий
remote set-url: Изменить привязанный удалённый репозиторий
push: Отправить новые данные на удалённый репозиторий
branch: Ветки
checkout: Сменить ветку
файл .gitignore: игнорировать определённые файлы
Другие статьи про Git

Кратко

Проверяем обстановку

git status

Добавляем файл который хотим закоммитить

git add index.html

Если файлов много и Вы хотите добавить все используйте

git add -A

Убираем файл который не хотим сейчас коммитить

git reset file.txt

Коммитим с комментарием

git commit -m 'Лучшие самоучители на сайте www.aredel.com'

Стэйджим и коммитим с комментарием одной командой

git commit -am 'Наш любимый сайт www.HeiHei.ru'

Пушим на сервер в мастер

git push origin master

Installation Git

В Ubuntu , Debian и подобных ОС нужно выполнить

sudo apt install git

В CentOS , RedHat и похожих:

sudo yum install git

Для Windows скачать Git можно здесь про установку есть подробная статья «Installation Git в Windows»

Узнать версию установленного Git

Узнать версию установленного Git можно с помощью опции version

$ git --version

git version 2.22.0.windows.1

Пользователь

Задать имя активного пользовотеля

$ git config --global user.name "Andrei"

Проверить имя активного пользовотеля

$ git config user.name

Andrei

Задать email активного пользовотеля

$ git config --global user.email "www.aolegovich.ru@aredel.com"

init

Начать отслеживать изменения - инициализаци или начало работы Git

$ git init

Initialized empty Git repository in C:/Users/aolegovich/Desktop/Sites/hello-world/.git/

Википедия: По умолчанию репозиторий хранится в подкаталоге с названием «.git» в корневом каталоге рабочей копии дерева файлов, хранящегося в репозитории.

Любое файловое дерево в системе можно превратить в репозиторий git, отдав команду создания репозитория из корневого каталога этого дерева (или указав корневой каталог в параметрах программы)

Создать файл

$ touch "index.html"

status

Посмотреть свежие изменения в репозитории

$ git status

On branch master

No commits yet

Untracked files:
   (use "git add <file>..." to include in what will be committed)

        index.html

nothing added to commit but untracked files present (use "git add" to track)

Файл, в котором произошли изменения выделен красным

add

Добавить файл в группу файлов, которые Вы планируете зафиксировать (staging area)

$ git add index.html

Посмотреть свежие изменения в репозитории

$ git status

On branch master

No commits yet

Changes to be committed:
   (use "git rm --cached <file>..." to unstage)

        new file: index.html

Файл, который был добавлен в staging area выделен зелёным

commit

Зафиксировать изменения - записать изменения файла в репозиторий.

$ git commit -m 'Мой первый коммит.'

[master (root-commit) e2d3195] My first commit.
1 file changed, 1 insertion(+)
create mode 100644 index.html

Вернуть файл к последнему закоммиченному состоянию

$ git checkout -- .

clone

Клонировать другой репозиторий

$ git clone https://github.com/Project/Project.git

Cloning into 'welcome-to-git'...
remote: Enumerating objects: 9, done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 9
Unpacking objects: 100% (9/9), done.

Либо

$ git clone git@gitlab.com:Project/Project.git

Синтаксис выбирается в зависимости от типа авторизации: паролем, по ключу и т.д.

GitHub

Адрес - github.com

Бесплатный (Free) аккаунт означает, что Вы можете работать только с публичным (Public) репозиторием.

О работе с публичным API github читайте здесь

Все могут видеть Ваш код, но редактировать его можете только Вы.

Не храните в публичном репозитории файлы с паролями. Если Вам нужна приватность - покупайте приватный режим (Private) или переходите на другой сервис, например BitBucket.org.

После того как аккаунт создан нажмите на плюсик и выберите New repository

Создать новый профиль на github image from website www.aredel.com

Изменить директорию

$ cd /c/Users/aolegovich/Desktop/Sites

Как клонировать репозиторий с GitHub уже разбирали здесь например:

$ git clone https://github.com/Name/name.git

Cloning into 'heihei.ru'...

remote: Enumerating objects: 83, done.
remote: Total 83 (delta 0), reused 0 (delta 0), pack-reused 83
Unpacking objects: 100% (83/83), done.

remote -v

Проверить с каким удалённым репозиторием git связывает локальный репозиторий

$ git remote -v

origin https://github.com/Name/name.git (fetch)
origin https://github.com/Name/name.git (push)

Если Вы ещё не подключились ни к github ни к gitlab ни к другим сервисам, сделать это можно командой

git remote add origin https://git.company.com/user/projectName.git

Конечно, предварительно нужно создать проект на сайте сервиса + нужно заранее сделать git init .

remote set-url

Изменить привязанный удалённый репозиторий

$ git remote set-url origin https://github.com/YourAccount/your project name.git

Проверить изменился ли привязанный репозиторий

$ git remote -v

origin https://github.com/YourAccount/your project name.git (fetch)
origin https://github.com/YourAccount/your project name.git (push)

push

Отправить новые данные на удалённый репозиторий

$ git push origin master

Enumerating objects: 83, done.
Counting objects: 100% (83/83), done.
Delta compression using up to 4 threads
Compressing objects: 100% (81/81), done.
Writing objects: 100% (83/83), 3.36 MiB | 3.19 MiB/s, done.
Total 83 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To https://github.com/andreiolegovichru/travel-site.git
* [new branch] master -> master

Если нужно делать push из другой ветки - просто напишите её называние вместо master

git push origin some/other/branch_name

Enumerating objects: 30, done. Counting objects: 100% (30/30), done. Delta compression using up to 8 threads Compressing objects: 100% (26/26), done. Writing objects: 100% (26/26), 6.32 KiB | 6.32 MiB/s, done. Total 26 (delta 7), reused 0 (delta 0) remote: remote: To create a merge request for some/other/branch_name, visit: remote: https://gitlab.yourcompany.com/Project/Project/merge_requests/new?merge_request%5Bsource_branch%5D=some%2Fother%2Fbranch_name remote: To gitlab.ssh.com:IAM/IAM.git abcdefdc8..abcdef000 topic/qa/init_perf_test_controller -> topic/qa/init_perf_test_controller

Затем нужно перейти по ссылке

https://gitlab.yourcompany.com/Project/Project/merge_requests/new?merge_request%5Bsource_branch%5D=some%2Fother%2Fbranch_name

и сделать Merge Request

Ветки (Branches)

Посмотреть какая ветка сейчас активна

$ git branch

* master

Прежде чем создавать новую ветку нужно убедиться в том, что в старой нет несохранённых изменений.

$ git status

On branch master
nothing to commit, working tree clean

Создать новую ветку

$ git branch new-branch

Проверить появилась ли она в списке

$ git branch

* master
new-branch

Перейти в новую ветку

$ git checkout new-branch

Switched to branch 'new-branch'

Вернуться в ветку master

$ git checkout master

Если Вы сделали в ветке new-branch какие-то изменения, закоммитили из и теперь хотите, добавить эти изменения в ветку master нужно выполнить команду merge

$ git merge new-branch

Updating f521fc5..fe7276a
Fast-forward
index.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Создать новую ветку и сразу перейти в неё можно одной командой

$ git checkout -b new-branch-2

.gitignore

Часто бывает нежелательным отслеживать все изменения до единого. Если Вы хотите сфокусироваться на основном коде, можно создать файл .gitignore и добавить туда расширения файлов, которые Вы не будете добавлять в репозиторий.

Пример файла .gitignore в котором мы указываету git не следить за ошибками, логами директорией .tmp и модулями nodejs

# Ignoging:
*.err
*.log
node_modules/
.tmp/

guides.github.com

git hash-object

$ echo "HeiHei.ru" | git hash-object --stdin

0bdb2c54a9617d62b661102a4862b417d7bdde9b

Связанные статьи
Errors Git
Installation Tortoise Git в Windows
Работа с API GitHub
Share in social media: