Created
March 26, 2021 14:50
-
-
Save neyasbltb88/e421cd624f61a843d651f85e8d5e3e17 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> Инициализация репозитория | |
git init | |
> Добавление всех файлов в репозиторий на отслеживание | |
git add . | |
git add Имя_файла | |
> Коммит | |
git commit -m "Описание коммита" | |
> Быстрый коммит + автодобавление в буфер | |
git commit -am "Описание коммита" | |
_____________ LOG _______________ | |
> Просмотр лога коммитов | |
git log | |
> Лимит вывода коммитов, для примера 5 | |
git log -n 5 | |
> Коммиты с определенной даты | |
git log --since=2018-09-20 | |
> Коммиты до определенной даты | |
git log --until=2018-09-20 | |
> Коммиты промежутка времени | |
git log --since=2018-09-20 --until=2018-09-20 | |
> Коммиты определенного автора | |
git log --author="Neyasbltb" | |
> Поиск коммитов по регулярке | |
git log --grep="Init" | |
> Логи в одну строку | |
git log --oneline | |
> Диапазон логов между известными коммитами | |
git log ЧАСТЬ_ХЭША_1..ЧАСТЬ_ХЭША_2 | |
>> Лог начиная с определенного коммита + для определенного файла | |
git log ЧАСТЬ_ХЭША.. Имя_файла | |
> Статистика изменений в логах (число изменений и место) | |
git log --stat --summary | |
_____________ Статус и изменения _______________ | |
> Показать статус (текущий бранч и незакоммиченные изменения) | |
git status | |
> Изменения перед коммитом надо добавлять в буфер | |
git add . (git add Имя_файла) | |
> Показ изменений между репо и папкой | |
git diff | |
> Показ изменений в определенном файле | |
git diff Имя_файла | |
> Показ изменений между буфером и папкой | |
git diff --staged | |
> Строки изменений в git diff вписываются в ширину и переносятся | |
"-" + shift + s + enter (return) | |
> Показ изменений не целыми строками, а отдельными измененными | |
словами, вставленными рядом | |
git diff --color-words | |
_____________ Удаление файлов _______________ | |
> После ручного удаления файла в статусе он будет помечен | |
как deleted, его надо удалить из репо, а затем закоммитить | |
git rm Имя_файла | |
> Удаление файла и сразу инфа об этом в буфер | |
git rm Имя_файла | |
> Удаление неотслеживаемых файлов из папки | |
git clean -n (показывает все, что собирается удалить) | |
git clean -f удаляет все то, что не занесено в репо и показала -n | |
_____________ Изменение файлов _______________ | |
> После ручного переименования файлов в статусе будет отметка | |
об удалении файла со старым именем и отс=метка об неотслеживаемом | |
файле с новым именем. Надо 2 команды для добавления в буфер, а потом коммит | |
git add Новое_имя_файла | |
git rm Старое_имя_файла | |
> Переименование средствами git и добавление в буфер | |
git mv Старое_имя_файла Новое_имя_файла | |
> Перемещение в другую папку средствами git и добавление в буфер, | |
также можно сразу здесь менять имя файла | |
git mv Имя_файла Новая_папка/Имя_файла | |
_____________ Отмена и изменения _______________ | |
> Возврат версии файла из репо (не закоммичены изменения) | |
git checkout Имя_файла | |
> Чтобы при этом git не пытался переключить бранчи, перед именем файла -- | |
git checkout -- Имя_файла | |
> Отмена измененных файлов в буфере (вернуть обратно git add) | |
git reset HEAD Имя_файла | |
> Изменение ПОСЛЕДНЕГО коммита (или переименование) | |
git commit --amend -m "Сообщение коммита" | |
>> Вернуть версию определенного файла из любого прошлого коммита. | |
При этом файл попадет не в рабочую директорию, а в буфер. | |
git checkout ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА -- Имя_нужного_файла | |
> Перевернуть изменения в коммите - все, что было добавлено удалится, | |
а что было удалено вернется. При этом делается полный коммит | |
git revert ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА | |
_____________ GIT RESET _______________ | |
>> Перемещает HEAD на указанный коммит, имеет 3 параметра: | |
--soft самый безобидный возврат. Перемещает только HEAD, при этом буфер | |
и рабочая директория остаются не тронуты | |
--mixed(default) перемещает HEAD на указанный коммит и приводит буфер в | |
соответствие с указанным коммитом. Рабочая директория не изменяется | |
--hard возвращает все в соответствие с указанным коммитом. Репозиторий, | |
буфер и рабочая папка приводятся к состоянию указанного коммита, все | |
изменения, внесенные с тех пор теряются | |
> Возврат к коммиту | |
git reset --soft ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА | |
_____________ ИГНОРИРОВАНИЕ ФАЙЛОВ _______________ | |
> Создается файл .gitignore и в нем в столбик перечисляются имена файлов, | |
можно использовать подстановочную *, например, *.php проигнорит все | |
php файлы. Поддерживаются регулярки и отрицание ! Игнор всех файлов в папке: | |
Папка_игнора/ (слеш в конце обязательно). Комменты в нем начинаются с # | |
> Для игнорирования ранее отслеживаемых файлов, нужно эти файлы удалить из | |
буфера(кеша) и добавить в .gitignore | |
git rm --cached Имя_файла | |
> ИНФО. git отслеживает файлы, а не директории. Чтобы следил за пустой | |
папкой, надо в нее добавить пустой файл, обычно .gitkeep | |
_____________ ПЕРЕМЕЩЕНИЕ ПО ДЕРЕВУ КОММИТОВ _______________ | |
> На один коммит назад | |
HEAD^, ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА^, master^ | |
> На указанное количество коммитов назад | |
HEAD~2 или HEAD^^ | |
>> Посмотреть все отслеживаемые файлы в последнем коммите | |
git ls-tree HEAD | |
> Или из конкретной папки | |
git ls-tree HEAD Имя_папки/ | |
_____________ ПРОСМОТР И СРАВНЕНИЕ КОММИТОВ _______________ | |
> Показывает автора, время, в каких файлах и что изменено | |
git show ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА | |
> Показать разницу между рабочей директорией и коммитом | |
git diff ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА | |
> Показать разницу между рабочей директорией и коммитом в конкретном файле | |
git diff ЧАСТЬ_ХЭША_НУЖНОГО_КОММИТА Имя_файла | |
> Сравнить два коммита | |
git diff ЧАСТЬ_ХЭША_1..ЧАСТЬ_ХЭША_2 | |
_____________ БРАНЧИ _______________ | |
> Посмотреть существующие бранчи | |
git branch | |
> Просмотр удаленных бранчей | |
git branch -r | |
> Просмотр и локальных и удаленных бранчей | |
git branch -a | |
> Создание нового бранча(только буквы, цифры и _) | |
git branch Имя_нового_бранча | |
> Переключение на другой бранч | |
git checkout Имя_бранча | |
> Создание бранча и переключение на него | |
git checkout -b Имя_нового_бранча | |
> Сравнение бранчей | |
git diff Имя_бранча1..Имя_бранча2 | |
> Показать все бранчи, которые полностью включены в текущий | |
git branch --merged | |
> Переименовать бранч | |
git branch -m Имя_бранча Новое_имя_бранча | |
> Удаление бранча (надо выйти из него). Если в этом бранче | |
есть коммиты, которых нет в других, git выдаст предупреждение | |
git branch -d Имя_бранча | |
> Для удаления бранча, не слитого с другими(потеря каких-либо данных) | |
git branch -D Имя_бранча | |
_____________ СЛИЯНИЕ БРАНЧЕЙ _______________ | |
> Быстрое слияние | |
git merge Имя_бранч | |
> Принудительный коммит слияния | |
git merge --no-ff Имя_бранча | |
> Сделать слияние, если оно будет быстрым | |
git merge --ff-only Имя_бранча | |
> Обрыв процесса слияния при конфликте | |
git merge --abort | |
> После исправления конфликта git add измененных файлов и | |
git commit (в процессе слияния можно без сообщения, будет дефолтное) | |
_____________ КОПИЛКА (STASH) _______________ | |
> Сохранение в копилку. Одна и та же копилка доступна из всех бранчей | |
git stash save "Описание копилки" | |
> Просмотр содержимого копилки | |
git stash list | |
> Краткая инфа о первом элементе копилки | |
git stash show stash@{0} | |
> Полная инфа в вде патча о первом элементе копилки | |
git stash show -p stash@{0} | |
> Забрать элемент из копилки и поместить изменения в рабочую директорию | |
(с удалением элемента из копилки). Если не указать элемент, по умолчанию | |
будет вытаскиваться первый элемент | |
git stash pop stash@{0} | |
> Забрать элемент из копилки и поместить изменения в рабочую директорию | |
(в копилке остается копия). Если не указать элемент, по умолчанию | |
будет вытаскиваться первый элемент | |
git stash apply stash@{0} | |
> Удаление элемента копилки | |
git stash drop stash@{0} | |
> Удаление всех элементов копилки | |
git stash clear | |
_____________ УДАЛЕННЫЕ РЕПОЗИТОРИИ _______________ | |
> Посмотреть все GitHub репо | |
git remote | |
> Шаблон добавления GitHub репо. При создании нового репо на GitHub, | |
он выдает по дефолту алиас origin и дает url созданного репо | |
git remote add <alias> <url> | |
> Удаление GitHub репо | |
git remote rm <alias> | |
> Просмотр GitHub бранчей | |
git branch -r | |
> Просмотр и локальных и GitHub бранчей | |
git branch -a | |
> Получить первый раз GitHub репо(имя папки и бранча опционально) | |
git clone <url> <Имя_будущей_папки> -b <Имя_бранча> | |
> Отправить(создать) не отслеживаемый бранч на GitHub репозиторий | |
git push origin <имя локального/создаваемого на сервере бранча> | |
> Перая отправка на GitHub репозиторий (-u связывает их и делает отслеживаемым) | |
git push -u origin master | |
> Дальнейшая отправка на отслеживаемый репозиторий | |
git push | |
> Получить обновление с GitHub для одного отслеживаемого бранча на локальный репозиторий. | |
Команда безвредная, можно/нужно днлать часто (не вносит изменений в рабочую директорию, | |
изменяется только origin/master). После fetch надо делать слияние | |
git fetch | |
> Слияние как с обычным бранчем | |
git merge origin/master | |
> Получение обновлений с GitHub за одно действие | |
(git pull = git fetch + git merge) | |
git pull | |
> Получить бранч с GitHub в локальную версию. Будет создан отслеживаемый бранч | |
git branch <Имя_бранча> <origin/Имя_бранча> | |
>> Получить бранч с GitHub и сразу на него переключиться | |
git checkout -b Имя_бранча origin/Имя_бранча | |
> Пред отправкой на GitHub надо делать fetch, затем merge с origin, только потом push | |
> Удаление бранча на GitHub (1 способ) | |
git push origin :Имя_бранча | |
> Удаление бранча на GitHub (2 способ, понятнее) | |
git push origin --delete Имя_бранча | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment