User Tools

Site Tools


project:git_basics

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:git_basics [2016/06/19 20:36] – dpproject:git_basics [2017/07/19 15:54] (current) – dp
Line 1: Line 1:
-====== Git osnove ======+ ====== Git osnove ======
  
 +FIXME
 +
 +Bilješke s Git radionice [[http://radiona.org/git-radionica-code-soup/|Code Soup]], Dobrice Pavlinušića.
 +
 +<code>
 git reset ahead git reset ahead
 git commit --ammend git commit --ammend
 +  
 +git rebase
 +git diff
 +git log -f
 +git grep [nešto]
 +</code>
  
-rebase +Zanimljivi projekti koji koriste git:
-diff +
-log -f +
-grep+
  
-etckeepe +  * etckeeper http://etckeeper.branchable.com/ 
-bak-git +  * git-annex (ala dropbox) https://git-annex.branchable.com/ 
-git-annsex (ala dropbox)+  * bak-git https://github.com/dpavlin/bak-git
  
-promjene git sprema na razini LINIJA +  * promjene git sprema na razini **LINIJA** 
-bilo kakve datoteke/formati bazirane na linijama (kicad, SVG)+  * bilo kakve datoteke/formati bazirane na linijama (kicad, SVG) 
 +  * git je distribuiran, svaki repozitorij/fajlovi su prisutni na svakom drugom. 
 +  * preporuča se da promjene budu manje (kako bi se potencijalno mogli iskorisititi i za druge...) 
 +  * git je napravljen za kernel developere 
 +  * u gitu se mogu raditi svoje naredbe 
 +  * gitlab alternativa githubu kad ne zelimo imat javni rep ili ne zelimo platit
  
-git je distribuiran, svaki repozitorij/fajlovi su prisutni na svakom drugom.+''remote'' u git terminologiji je repozitorij koji je negdje drugdje (u drugom direktoriju ili na mreži)
  
-preporuča se da promjene budu manje (kako bi se potencijalno mogli iskorisititi i za druge...)+''clone'' kloniranje svega s remote repozitorija i kopiranje na local repozitorij
  
-git je napravljen za kernel developere+''init'' uđi u folder, initialize a repository on a new folder or existing one
  
-remote u git terminologiji je ... ?+''.git'' folder u kojem git sprema sve (nije backup) ... delete to destroy repository
  
-rsync je ok način za prebacit repozitorij na drugo računao+''.gitignore'' specify files and file patterns for git to ignore (create file: ''touch .gitignore'' and add e.g. *.log)
  
-gitlab alternativa githubu kad ne zelimo imat javni rep ili ne zelimo platit+''commit'' changes go to local repo... making safe points...
  
-rebase (tvoj commit stavlja kao zadnji (na vrhu) master brancha)+''git commit -m "description"'' dodavanje opisa uz commit, u protivnom se otvori vim editor
  
-git fetch origin (povoci sve što je čovjek napravio u međuvremenu)+''push'' push changes from local to remote
  
-diff (pogledaj trenutno stanje u odnosu na master)+''pull'' sync lokal s remote repozitorijem. povuci sve promjene s remote repozitorija koje nisu u lokalnom repozitoriju.
  
-git log -p+''rebase'' (tvoj commit stavlja kao zadnji (na vrhu) master brancha)
  
-git grep (grepa samo kroz stvari koje su u samom gitu (commitovima); kao grep ali na manjem setu fajlova) +''pull --rebase'' ensures that your changes commited localy will always be put on top of anything you pull from remote
-git grep -i (case insensitive)+
  
-git status+''rsync'' je ok način za prebacit repozitorij na drugo računao
  
-pre commit hook (nešto što se projavi prije comminta pa se može nešto napraviti npr. izbrisati spejsove (davor!))+''git fetch origin'' s remote repozitirija povuci sve promjene napravljene u međuvremenu (od zadnjeg cloniranja ili fetch-anja)... fetching povuče sve promjene u lokalni repozitorij, ali ih ne merge-a.
  
-git squash  (sve squasha u jedan commit) +''git pull origin'' will automatically fetch and merge the changes from the remote branch into your current branch
-git patch (slicno ali bez kreiranja novog brancha)+
  
-git cherry pick (?)+''git push origin master'' we are telling git to push our changes to the remote repository known to us as origin and commit them to the master branch
  
-u gitu se mogu raditi svoje naredbe+''git remote add IME_DODATNOG_REPOZITORIJA http://git...'' adding additional remote repositories
  
-pre commit ogranicavanje usera+''diff'' (pogledaj trenutno stanje u odnosu na master)
  
-head (teoretski trenutni zadnji commit)+''git log -p''
  
-git commit -m "description" +''git grep'' (grepa samo kroz stvari koje su u samom gitu (commitovima); kao grep ali na manjem setu fajlova)
-git push+
  
-git add . ("." current directory) +''git grep -i'' (case insensitive)
-git add *+
  
 +''git status'' check status of the repository ... what files are untracked
  
-===== primjer ===== +''git add'' stage a file for commit
-(dobrica je kreirao github repozitorij)+
  
-git clone https://github.com/dprizmic/radiona-git-soup+''pre commit hook'' (nešto što se projavi prije comminta pa se može nešto napraviti npr. izbrisati spejsove (davor!)) 
 + 
 +''git squash'' (sve squasha u jedan commit)\\  
 +''git patch'' (slicno ali bez kreiranja novog brancha) 
 + 
 +''git cherry pick'' (?) 
 + 
 +''pre commit'' ogranicavanje usera 
 + 
 +''HEAD'' (teoretski trenutni zadnji commit) 
 + 
 +''git commit -m "description"''\\  
 +''git push'' 
 + 
 +''git add .'' ("." stage everything in current directory)\\  
 +''git add *''\\ 
 +''git add *.txt'' 
 + 
 +''git branch IME_NOVOG_BRANCHA'' create new branch 
 + 
 +''git checkout IME_NOVOG_BRANCHA''  
 + 
 +''git checkout master'' switch back to the main branch  
 + 
 +''git merge IME_NOVOG_BRANCHA'' ... ali i potencijalni konflikti... 
 + 
 +===== Primjer grupnog rada ===== 
 +(Dobrica je kreirao github repozitorij) 
 + 
 +<code> 
 +git clone https://github.com/username/radiona-git-soup
 cd radiona-git-soup/ cd radiona-git-soup/
 ls ls
Line 74: Line 113:
 git log git log
 git push git push
 +</code>
  
 --- nakon konflikta --- nakon konflikta
  
-git remote add dpavlin https://github.com/dpavlin/radiona-git-soup+''git remote add dpavlin https://github.com/dpavlin/radiona-git-soup''
  
-git remote -v (ispisuje sve repozitorije koje mogu koristit lokalno)+''git remote -v'' (ispisuje sve repozitorije koje mogu koristit lokalno)
  
-git fetch dpavlin (povlači i na disk spremi promjene, ali ih ne apply-a na lokalne fajlove na disku)+''git fetch dpavlin'' (povlači i na disk spremi promjene, ali ih ne apply-a na lokalne fajlove na disku)
  
-git pull dpavlin master (pull?)+''git pull dpavlin master'' (pull?)
  
-git status (kad god je neka nejasnoca)+''git status'' (kad god je neka nejasnoca)
  
-git rm README (brisanje file)+''git rm README'' (brisanje file)
  
-ls+''ls''
  
-git diff (ispisivanje razlike između lokalne i remote verzije)+''git diff'' (ispisivanje razlike između lokalne i remote verzije)
  
-git commit (lokalno primjeniš promjene)+''git commit'' (lokalno primjeniš promjene)
  
-git push (gurni remote)+''git push'' (gurni remote)
  
-git log --oneline --graph --decorate (ascii grafovi)+''git log --oneline --graph --decorate'' (ascii grafovi)
  
-git commit --amend (modificiraj zadnji commit koji si napravio, nadoštukaš :)+''git commit --amend'' (modificiraj zadnji commit koji si napravio, nadoštukaš :)
  
-git show SHA (hash) (promjene u tom commit-u)+''git show SHA (hash)'' (promjene u tom commit-u)
  
-git revert SHA (makne commit)+''git revert SHA'' (makne commit)
  
-git rebase +''git rebase'' 
-git reset HARD+''git reset HARD''
  
 (trenutno smo u neobičnoj situaciji :) (trenutno smo u neobičnoj situaciji :)
  
-git rebase -i (sve komite iza nekog ce otvoriti u editoru)+''git rebase -i'' (sve komite iza nekog ce otvoriti u editoru)
  
-drop (izbaci pojedini commit)+''drop'' (izbaci pojedini commit)
  
 otišli smo u povijest i nešto izmjenili. a to nije uredu! otišli smo u povijest i nešto izmjenili. a to nije uredu!
-napravili smo sranje :)+napravili smo sr*nje :)
  
