Skip to content

Instantly share code, notes, and snippets.

@DeadNumbers
Forked from mikkabond/git
Created July 15, 2022 12:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DeadNumbers/9c6b1e75b5d2fd502668235e577e5328 to your computer and use it in GitHub Desktop.
Save DeadNumbers/9c6b1e75b5d2fd502668235e577e5328 to your computer and use it in GitHub Desktop.
git commands and hacks
## https://dev.to/nishina555/how-to-ignore-files-already-managed-with-git-locally-19oo
## как игнорировать изменения уже отслеживаемого файла/папки
# если нужно менять локально и не отправлять затем в основную ветку
git update-index --skip-worktree путь/к/файлу/файл
# обратная операция
git update-index --no-skip-worktree путь/к/файлу/файл
# если не нужно менять локальные файлы (при подтягивании изменений из основной ветки)
git update-index --assume-unchanged путь/к/файлу/файл
# обратная операция
git update-index --no-assume-unchanged путь/к/файлу/файл
## список файлов в индексе и рабочем дереве с проверкой (-v) на игнорируемость
git ls-files -v
# в выводе вначале строки идет признак: S - применена опция skip-worktree
# в выводе вначале строки идет признак: h - применена опция assume-unchanged
# поиск файлов, игнорируемых через опции skip-worktree и assume-unchanged
git ls-files -v|grep -E "^[S|h]"
## использование временного хранилища для изменений в ветке
# сохранить изменения
git stash save
# извлчеь последнее помещенное в хранилище
git stash pop
# очистить хранилище полностью
git stash clear
# переключение на ветку
git checkout ветка
# слить текущую ветку с изменениями в "ветка"
git merge ветка
# посмотреть, где настройки
git config --list --show-origin
# посмотреть настройки
git config --list
# узнать источник настройки
git config --show-origin настройка
# переместить все изменения текущей ветки в другую ветку (в случае, когда редактируешь код не в той ветке)
git stash
git checkout другая_ветка
git stash pop
# .gitignore должен быть добавлен до первого коммита в репозиторий, чтобы сам по себе не подвергался отслеживанию
.gitignore
cache/
tmp/
node_modules/
**/cache/**
**/debug/**
**/logs/**
**/tmp/**
**/*.bak
**/*.txt
.vscode/
# создать репозиторий в папке и залить в заранее созданный пустой проект на github или gitlab (для примера udemy-express.git)
git init
git remote add origin https://gitlab.com/mikkabond/udemy-express.git
git add .
git commit -m 'Initial commit'
git push -u origin master
# посмотреть адрес удаленного (сетевого) репозитория
git remote show origin
# насильно переписать удаленный репозиторий после правок на локальном (например, если отправил комит в репу, а потом его надо удалить)
git push origin +master
# слить коммиты в один
1> git rebase --interactive <хэш коммита, после которого объединять вплоть до крайнего, или HEAD~[N], где N - кол-во коммитов назад от крайнего, включая его>
2> в открывшемчя окне редактора пометить нужные коммиты для слияния s, а как начальную точку - p
3> разрешать конфликты по мере их появления и указать коментарий для итогового коммита
#удалить ветку в удаленном репозитории
git push origin --delete <имя ветки>
#удалить ветку локально
git branch -d <имя ветки>
# информация о репозиториях
git remote -v
# как добавить правки в последний зафиксированый коммит:
## с возможностью редактирования комментария к коммиту
git commit --amend
## без редактирования комментария, но просто добавить правки
git commit --amend --no-edit
## добавить/изменить только комментарий
git commit --amend -m "измененный комментарий"
## отправить изменнный таким образом коммит в репу origin в ветку some_branch, если раннее уже отправляли
git push -f origin some_branch
# чтобы при повторном редактировании комментариев можно было использовать # вначале строки
git config --global core.commentchar ';'
# очистка текущего индекса от правок (-n для прогона без действий)
git clean -f
# если возник merge конфликт
1) git status - чтобы увидеть какие именно файлы с конфликтами
2) поправить файл в редакторе
3) git add .
4) git commit
# удаление веток
## локальную
git branch -d feature/login
## удаленную
git push origin --delete feature/login
# откатить последний коммит с потерей всех изменений и отправить этот откат в удаленный репозиторий
git reset --hard HEAD~1
git push --force origin
# загрузить и переключиться на несуществующую локально удаленную ветку release_3.2.1 из репозитория origin
git checkout --track origin/release_3.2.1
# то же самое, если нужно создать локальную ветку с другим именем (foobar например)
git checkout --track -b foobar origin/release_3.2.1
# вывести список файло в коммите по хэшу
git show --pretty="" --name-only <commit hash>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment