Professional Documents
Culture Documents
Git Guide PDF
Git Guide PDF
$ git init
Khc vi cc h qun l phin bnn khc, git cho php t repo hon ton ti my tnh local. Ni
i dung ca
c ton
b repository c lu ti th mc .git ti th mc va chy init:
Cn nh rng index l nh chp ca ton b cc file trong project ch khng ch l mt danh sch cc file b thay
i.
Commit
Commit l mt hot ng hon ton a phng, n khng lin quan n vic gi ci g ti mt server no trn mng.
N ch ly ni dung ca index v lu li mt nh chp ca project nh c ghi trong index:
Tng t vi index, mt commit l mt nh chp ton b cc file trong project. Mi commit c gn mt nhn xc
nh duy nht commit (nhn ny c tnh t kt qu SHA-1 hash ca ni dung c chp li):
Do tnh cht xc nh duy nht ca nhn commit, n cho php ta ly c chnh xc nhng g chng ta c trong project
ti thi im thc hin commit . Nhn commit tuy di nhng ta ch cn dng 7 ch s u tin l xc nh
commit khi cn ch nh n trong lnh (xem v d ti cc mc sau).
git status cho bn bit working tree hin khc bit nh th no so vi index v index hin khc g so vi commit
ln gn nht:
# Changes to be committed:
#
# modified: changed_file_added.txt
Tip theo l nhng thay i c thc hin vi working tree, nhng cha c add vo index:
Khi thc hin commit, bn c th git t add cc file b sa i bng cch s dng ty chn -a:
Lnh trn s add tt c cc sa i (ngoi tr cc file mi to) vo index trc khi commit.
Lch s commit
Quy trnh thc hin vic son cc file trong repo git trng nh sau:
Khi bn thc hin quy trnh trn nhiu ln, mi ln bn s to mt commit mi, n tr v commit trc n:
l cch git lu li lch s ca project. N lu li cc nh chp ca cc file trong project di dng cc commit. Mi
commit ny tr ngc li commit tin thn ca mnh.
commit 068b9b9...
Author: Bob <bob@example.com>
Date: Wed Jun 17 17:21:16 2009 +0200
commit 3720b35...
Author: Bob <bob@example.com>
Date: Wed Jun 17 17:21:10 2009 +0200
commit a2a1eb3...
Author: Bob <bob@example.com>
Date: Wed Jun 17 17:21:10 2009 +0200
Nu nhn lch s commit y , bn s thy n c cha thng tin v tc gi. Git ly thng tin ny u khi n to
commit. u tin l n c on t username v hostname ca bn. Bn cng c th t tay cu hnh cho project hin ti
nh sau:
Hy b cc sa i
Nu bn thc hin mt s sa i trong project nhng mun quay li tnh trng c. Cch lm nh sau, ty theo tnh
hung.
Nu bn cha add chng vo index, bn c th khi phc file/th mc ti working tree quay tr loi ni dung
lu trong index bng lnh git checkout <filename>:
Nu bn add sa i vo index, bn c th khi phc index v tnh trng ca ln commit gn nht bng lnh git
reset:
HEAD lun lun ch ti ln commit gn nht lm. Dng lnh trn, index c khi ph t ln commit trc, tip
theo bn c th dng lnh git checkout khi phc c working tree:
Tuy nhin, vic undo mt commit c hn c th gy xung t (conflict) nu cc commit mi hn n cng sa trng cc
ni dung . Cch gii quyt cc conflict s c ni n sau.
xem khc bit gia mt commit vi tin thn ca n, ta dng lnh git show <commit>:
Lnh git tag <name> <commit> gn mt tag cho mt commit. Nu b qua phn <commit>, tag s c gn cho
commit gn nht:
C th dng tag bt c ng cnh no m ta c th dng nhn hash, chng hn trong lnh git diff:
Branches - Nhnh
Gi s ta mun pht trin mt tnh nng mi cho project. y l mt vic ln, v ta mun tch cc thay i ny ra khi
cc thay i khc. Ta c th dng branch cho vic ny.
* master
theo di cc thay i ti mt branch khc, ta phi to mt branch mi bng lnh git branch <name> <commit>.
Commit chn s l im bt u ca nhnh mi nu ta b qua phn <commit>, git s chn commit gn nht:
Ti mi thi im, ta ch c mt branch hin hnh v ang lm vic vi branch . Nu gi lnh git branch, ta s nhn
thy branch mi vi tn newfeature c to, nhng branch hin hnh vn l master:
> git branch
* master
newfeature
Ta c th chuyn gia cc branch bng lnh git checkout <branchname>. y cng chnh l lnh ta dng ly
file t staging index vo working tree. ngha ca git checkout ty theo tham s ca lnh .
master
* newfeature
Ta c th bt u lm vic vi branch mi bng nhng lnh hc nh git add, git commit, v.v.. Hy xem chuyn g
xy ra khi ta to mt commit mi ti branch hin ti:
Commit c add vo repo v branch newfeature by gi ang ch ti commit mi. V mt khi nim, mt branch c
th c xem nh mt con tr ti mt commit no . Mi khi bn commit g , con tr ny ca branch hin hnh
s c chuyn ti ch vo commit mi. l tt c nhng g cn n phn bit cc branch.
tip tc v d, gi s tm thi ta lm vic xong vi branch newfeature v mun quay li lm vic ti branch
master. Ta quay li branch master bng lnh sau:
Lnh trn s chuyn branch hin hnh v li master. N cng s reset index v working tree ca ta v ni dung ca
ln commit cui cng ti master:
Ta s thy project tr v trng thi ging ht nh thi im ta tch branch mi. S khng nhn cc thay i lm
cho branch newfeature.
Cng ging nh trc: Mt commit mi s c to t commit gn nht cho master v master s ch ti commit mi:
Gi s ta hon thnh tnh nng mi v mun a n vo branch master. Ta dng lnh git merge trong khi master
ang l branch hin hnh:
Nu khng c conflict, git s to mt commit mi cha cc thay i thc hin c hai branch:
Git thng rt thng minh khi merge. Tuy nhin, nu cng mt ni dung c sa c hai branch, ta s c tnh trng
conflict:
Ta phi t tay gii quyt conflict ny. Nu bn xem ni dung file b conflict, bn s thy cc dng c conflict
b nh du. Ti u file s c phin bn ca branch hin hnh, bn di l phin bn ca branch c trn
vo:
<<<<<<< HEAD:somefile.txt
this change was done in master
=======
this change was done in newfeature
>>>>>>> newfeature:somefile.txt
Bn phi t tay gii quyt conflict ny v xa b cc marker nh du. Sau , bn add file vo index v commit kt
qu:
Bn cng c th tip tc lm vic vi branch ri sau li merge li vo master. Git s thng minh bit phn
no ca branch c merge v s ch merge cc thay i mi.