Git
cd <to dir you want to make git>
git config --global user.name "samuel-edmund-morgan"
git config --global user.email "samuel.edmund.morgan@gmail.com"
git init -b main (or git clone <repo> if someone's else repo)
#also you can view all git settings in ~/.gitconfig file
#<add or create files in this dir>
git add . #or name of the file
# to undo changes in file use git restore
git commit -m "Init commit"
#<create github repo>
#<share ssh keys in Settings>
git remote add origin git@github.com:samuel-edmund-morgan/DocumentCleaner.git
git remote -v
git push -f origin main
#<Now make changes in files>
git add .
git commit -m "Something have been done"
git push origin main
git log
#--shows comit history--
git status
#--It will show status of files or whether directory upon control of git--
git pull
#--updates changes from repos--
git checkout -b [name_of_your_new_branch]
#--creates new branch for you and makes it current--
#or
git branch newname
#creates new branch
git branch -m main
#renames master to main (if master is current)
git checkout <commit id like aa43ce3442fhd>/<or branch name>
#or
git checkout master #to move back to master
#--navigate through commits
git push origin [name_of_your_new_branch]
#--pushes (after git commit) changes to repo in different branches--
git branch
#shows all branches
#Потрібно працювати не в main (master) а для окремих фіч робити окремі гілки, працювати в гілках, і після того як все буде зроблено в гілці і перевірено на роботоздатність - перейти в main і зробити git merge
git checkout main (#or master)
git merge [name_of_your_branch]
Якщо випадково в main(master) попало те що там бути не повинно було то можна відкатити зміни двома способами:
1) git revert [hash_of_commit_to_undo] #(щоб побачити хеші git status попередньо)
2) git reset [hash_of_commit_to_navigate] #(хеш коміту ДО якого хочу повернутись)
#Можна відкатитись на пару комітів назад (^^) і видалити у файлах зроблені зміни (--hard):
git reset HEAD^^ --hard
#Коли багато різних бренчів то часто структура комітів виглядає дуже розгалужено, тому роблять git rebase щоб структура була лінійною:

ПРАВИЛО: Одна фіча - один коміт в основну мейн гілку.
Якщо треба скасувати зміни, внесені у файл, який ще не додано в індекс, можна виконати команду:
Якщо файл помилково додано в індекс, слід виконати команду:
| Команда | Опис |
|---|---|
git config --global ... |
Встановити глобальні параметри Git |
git init |
Ініціалізувати новий Git репозиторій у поточній директорії |
git status |
Показати інформацію про репозиторій |
git add ./path/to/files |
Підготувати зміни файлу для збереження |
git restore file_name |
Скасувати зміни в модифікованому файліfile_name |
git restore --staged file_name |
Видалити файлfile_name з індексу |
git commit |
Відкрити текстовий редактор, щоб ввести повідомлення для коміту та зберегти зміни в індексі |
git commit -m 'do something' |
Зберегти зміни із вказаним повідомленням |
git commit -am 'do something' |
Підготувати всі змінені файли та зберегти із вказаним повідомленням |
git log |
Показати історію комітів |
git lg |
Аліас, який ми створили дляlog |
git branch |
Показати всі гілки |
git branch branch_name |
Створити нову гілкуbranch_name |
git branch -D branch_name |
Видалити гілкуbranch_name |
git checkout hash-or-branch |
Перейти на іншу гілку або хеш коміту |
| Команда | Опис |
|---|---|
git branch |
Показати всі гілки |
git branch new_branch |
Створити нову гілку з назвоюnew_branch |
git branch -m new_name |
Перейменувати поточну гілку наnew_name |
git branch -d branch_name |
Видалити неактивну гілку |
git checkout branch_name |
Перейти з поточної гілки на гілкуbranch_name |
git switch branch_name |
Перейти з поточної гілки на гілкуbranch_name |
git checkout -b new_branch |
Створити гілкуnew_branch та одразу перейти на неї |
git switch -c new_branch |
Створити гілкуnew_branch та одразу перейти на неї |
git merge branch_name |
Об'єднатиbranch_name з поточною гілкою |
git revert hash_of_commit |
Створити новий коміт зі змінами протилежними змінам у вибраному коміті |
git reset hash_of_commit |
Переставити гілку на вказаний коміт |
git reset HEAD^^ --hard |
Переставити активну гілку на 2 коміти назад та видалити всі зміни в файлах |
git rebase branch_name |
Перебудувати зміни з поточної гілки підbranch_name. Усі коміти поточної гілки будуть перебудовані під branch_name |
git rebase -i branch_name |
Перебудувати зміни з поточної гілки підbranch_name. Лише вибрані коміти поточної гілки будуть перебудовані під branch_name |
git restore file_name |
Видалити непідготовлені зміни до коміту вfile_name |
git restore --staged file_name |
Видалити підготовлені зміни до коміту вfile_name |
git restore -SW |
Видалити всі зміни у файлах (підготовлені та непідготовлені до коміту) |
git commit --amend |
Замінити поточний коміт на інший |
Git signing with Yubikey:
git config --global user.email "samuel.edmund.morgan@icloud.com"
git config --global user.name "Samuel Morgan"
git config --global user.signingkey EAFEC4BBF49CC2FA
git config --global commit.gpgsign true
#On Mac
#git config --global gpg.program gpg
#On Windows
git config --global gpg.program "C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe"
GPG Suite and Yubikey Manager (at least cli version) must be installed
In VSCode in command palette (Command + Shift + P) enter "Open User Settings" and enter: