davidtbilisi.learning_git

GIT LEARNING

Most Used

Reset vs Revert vs Restore

reset -ი გამოიყენება მანამდე სანამ არ გავაკეთებთ push -ს,
ხოლო push -ის გაკეთების მერე ვიყენებთ revert -ს

# შლის ყველა დაუქომითებელ ცვლილებას
git reset --hard
# შლის ბოლო 2 commit-ს
git reset HEAD~2 --hard
# ქმნის ახალ Commit-ს ძველის გასაუქმებლად

# hash-ად უნდა მივუთითოთ ის hash-ი რომლის გაუქმებაც გვინდა
# გამოიყენება ერთი კონკრეტული commit-ის გასაუქმებლად
git revert <hash>
# აკოპირებს source-ის მდგომარეობას მიმდინარე სამუშაო ფაილში
git restore filename --source=<Branchname or HEAD~n>

Commiting

# ფაილის დამატება და დამახსოვრება
git commit -am [message]

Basics

სახელის შეცვლა git -ის მეშვეობით

git mv old.txt new.txt

ოპერაციული სისტემიდან შეცვლილი ფაილების სწორად აღსაქმელად

git add -A

Commit

git add and commit with short message

git commit -am "commit messsage"
git commit --amend

Branch

ჩამოთვლისი ლოკალურ და რემოუთ ტოტებს

git branch -a

ტოტის შესაქმნელად

git branch newbranch

ტოტის შესაცვლელად

git checkout newbranch

ტოტისთვის სახელის შესაცვლელად

git branch -m old_branch_name new_branch_name

ტოტის წასაშლელად

git branch -d old_branch_name

Fetch doc

Fetch image

მოაქვს მეტა მონაცემები remote repo-დან

git fetch origin master --all

Merge doc

იმისთვის რომ მარტივი იყოს დასამახსოვრებლად, სიტყვა merge -ს ერთერთი მნიშვნელობა არის შთანთქმა ან ჩაყლაპვა. შესაბამისად შეგვიძლია წარმოვიდგინოთ, როგორ ყლაპავს მიმდინარე ტოტი, მითითებულს

გადავერთოთ იმ ტოტზე რომელიშიც გვინდა გავაერთიანოთ სხვა ტოტი

git checkout master
git merege other_branch 

--fast-forward - (default param) როდესაც master-ზე არ მომხდარა ცვლილებები და ისე ერთიანდება, თითქოს არც ყოფილა განტოტვა.

--no-ff - ისე ერთიანდება, თითქოს ყოფილა განტოტვა.

კონფლიქტების გადაწყვეტა

git mergetool

Rebase

ცვლის ტოტის საწყისს

Rebase gif

git checkout otherbranch
git rebase master
git rebase --abort
git rebase --continue

git pull --rebase origin master

Log

დროის ლიმიტი

git log --since="3 days ago" --oneline

კონკრეტული ფაილის ისტორიის სანახავად

git log -- filename --oneline

Show

დეტალური ინფოს სანახავად

git show somehash

Alias

გლობალური ალიასები ინახება ამ მისამართზე

cd ~/.gitconfig

გლობალური ალიასის შესაქმნელად

git config --global alias.somealias "somename --param1 --param2 --param3"

Diff

განსხვავების სანახავად 2 ტოტს შორის

git diff branch1 branch2
git difftool branch1 branch2

Stash

სიტყვა ნიშნავს დამალვას, დაფარულ საგანძურს

დროებით დამალვა (კომენტარებით)

git stash save "comment message"

დროებით დამალვა (კომენტარებით) -u for untrecked

git stash -u save "comment message"

დამალულის სიის ჩვენება

git stash list

კონკრეტული საგანძურის ნახვა

git stash show@{n}

საგანძურის დაბეუნება

git stash apply stash@{1}
git stash drop stash@{1}

apply & drop last stash

git stash pop
git stash branch new_branch_name

ყველა საგანძურის წაშლა

git stash clear

Tags

git tag tagname
git tag --list
git show tagname
git show --delete tagname

release

git tag -a v1.0.0

ტეგის მინიჭება კონკრეტული ქომითისთვის

git tag -a tagname sha_of_commit

ტეგის გადატანა სხვა ქომითისთვის

git tag -a tagname -f sha_of_commit

კონკრეტული ტეგის გადატანა GitHub-ზე

რაც თავის მხრივ ქმნის zip ფაილის გადმოწერის საშუალებას.

git push origin tagname

ტეგების გადატანა GitHub-ზე

git push origin master --tags

ტეგების წაშლა GitHub-დან

push nothing to this tag name

რჩება ლოკალურად მაგრამ იშლება GitHub-დან

git push origin :tagname