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
Изменить директорию
$ 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/
git hash-object
$ echo "HeiHei.ru" | git hash-object --stdin
0bdb2c54a9617d62b661102a4862b417d7bdde9b
Errors Git | |
Installation Tortoise Git в Windows | |
Работа с API GitHub |