λΈλμΉμ 체ν¬μμμ λν΄ λ°°μλ΄€μΌλ
μ΄λ²μ λΈλμΉλ‘ μΈν΄ κ°λΌμ§ κ°μ§λ€μ ν©μ³λ³΄λ
λ³ν©(merge)μ λν΄μ μμ보μ.
merge
νλμ λΈλμΉλ₯Ό νμ¬ λΈλμΉμ ν©μΉλ κ²
νμ¬ λΈλμΉμ νλμ λΈλμΉκ° λ³ν©λ κ²½μ°
νλμ λΈλμΉμ λ΄μ©μ΄ νμ¬ λΈλμΉμ λ°μλλ€.
λ³ν©μ κ΄ν΄μ λ§μ°ν λ°°μ°λ κ²λ³΄λ€
μ§μ ν΄λ³΄λ κ² μ΄ν΄νκΈ° μ’μΌλ
ν΄λΉ μ¬μ΄νΈλ₯Ό μ΄μ©νλ κ±Έ κΆμ₯νλ€.
λ€μ΄κ°λ©΄ μ΄λ κ² λμ€λλ° λ§μ½ ν΄λΉ μ¬μ΄νΈμμ κ°λ₯΄μ³μ£Όλ λ°©λ²μ μκ³ μΆλ€λ©΄ μ€λͺ μ λ£κ³ κ°λ μ’λ€.
μκ΄μμ΄ λ°λ‘ λκ³ μΆλ€λ©΄ λΉ¨κ° λ²νΌμ λλ₯Έ λ€μ ESCν€λ₯Ό λλ₯΄λ©΄ λλ€.
λ€μ΄κ°λ©΄ ν΄λΉμ°½μ΄ 보μΈλ€.
$ reset //λ΄μ© μ΄κΈ°ν
$ clear //νλ©΄ μ΄κΈ°ν
μμνκΈ° μ μ resetμ λ¨Όμ μ λ ₯ ν μν°
clear μ λ ₯ν μν° ν΄μ€λ€.
μ μ΄μ μμν΄λ³΄μ.
< μν©1 >
ν€λ λΈλμΉμ λ³κ²½μ¬νμ΄ μμ κ²½μ° :
β ν©μΉλ €λ λΈλμΉκ° ν€λ λΈλμΉλ‘λΆν° μμλμλ€.
β‘ ν€λ λΈλμΉμ κ°±μ μ¬νμ΄ μλ€.
$ git commit
$ git branch version2
$ git checkout version2
$ git commit
$ git commit
ν΄λΉ κ·Έλ¦Όμ ν€λ λΈλμΉ(ν€λ λΈλμΉμ *μ΄ λΆμ΄μλ€)μΈ
masterμμ version2κ° λΈλμΉ λκ³ λ λ² μ»€λ°μ΄ λ μνμ΄λ€.
μ΄ κ²½μ° λ³ν©μ νκ²λλ©΄
master λΈλμΉκ° κ°λ¦¬ν€λ 컀λ°μ΄ version 2μ 컀λ°μΌλ‘ μ΄λνκ² λλ€.
$ git merge version2
ν΄λΉ κ²½μ°λ₯Ό μμ μκ²°λ‘ μΌμ΄λ¬λ€κ³ ν΄μ
fast-forward mergeλΌκ³ νλ€.
< μν© 2 >
κ°μ§κ° μ겨λ κ²½μ° :
β κ³Όκ±°μ 컀λ°μΌλ‘λΆν° λΈλμΉλ₯Ό μμ±ν΄μ μμ μ νλ€.
β‘ μλ‘μ΄ λΈλμΉ μμ μ΄νμ ν€λ λΈλμΉμ λ€λ₯Έ μ 컀λ°μ΄ λ°μνλ€.
β’ μ¬λ¬ λΈλμΉλ₯Ό λμμ μμ νλ©΄μ λ³ν©μ μλνλ€.
$ git commit
$ git branch version2
$ git checkout version2
$ git commit
$ git commit
$ git checkout master
$ git branch version3
$ git checkout version3
$ git commit
$ git commit
$ git checkout master
$ git checkout master
$ git merge version3
masterλΈλμΉλ‘ 체ν¬μμ ν
version3μ λ¨Όμ λ³ν©ν ν version 2λ₯Ό λ³ν©νκ² λλλ°
μΆ©λμ΄ λ°μν κ°λ₯μ±μ΄ μλ€.
κ·Έλμ ν΄λΉ λ΄μ©μ μλμΌλ‘ μμ ν΄μΌ ν κ²½μ°λ λ°μν μ μλ€.
μ΄μ μμ€ νΈλ¦¬λ‘ μν©λ€μ μ§μ λ§μ£Όν΄ 보μ.
β κ°μ νμΌμ κ°μ κ°±μ λ λΈλμΉμ λ΄μ© ν©μΉκΈ°
(1) μ’μΈ‘μ version 2λ‘ λμ΄μλ λΈλμΉλ₯Ό masterλ‘ ν΄λ¦ν΄ 체ν¬μμν΄μ€λ€.
(2) κ°μ₯ μμ μλ version 2λ₯Ό λλ¬ λ³ν©μ ν΄μ€λ€.
(3) λ³ν©μ ν΄λ¦ν νμ μΆ©λλ‘ μΈν΄
λ³ν©μ΄ μ€ν¨νκ³ hello.md νμΌμ λλνκ° λ¬λ€.
μλν°μ λ€μ΄κ° νμΈν΄λ³΄μ.
(4) ν΄λΉ μ€λ₯κ° λ°μνλ μ΄μ λ
version2 λΈλμΉλ₯Ό λ§λ μ΄νμ κΈ°μ‘΄ masterλΈλμΉμμ λ΄μ©μ κ°±μ νκ³
version2 λΈλμΉ λν λ΄μ©μ΄ λ°λ‘ μμ±λμ΄ λ³ν©νλλ° μΆ©λμ΄ λ°μν κ²μ΄λ€.
(5) λ§μ½, λ κ°μ λ΄μ©μ κ°μ΄ 곡쑴νκΈ°λ₯Ό μνλ€λ©΄
μλμΌλ‘ μ§μ μ§μμ ν΄κ²°ν΄ μ€ μ μλ€.
(6) μ΄μ μμ€ νΈλ¦¬μ λ€μ λ€μ΄κ° μ€ν μ΄μ§μ μ¬λ¦° ν 컀λ°μ λ¬μμ€λ€.
(μ¬μ ν λλνμ΄μ§λ§ κ·Έ μνλ‘ μ€ν μ΄μ§μ μ¬λ €μ€λ€.)
(7) μ΄νμ λ³ν©μ μ±κ³΅νκ³ κ·Έλλ‘ push ν΄μ£Όλ©΄ λλ€.
μ΄λ, version 2 λΈλμΉλ μ§μλ μκ΄μλ€.
μ§μ΄λ€κ³ ν΄μ λ΄μ©μ΄ μ§μμ§κ±°λ λ³λλλ 건 μλ€.
β‘ fast-forward merge
(1) λ¨Όμ master λΈλμΉλ§ μλ μνμμ version3μ λ§λ€μ΄ μ€λ€.
version3 λΈλμΉμΈ μνλ‘ μμ μ ν΄μ€λ€.
(2) ν΄λΉ λ΄μ©μ μ λ ₯ ν 컀λ°ν΄μ€λ€.
(3) version3κ° masterλ³΄λ€ λ μμ μλ κ²μ νμΈν μ μλ€.
λ€μ ν€λ λΈλμΉ(master)λ‘ μ΄λν λ€μ λ²μ 3κ³Ό λ³ν©μ ν΄μ€λ€.
(4) κ·Έλ¬λ©΄ masterκ° version3 μμΉμ μ¬λΌκ°λ©΄μ λ³ν©μ μ±κ³΅νλ€.
μ΄λ κ² ν€λ λΈλμΉλ₯Ό μμ νμ§ μκ³ λ³ν©ν μ΄ κ²½μ°λ₯Ό
fast-forwardλΌκ³ νλ€.
(μ΄νμ νΈμν΄μ£Όλ©΄ λλ€.)
β’ κ° λΈλμΉμ λ€λ₯Έ νμΌμ λ΄μ© κ°±μ ν μΆ©λ μμ΄ λ³ν©νκΈ°
(1) μΆ©λμ΄ λμ§ μλ κ²½μ°λ₯Ό λ§λ€μ΄ 보μλ©΄
version3μ masterκ° μλ 컀λ°μ version4 λΈλμΉλ₯Ό λ§λ€μ΄ μ€λ€.
(ν΄λ λΈλμΉ masterμμ λ§λ€μ΄μ€λ€.)
(2) λΈλμΉλ₯Ό version4λ‘ μ€μ ν΄ μ€ λ€
μλν°μμ λ΄μ©μ μΆκ°νκ³ μ»€λ°ν΄μ€λ€.
(3) version4κ° μμ λκ° μλ κ±Έ νμΈν μ μλλ°,
μ΄μνμμ version3λ‘ μ²΄ν¬μμμ ν΄μ€λ€.
(4) κΈ°μ‘΄ hello.mdνμΌμ΄ μλ μλ‘μ΄ νμΌμ μ μν΄ λ΄μ©μ μ λ ₯νκ³ ,
컀λ°ν΄μ€λ€.
(version3.mdλΌκ³ νμΌ μ΄λ¦μ μ§μ νκ² λ€.)
(5) μ΄μ master λΈλμΉλ‘ 체ν¬μμν΄μ€ ν
version4 → version3 μμΌλ‘ λ³ν©ν΄μ€λ€.
(6) masterμμ version4λ₯Ό λ³ν©ν΄μ£Όλ 건 κ·Έλνμμ μ μ μλ―μ΄
νλλ‘ μ°κ²°λμ΄μλ fast-forwardμ΄κΈ° λλ¬Έμ μ½κ² λ³ν©μ΄ λλ€.
κ·Έ ν version3μ λ³ν©ν λμλ κ·Έλνλ₯Ό 보면
fast-forwardλ μλμ§λ§ version3κ° λ€λ₯Έ νμΌμμ λ΄μ©μ μμ±νκΈ° λλ¬Έμ
masterμ μΆ©λ μμ΄ λ³ν©μ΄ κ°λ₯νλ€.
μ΄μ push ν μΌλ§ λ¨μλ€.
λ³ν©μ΄λΌλ κ² λ¨μν ν©μΉλ€κ³ λ§ μκ°νλλ°
μκ°λ³΄λ€ ꡬ체μ μ΄κ³ μ νμ΄ λ§μ κ² κ°λ€.
λ§μ΄ λ§μ΄ 볡μ΅νμ.
< μ°Έκ³ >
μΈνλ° - gitκ³Ό github
https://www.inflearn.com/course/git-and-github
β» ν΄λΉ κΈμ μ΅λ λͺ©μ μΌλ‘ μμ±λ κΈμ λλ€ β»
λκΈ