Last active
September 21, 2022 13:28
-
-
Save gaalferov/c23002e30dbb29dfc903a7dd93d3787f to your computer and use it in GitHub Desktop.
Git cheat sheet (rus)
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
Создать новую ветку с названием "dev-20160202-testBranch" из ветки origin/master | |
git checkout -b dev-20160202-testBranch origin/master | |
git checkout -b dev-20160308-newdesign-admin origin/new_desing | |
Создать новую ветку с именем "dev-20150225-gaalferov-newDesign-search" c ветки "origin/dev-20151229-denst-newDesign" | |
git checkout -b dev-20150225-gaalferov-newDesign-search origin/dev-20151229-denst-newDesign | |
Проверить какая сейчас ветка активна | |
git branch | |
Удаление веток | |
git push origin :heads/SEO-40 (удалить удаленную ветку) | |
git branch -d SEO-40 (удалить локальную ветку) | |
Подтянуть последние изменения | |
git pull | |
git pull --all | |
git pull --rebase (Git сначала заберёт изменения из удалённой копии ветки, а потом накатит ваши незапушенные коммиты после самого последнего коммита удалённой ветки, так, как будто бы всё так и было) | |
Подтянуть все изменения по всем веткам | |
git fetch --all | |
Отправить изменения | |
git push | |
git push -f origin master (После того, как откат сделан, и выполнен очередной локальный коммит. ОБЯЗАТЕЛНО УКАЗЫВАТЬ ВЕТКУ В КОТОРУЮ ПУШИТЬ, ИНАЧЕ ЗАТРЕТ СВЯЗАННЫЕ С НИМ) | |
Добавить новую ветку | |
git push origin NewBranchName | |
Отктатить обратно файл (error: Your local changes to 'parsing/restaurants/chernovar.php' would be overwritten by merge. Aborting.) | |
git checkout parsing/restaurants/chernovar.php (Это как git reset --hard, только для конкретного файла.) | |
Спрятать изменения | |
git stash | |
git stash pop | |
git stash listz | |
git stash save "add .idea and logs" (сохранить) | |
git stash apply stash{0} (применить) | |
git stash drop stash@{0} (удалить) | |
Отменить последний коммит (если еще не запушил) | |
git reset --soft HEAD^ - без потери изменений | |
git reset --hard HEAD^ - с потерей всех локальных изменений | |
git reset --hard {{some-commit-hash}} — вернуться на определённый коммит в истории. Все изменения, сделанные после этого коммита пропадут. | |
git reset {{some-commit-hash}} — вернуться на определённый коммит в истории. Все изменения, сделанные после этого коммита, получат состояние «Not staged for commit». Чтобы вернуть их обратно, нужно использовать команды git add и git commit. | |
git reset --soft {{some-commit-hash}} — вернуться на определённый коммит в истории. Все изменения, сделанные после этого коммита, получат состояние «Staged for commit». Чтобы вернуть их обратно, нужно использовать команду git commit. | |
После отката на определенный коммит, запушить с форсом | |
git reset --hard b7ec798 | |
git reset --hard HEAD~1 | |
git push origin feature/SCALRCORE-9180 -f | |
Откатить последний коммит (если уже запушил) | |
git revert HEAD (последний коммит) | |
git revert HEAD~1 (ПРЕД последний коммит) | |
общая информация | |
git status | |
git status -s | |
Коммит | |
git commit | |
git commit --amend (внести исправления в последнюю ветку, если еще не запушил) | |
Лог ветки | |
git log | |
git log --oneline --graph | |
Поиск поломок между ветками | |
git bisect | |
git bisect start — начинаем процедуры разделения | |
git bisect good {{some-commit-hash}} — помечаем коммит как хороший (например, последний сделанный вами перед отпуском) | |
git bisect bad {{some-commit-hash}} — помечаем плохой коммит (например, HEAD главной ветки, HEAD означает последний коммит) | |
В этот момент Git находит срединный коммит и сообщает вам, что можно проводить проверку | |
git bisect bad — сообщаем Git о том, что наша фича не работает в проверяемом в данный момент коммите | |
git bisect good — сообщаем Git о том, что наша фича работает в проверяемом в данный момент коммите | |
Когда первый плохой коммит будет найден, Git сообщит вам об этом, при этом выполнение git bisect завершается | |
git bisect reset — возвращаемся начальной точке процесса git bisect (например, к HEAD главной ветки) | |
git bisect log — отображает последний успешно выполненный git bisect | |
Добавление новой ветки с именем 'upstream', которая будет отслеживать github проект git://github.com/octocat/Spoon-Knife.git | |
git remote add upstream git://github.com/octocat/Spoon-Knife.git | |
Объединение веток | |
git merge orign/master | |
git merge --no-ff orign/master | |
git merge --abort - отменить merge пока не закомитил | |
Объединение всех изменений в 1 коммит | |
git checkout -b fix/SCALRCORE-8779 | |
git merge --squash fix/7.9.0/SCALRCORE-8779 | |
git commit -m "SCALRCORE-8779" | |
git push | |
git checkout master | |
git checkout -- <file> OR . (Отмена изменений по 1 файлу или всей директории) | |
git pull upstream master | |
git push origin master | |
git rebase master #Всё отличие только здесь | |
git cherry-pick <hash коммита> mega_fix~3 v1.0.1 | |
Из примера выше видно, что на коммит можно сослаться сразу несколькими способами: | |
Используя SHA хэш коммита (или его сокращенный вариант). | |
Используя имя ветки (можно использовать синтаксис ^<N> и ~<N>). | |
Используя тэг, которым помечен коммит. | |
Стоит отметить, что в отличии от слияния (merge) при cherry-pick переносятся только изменения, а не сам коммит полностью. При этом, в целевой ветке создается новый коммит (коммиты) содержащий необходимые изменения. | |
git cherry-pick --no-commit ^master feature/SCALRCORE-8986 - перенос всех изменений, без коммита (^master - от которой ветки создана ветка, feature/SCALRCORE-8986 - с какой ветки вытянуть все изменения) | |
Взять все измененные файлы с папками и запихнуть все в zip | |
zip modified-files.zip $(git ls-files --modified) | |
Взять все измененные и новые файлы между текущей веткой и веткой master (запихнуть все в zip) | |
zip DYM-89.zip $(git diff --name-status master) | |
После добавления папки в .gitignore, необходимо подчистить кэш | |
git rm -r --cached .idea | |
git rm -r --cached *.iml | |
Сгенерировать новый ключ | |
ssh-keygen -t rsa | |
Использовать другой ssh ключ в проекте | |
git config --add --local core.sshCommand 'ssh -i ~/.ssh/id_rsa_somename' | |
Или можно добавить сразу в общий конфиг ~/.ssh/config | |
Host github.com-alias1 | |
Hostname github.com | |
IdentityFile=/home/user/.ssh/id_rsa_somename | |
Host github.com-alias2 | |
Hostname github.com | |
IdentityFile=/home/user/.ssh/id_rsa_somename2 | |
Использовать алиас через ssh config файл | |
git clone git@github.com-alias1:1alf/some-project.git | |
После чего будет юзаться алиас для "origin" | |
.gitconfig | |
[remote "origin"] | |
url = git@github.com-alias1:1alf/some-project |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment