Git
Содержание
Top commands
git revert- делает коммит который вовращает противоположное состояние выбранном коммитуgit cherrypick- применяет отдельный коммит на выбранную веткуgit bisect- помогает найти коммит который сломал продукт, деля коммиты постепенно и применяя ихgit add -A- добавить все файлы для отслеживанияgit add .- добавить все файлы для отслеживанияgit commit -m 'new'- сделать подтверждение изменение с комментарием (комментарий обязательно)git push origin master- сделать закачку файлов в репозиторийgit config --list- настройки gitgit remote add origin https://github.com/someRepo.git- добавление адресаgit remote -v- просмотр данных от адресахgit checkout -b trunk- создание ветки "trunk" и переход на нёёgit branch- просмотр веток
Set credentials
создаем пользователя глобального с именем и почтой
git config --global user.name "nikeweke"
git config --global user.email jxammet@gmail.com
 git bisect
 # начинаем бинарный поиск
git bisect start
# говорим что текущий состояние не рабочие
git bisect bad
# говорим какое состояние было рабочее (надо хеш коммита)
git bisect good <commit-hash>
# начинаем проверять и отмечаем "bad" или "good" коммит сейчас
# закончить и вернуться в начальное состояние 
git bisect reset
Config
показать настройки
git config --list
.gitignore
Игнорирование файлов : -- создаем файл без расширения с названием ".gitignore" и там например:
#папка лог и файле в ней игнориться
logs/
# файлы с расширением .txt игноряться в папке docs
docs/*.txt
 git add
 // Добавить все файлы проекта под контроль Git
git add .
git add filename
// Файлы которые не проиндексированные не могут быть коммит сделать
// если файл был изменен и его надо потом закомитить то, индиксируем
git add "*.php"
git add .
// удаление файла из под контролЯ Git
git rm --cached filename
 git status
 git status
# показ файлов в папке
git status --untracked-files=normal 
git status --untracked-files=all
git status --untracked-files=no
 git commit
 // Закомитить файлы которы были изменены и проиндексированы
git commit -m"commit"
// Коммит файлов и индексирование их(Инициализация файлов проекта)
git commit -a -m"init"
// Эта комманда вызывает VIM, в нем в начале можно написать комментарий , 
// чтобы сохранить надо нажать ESC и в конце написать - ":x" - сохранить
git commit
// Вместо VIM - можно юзать Notepad++
// в файле .gitconfig прописывает секцию [core] и это для того чтобы открывался не VIM, а Notepad для написанния комментария
git config --global core.editor "'C:\Program Files\Notepad++\notepad++.exe' - multiInst -notabbar -nosession -noPlugin"
// то что прописивает в файле .gitconfig(путь к файлу:C:\Users\NameUser\...)
[core]
   editor = 'C:\\Program Files\\Notepad++\\notepad++.exe' - multiInst -notabbar -nosession -noPlugin
 git checkout
 // Получить файл из репозитория или откатить локальный файл до файла как на репозиторие
git checkout -- filename
 git remote
 // Добавить удаленный репозиторий для проекта(origin - это название)
git remote add origin https://github.com/Nikeweke/Portal_News.git
// Добавить на удаленный репозитарий без запроса пароля
git remote add origin https://Nickname:Password@bitbucket.org/Nickname/Project.git 
// Посмотреть доступные репизитории удаленные
git remote
git remote -v
 git push
 // Закачать файлы на GitHGub в репозиторий
git push -u origin master // один раз так, так как здесь ключ: -u
git push                 // второй раз так можно
 git log
 // Лог действией ( Если много записей то чтобы потом выйти если знак ":" - Q)
git log
// Вывести лог в отфарматированном виде - в красивом так сказать
// %h - № коммита;  %an  - афтар;  %ar  - дата;  %s -  комментарий;
git log --pretty=format:"%h - %an, %ar : %s"  
// Показать за последние 2 недели
git log --since=2.weeks
// Показать изменение с прошлой версией 
git log -p -2
 git branch
 // Создание новой ветки - trunk и сразу переключються на неё
git checkout -b trunk
git branch trunker // создание без переключение на ветку
// Просмотр веток и на какой находимся
git branch
git branch -v
// Переключение между ветками
git checkout name_branch
 git merge
 // Например мы находимся на ветке trunk - и мержим себе ветку master
git merge master
// выбираем инструмент для решение конфликтов при мерженге и это пишеться .gitconfig
git config --global merge.tool kdiff3
// .ginconfig
[merge]
    tool = kdiff3
// показать инструмент для разрешение конфликтов в мержинге,
// если нет kadiff3 - его надо скачать
git mergetool 
// добавляет в .gitconfig расположение редактора kdiff3
git config --global mergetool.kdiff3.cnd '"C:\Program Files\KDiff3\kdiff3"' $BASE $LOCAL $REMOTE -o $MERGED
// .ginconfig
[mergetool "kdiff3"]
    cmd = \"C:\\\\Program Files\\\\KDiff3\\\\kdiff3\" $BASE $LOCAL $REMOTE -o $MERGED 
    
// После разрешение кофликтов, можно перейти в ту ветку которой нужен апдейт
// мы например в ветке trunk сделали мерже с веткой master, и хотим апдейтнуть master
git checkout master
git branch -v
git merge trunk
git status
git branch -v