2020 m. balandžio 10 d., penktadienis

git komandos

Konfigūracija patį pirmą kartą
Github komandų vizualizacija

$ git config --global user.name "Vardas"
$ git config --global user.email "a@a.lt"
$ git config --global core.excludesfile ~/.gitignore_global #Pridedamas globalus ignoravimo failas

$ git config --system --list #Rodo parametrus
$ git config --global --edit #Varda ir el-pašto konfigūravimas faile
[user]
        email = you@example.com
        name = username
[credential]
        helper = cache
[core]
        excludesfile = /home/user/.gitignore_global


# Spalvina git komandas
$ git config color.status always

Taip pat, kad automatiškai spalvintų git komandas, ir nereiktų atskirai suvedinėti, galima sukurti color sekciją ~/.gitconfig faile:
[color]
  diff = auto
  status = auto
  branch = auto
  interactive = auto
  ui = true
  pager = true
*
Kaip pažiūrėti esamą konfigūraciją?
$ git config --list
user.email=you@example.com
user.name=Vardas
credential.helper=cache
core.excludesfile=/home/sup/.gitignore_global


Git Siuntimas/Sinchronizavimas 

Vienos rinkmenos įkėlimas:
$ git add dokumento_pavadinimas

Viso  turinio įkėlimas:
$ git add .

Būtinas komentaro pridėjimas:
$ git commit -m "Pridėjimo žinutė"

Viso turinio įkėlimas, kartu su komentaro pridėjimu:
$ git commit -am "Pridedami visi failai ir prirašoma pridėjimo žinutė"


Nuotolinės repozitorijos nustatymas:
$ git remote add origin remote_repository_URL

Siunčiam pakeitimus į serverį:
$ git push origin master

Sinchronizuojamės su git repositorija:
$ git pull origin master


Klonavimas

Klonavimas pakeitus pavadinimą, naudinga kai tame pačiame kataloge dvi vienodos repositorijos:
$ git clone https://github.com/user/pavadinimas.git pavadinimas2

Trinimas

Kaip iš kompiuterio pašalinti paskutinį atnaujinimą?
$ git reset --hard HEAD~1

Kaip iš remote pašalinti paskutinį pakeitimą?
$ git reset --hard HEAD~ && git push origin +master

Kaip peršokti į praeitą tam tikrą reviziją:
$ git reset --hard 6ca74a6
$ git push -f # Šiuo atveju grįš prie 6ca74a6 revizijos. Ačiū Mitesh Shah

Atitaisymas,  kai meta klaidą "Your branch is behind 'origin/master'
$ git checkout master
$ git pull origin


Visų pakeitimų trynimas lokalioje repositorijijoje
$ git reset --hard
$ git clean -fd

Failų ignoravimas

Tam, kad repozitorijoje būtų ignoruojami failai, joje reikia pridėti .gitignore failą.

Kaip sukurti globalų git failų ignoravimą?
$ git config --global core.excludesfile ~/.gitignore_global
$ echo "*~" >> ~/.gitignore_global #Ignoruos gedit teksto rengyklės daromas atsargines kopijas 

Perrašymas

Siuntimas į serverį perrašant visas rinkmenas:
$ git push -f origin master
Pastebėjimas: -f komandą, perrašys visus dokumentu git repozitorijoje.


Šakos

$ git branch #Rodo visas šakas
$ git checkout master   #Pakeičia esamą šaką į master šaką arba
$ git switch master 


$ git checkout -b [šakos pavadinimas] #git šakos kūrimas ir perėjimas į naują šaką
$ git branch [šakos pavadinimas] #Arba
$ git checkout -b [šakos pavadinimas] origin/[šakos pavadinimas]#git šakos kūrimas ir parsisiuntimas šakos iš github repo ir įrašymas į naujai sukurtą šaką

$ git push origin [šakos pavadinimas] #Šakos siuntimas į repo

Šakų sujungimas:

$ git branch
naujasaka
* master
$ git merge naujasaka #Naujos šakos sujungimas į master

Šakos pavadinimo keitimas:
$ git branch -m [senas_pavadinimas] [naujas_pavadinimas]

Šakos trynimas:
$ git branch -d [šakos pavadinimas]

$ git diff master nauja-saka --stat #Lygina šakų šakas ir atspausdina skirtumus

Tagai

Prideda tagą prie dabartinio commito:
$ git tag 1.0.0 --force && git push --tags --force

Prideda tagus prie ankstesnio commito ir išsiunčia į serverį:
$ git tag -a 1.0.1 7bcd55 && git push --tags --force   

Atvaizdavimas Logai

$ git log --oneline #Atvaizduos visus pakeitimus suspaustu formatu

Kaip pasižiūrėti paskutinius  2 pakeitimus?
$ git log -n 2

Avaizduoja visus komitus po eilutę
$ git log --decorate --oneline --graph


Atvaizdavimas pagal user-commitus:
$ git shortlog -s 

$ git log rev-list --count šaka #Bendras komitų kiekis šakoje


Darbas komandoje

Git workflow kelims žmonėms:
$ git pull --rebase

Git pull = rebase konfigūravimas:
$ git config --global pull.rebase true

Dirbant su forkai's [*]

Pritedam upstream pas save iš forkintos repo
$ git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git


$ git fetch upstream
$ git pull upstream master


Kitos komandos


Kaip atstatyti seną commitą, neištrinant ankstesnių:
git revert --no-commit 7bcd5..HEAD && git commit 

Kaip patikrinti ar nebuvo pakeitimų?
$ git fetch origin
$ git diff origin master

Git repositorijos pridėjimas į dabartine direktoriją
$ git init
$ git remote add origin Kelias/iki/repositorijos
$ git pull origin master

Kaip įsiminti git slaptažodį?
$ git config --global credential.helper cache

Git buvimo vietos keitimas/atvaizdavimas:
$ git remote set-url origin git@git....
$ git remote -v

Kiek programuotojų dirba projekte?
$ git log --format='%an' | sort -u | wc -l
518


Kiek įrašų (commits) turi projektas?
$ git rev-list --count devel
22783


Kuris programuotojas padarė daugiausiai įrašų?
$ git shortlog -s -n | head -1
  4230  METEOR: benjam
n

Kurie programuotojai padarė ne mažiau kaip 5 įrašus?
$ git shortlog -s -n | awk -F" " '$1 > 4 {print $1, $2}'

Kiek kodo eilučių buvo parašyta projekte (iš viso)
$ git ls-files | xargs cat | wc -l
490963


Kiek šakų (branches) turi projektas?
$ git branch -r | wc -l
1083



Pakeistos repositorijos pushinimas į naują repo:

$ git remote set-url origin https://github.com/.../....git
$ git push --all



Atsisiuntimas

Kaip atsisiųsti tik vieną failą iš github repositorijos?
https://raw.github.com/vartotojas/repositorijos-pavadinimas/šaka-master-dev/failo-pavadinimas




Literatūra:
Git gidas su paaiškinimais - https://rogerdudler.github.io/git-guide/.