Git
Разделы:
Отмена индексации / изменений
git reset HEAD index.html ## Откатить индексацию конкретного файла
git reset . ## отменит git add .
git reset --hard f58d3e2 ## жёстко откатит к выбранному комиту и разарвёт цепочку коммитов которые шли после
git restore --staged CONTRIBUTING.md ## современная альтернатива отмены индексации
git restore CONTRIBUTING.md ## откат изменений в файле - файл будет взят из коммита
git revert HEAD --no-edit ## отменит коммит
git checkout name_file ## возвращаем удалённый файл если он закоммичен
git checkout . ## отменит все изменения в рабочей директории и откатит к последнему коммиту в репозитории
Работа с ветками
git branch -r ## ( посмотреть сетевые ветки )
git branch name ## создание новой ветки
git branch ## просмотр всех имеющихся веток
git branch -v ## просмотр веток и информация о коммите на который они указывают
git branch -f master 54a4 ## если мы находимся в другой ветке то эта команда передвинит ветку master к комиту 54a4
git branch -f master ORIG_HEAD ## так мы можем откатить мастер назад после мёржа с другой веткой - если там были замечены ошибки
git branch -d fix ## удалит ссылку на ветку fix
git branch -D fix ## удалит ветку полностью вместе с её коммитами
git branch fix 2c11 ## создаём ветку fix на комите 2c11 который не имеет своей ветки
git branch --move bad-branch-name corrected-branch-name ## переименует ветку с bad-branch-name в corrected-branch-name
git push --set-upstream origin corrected-branch-name ## заливаем переименованную ветку в облоко
git push origin --delete bad-branch-name ## удаляем в облаке старую ветку
git checkout -b name ## создать ветку и перейти в неё
git checkout name ## перейти в выбранную ветку
git checkout -f name ## перейти в другую ветку заменив не закомиченные изменения
git checkout -f ## отменит все изменения в файлах, всё будет как в комите на котором висит HEAD
git checkout -B master 54a4 ## если мы находимся в другой ветке, то эта команда передвинет ветку master к коммиту 54a4, а потом передвинет и HEAD
git checkout 54a4 index.html ## вытащит изменения или файл целиком из указанного коммита и поместит их туда, где у нас HEAD.
git checkout index.html ## возьмёт файл из HEAD
git stash ## собирает все незакоммиченные изменения, архивирует их и сохраняет в отдельном виде в репозитории, после чего удаляет их из файлов
git stash pop ## вернёт все заархивированные изменения
git cherry-pick 9e28 ## скопирует изменения на текущую ветку
Удалённый репозиторий
Подключить удалённый репозиторий:
git remote ## выведет названия доступных удалённых репозиториев. ( -v - посмотреть с адресами)
git remote add surfer https://github.com/paulboone/ticgit ## подключаем удалённый репозиторий к имени surfer
git remote show origin ## подробности об удалённом репозитории
git remote set-url origin <новый_URL_удаленного_репозитория> ## когда нужно перезаписать url на репозиторий
Отправить данные:
git push origin master ## отправка ветки мастер на сервер
git push origin --delete fix ## удаление ветки fix в удалённом репозитории
git push --force-with-lease --progress "origin" fix ## принудительно отправит ваши локальные изменения на сервер, но только если все ваши ветки по-прежнему существуют на удаленном сервере и не были изменены кем-то другим
Принять данные:
git fetch [remote-name] ## Получение изменений из удалённого репозитория - получает свежие данные с сервера, но не сливает их с нашими - мёржим сами вручную
git fetch --progress "origin" ## запрашивает изменения из ветки "origin" (по умолчанию - это ветка "master" на удаленном репозитории), и показывает на экране описание процесса загрузки, чтобы пользователь мог видеть ход выполнения операции
git fetch --all && git checkout name ## ( стянуть все ветки и перейти в нужную )
git pull ## сливает данные с сервера и сразу предлагает мёржить новые данные с нашими конфликтующими
git clone https://…..repositoryName.git ## клонировать удалённый репозиторий
Удаление
git rm -r name ## удалит файл или каталог и добавит в индекс
git rm -r --cached name ## удалит из индекса, но оставит в рабочем каталоге
git rm -f name ## удалит, даже если в файле были незакоммиченные изменения
git reset --hard name-commit ## удалит коммит и все последующие коммиты из истории
git rm name_file ## удаляет файл из репозитория
git commit --amend --no-edit ## изменит предыдущую фиксацию без изменения ее сообщения о коммите
git rm --cached name_file ## удалит только из коммита, в проекте останется
git branch name -d ## удаление ветки
git reset --hard HEAD~ ## удаляет последний коммит без возможности восстановления и переходит к пред идущему
Переместить или переименовать
git mv ## перемещение или переименование (индексирует автоматически)
git mv file.f folder/ ## переместит файл в каталог
git mv file.f index.html ## переименует файл
Коммиты
git commit -m"текст коммита" ## создание коммита, для создания многострочного коммита нужно не ставить последние апострофы в ключе -m", закрыть апострофы лишь по окончанию написания текста.
git commit -a -m “test” ## коммит с индексацией
git commit --amend -m "новое название коммита" ## позволяет переименовать созданный коммит
git revert name-commit ## создаст новый коммит, который отменяет изменения сделанные в выбранном коммите
git show hex_code ## посмотреть изменения в определённом коммите
Индексация
git add file-name ## добавить в индексацию конкретный файл
git add . ## добавить в индексацию все не проиндексированные изменения
git status ## посмотреть какие файлы находятся в индексе
Разное
git reflog ## история производимых операций, затрагивающих HEAD
git tag ## просмотр тегов
git config --global alias.ci commit ## создание алиаса для команд
gitk ## запустить gui приложение для просмотра истории коммитов и веток
git log --color --graph -n 10 --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit ## покажет последние 10 коммитов из истории с формитированием
:wq ## когда длинный вывод из него можно выйти набрав wq
## Авторизация
git config --global user.name “coder1”
git config --global user.email “coder@frontendx.ru”
git config --list ## показать все настройки
git init ## производим инициализацию в рабочем каталоге
git rm -r --cached name ## добавляем каталог в исключения
HEAD — всегда указывает на последний коммит текущей ветки. Поэтому когда мы переходим к предыдущим коммитам, мы можем их только просматривать, а чтобы делать оттуда новые комиты или изменения — необходимо от них создать новую ветку, тогда HEAD перейдёт туда.
git checkout -b vetka HEX
Что бы сделать много строчный коммит нужно написать:
git commit -m" ...пишем многострочный коммит и под конец закрываем двойные ковычки"