-SHA ovisi i o prošlim commitovima, što znači da ako nešto promjenimo (rebase) mjenjaju se i SHA-ove. to je razlog zasto ne radimo rebase ako su i drugi contributory ukljuceni+SHA ovisi i o prošlim commitovima, što znači da ako nešto promjenimo (''rebase'') mjenjaju se i SHA-ove. To je razlog zasto izbjegavamo ''rebase'' ako su i drugi contributory ukljuceni.
  
-git push -f (izvlacenje iz situacije)+''git push -f'' (izvlacenje iz situacije)
  
-===== merge-anje submodula u jedan =====+===== Merge-anje submodula u jedan =====
 primjer f32c primjer f32c
  
 +<code>
 mkdir subodules/ mkdir subodules/
 cd sumbodules/ cd sumbodules/
 mkdir f32c/ mkdir f32c/
 cd f32c/ cd f32c/
-git init (????)+git init
 git submodule add https://github.com/f32c/f32c git submodule add https://github.com/f32c/f32c
 git submodule add https://github.com/f32c/arduino git submodule add https://github.com/f32c/arduino
Line 136: Line 177:
 git submodules update git submodules update
 git submodules foreach git diff git submodules foreach git diff
 +</code>
  
 +===== Korištenje tagova =====
 +Tags (human readable name za neki commit)\\
 +Za svaki commit mozemo dati tag koji dohvaćamo isto kao i preko SHA
  
-tags (human readable name za neki commit) +===== Pre commit skripta ===== 
-za svaki commit mozemo dati tag koji dohvaćamo isto kao i preko SHA+Dobrica&Davor script. Remove whitespace from end of lines. Kako se koristi?
  
- +<code bash>
- +
- +
-===== pre-commit skripta ===== +
-Dobrica&Davor script. Remove whitespace from end of lines. +
- +
-<code>+
 #!/bin/sh #!/bin/sh
  
project/git_basics.1466361399.txt.gz · Last modified: by dp