λ€μ΄κ°λ©°
μ΄λ² ν¬μ€ν
μλ Staged
μνμΈ νμΌλ€μ μ μ₯μμ commit
νκ³ κ΄λ¦¬ν΄λ³΄λ λ΄μ©μ ν¬μ€ν
νλ €κ³ ν©λλ€ !
Git Commit
λ³κ²½μ¬ν 컀λ°νκΈ°
μμ ν κ²μ 컀λ°νκΈ° μν΄ Staging Area
μ νμΌμ μ 리νμ΅λλ€. Unstaged
μνμ νμΌμ 컀λ°λμ§ μλλ€λ κ²μ κΈ°μ΅ν΄μΌν©λλ€. Git
μ μμ±νκ±°λ μμ νκ³ λμ git add
λͺ
λ ΉμΌλ‘ μΆκ°νμ§ μμ νμΌμ 컀λ°νμ§ μμ΅λλ€. κ·Έ νμΌμ μ¬μ ν Unstaged
μνλ‘ λ¨μ μμ΅λλ€. 컀λ°νκΈ°μ μ git status
λͺ
λ ΉμΌλ‘ λͺ¨λ κ²μ΄Staged
μνμΈμ§ νμΈν μ μμ΅λλ€. κ·Έ ν git commit
λͺ
λ Ήμ ν΅ν΄ 컀λ°ν©λλ€.
$ git commit
μλμΌλ‘ μμ±λλ μ»€λ° λ©μμ§μ 첫 λΌμΈμ λΉμ΄ μκ³ λμ§Έ λΌμΈλΆν° git status
λͺ
λ Ήμ κ²°κ³Όκ° μ±μμ§λλ€. 컀λ°ν λ΄μ©μ μ½κ² κΈ°μ΅ν μ μλλ‘ μ΄ λ©μμ§λ₯Ό ν¬ν¨ν μλ μκ³ λ©μμ§λ₯Ό μ λΆ μ§μ°κ³ μλ‘ μμ±ν μ μμ΅λλ€. λ΄μ©μ μ μ₯νκ³ νΈμ§κΈ°λ₯Ό μ’
λ£νλ©΄ Gitμ μ
λ ₯λ λ΄μ©μΌλ‘ μ 컀λ°μ νλ μμ±ν©λλ€.
λ©μμ§λ₯Ό μ§μ μΈλΌμΈμΌλ‘ 첨λΆνκ³ μΆλ€λ©΄ -m
μ΅μ
μ μ¬μ©νλ©΄ λ©λλ€.
$ git commit -m "message"
μμ κ°μ΄ 첫λ²μ§Έ 컀λ°μ μμ±ν΄λ³΄μμ΅λλ€. commit
λͺ
λ Ήμ λͺ κ°μ§ μ 보λ₯Ό μΆλ ₯νλλ° 1) master branch
μ 컀λ°μ νκ³ , 2) 체ν¬μ¬μ 2305efd
λΌλ κ²μ μλ €μ€λλ€. κ·Έλ¦¬κ³ μμ ν νμΌμ΄ λͺκ°μ΄κ³ μμ λκ±°λ μΆκ°λ λΌμΈμ΄ λͺ λΌμΈμΈμ§ μλ €μ€λλ€.
Git
μ Staging Area
μ μν μ€λ
μ·λ§μ 컀λ°ν΄μΌνλ€λ κ²μ λͺ
μ¬ν΄μΌ ν©λλ€. μ¦, μμ μ νμ§λ§ μμ§ Staging Area
μ λ£μ§ μμ κ²μ λ€μμ 컀λ°μ ν μ μμ΅λλ€.
μΆκ°λ‘ 컀λ°ν λλ§λ€ νλ‘μ νΈμ μ€νμ·μ κΈ°λ‘νκΈ° λλ¬Έμ λμ€μ μ€λ μ·λΌλ¦¬ λΉκ΅νκ±°λ μμ μ€λ μ·μΌλ‘ λλ릴 μ μμ΅λλ€.
Staging Area μλ΅νκΈ°
Staging Area
λ 컀λ°ν νμΌμ μ 리νλ€λ μ μμ λ§€μ° μ μ©νμ§λ§ 볡μ‘νκ³ νμνμ§ μμλλ μμ΅λλ€. κ·Έλ΄ λ μμ£Ό μ½κ² μλ΅ν μ μλλ° git commit -a
λͺ
λ Ήμ μ€ννλ©΄ λ©λλ€. κ·Έλμ git addλ₯Ό νλ μκ³ λ₯Ό λ μ μμ΅λλ€.
νμΌ μμ νκΈ°
Git
μμ νμΌμ μ κ±°νλ €λ©΄ git rm
λͺ
λ ΉμΌλ‘ Tracked
μνμ νμΌμ μμ ν ν 컀λ°ν΄μΌ ν©λλ€. μ΄ λͺ
λ Ήμ working directory
μ μλ νμΌλ μμ νκΈ° λλ¬Έμ μ€μ λ‘ νμΌλ μ§μμ§λλ€.
컀λ°νλ©΄ νμΌμ μμ λκ³ Git
μ μ΄ νμΌμ λμ΄μ μΆμ νμ§ μμ΅λλ€. μ΄λ―Έ νμΌμ μμ νκ±°λ, μμ ν νμΌμ μΆμ νκ³ μλ€λ©΄ -f
μ΅μ
μ μ£Όμ΄ κ°μ λ‘ μμ ν μλ μμ΅λλ€.
λ, Staging Area
μμλ§ μ κ±°νκ³ working Directory
μ μλ νμΌμ μ§μ°μ§ μκ³ λ¨κ²¨λ μλ μμ΅λλ€. λ€μλ§ν΄μ νλλμ€ν¬μ μλ νμΌμ κ·Έλλ‘ λκ³ Git
λ§ μΆμ νμ§ μκ² ν©λλ€.
=> .gitignore
νμΌμ μΆκ°νλ κ²μ λΉΌλ¨Ήμλ€κ±°λ, λμ©λ λ‘κ·Έ νμΌμ΄λ μ»΄νμΌλ νμΌμΈ .a νμΌ κ°μ κ²μ μ€μλ‘ μΆκ°νμ λ μμ£Ό μ μ©ν©λλ€.
$ git rm --cached νμΌλͺ
νμΌ μ΄λ¦ λ³κ²½νκΈ°
Git
μ νμΌ μ΄λ¦μ λ³κ²½μ΄λ νμΌμ μ΄λμ λͺ
μμ μΌλ‘ κ΄λ¦¬νμ§ μμ΅λλ€. λ€μ λ§ν΄μ νμΌ μ΄λ¦μ΄ λ³κ²½λμλ€λ λ³λμ μ 보λ₯Ό μ μ₯νμ§ μμ΅λλ€.
$ git mv file_from file_to
μμ λͺ λ Ήμ΄λ μλμ λͺ λ Ήμ΄λ₯Ό μνν κ²κ³Ό μμ λκ°μ΅λλ€.
$ mv file_from file_to
$ git rm file_from
$ git add file_to
μ»€λ° νμ€ν 리 μ‘°ννκΈ°
μλ‘ μ μ₯μλ₯Ό λ§λ€μ΄μ λͺ λ² μ»€λ°νμ μλ μκ³ , μ»€λ° νμ€ν λ¦¬κ° μλ μ μ₯μλ₯Ό clone
νμ μλ μμ΅λλ€. κ·Έλ΄λ μ‘°νλ₯Ό ν μ μλ git log
λͺ
λ Ήμ΄κ° μμ΅λλ€.
μμ
$ git clone https://github.com/schacon/simplegit-progit
μμ νλ‘μ νΈλ₯Ό clone
ν΄μ λ°μμ¨ ν git log
λͺ
λ Ήμ΄λ₯Ό μ€ννλ©΄ μλμ κ°μ΄ μΆλ ₯λ©λλ€.
νΉλ³ν μ΅μ μμ΄ git log λͺ λ Ήμ μ€ννλ©΄ μ μ₯μμ μ»€λ° νμ€ν 리λ₯Ό μκ° μμΌλ‘ 보μ¬μ€λλ€. κ·Έλ¦¬κ³ κ° μ»€λ°μ SHA-1 체ν¬μ¬, μ μ μ΄λ¦, μ μ μ΄λ©μΌ, 컀λ°ν λ μ§, μ»€λ° λ©μμ§λ₯Ό 보μ¬μ€λλ€.
μνλ νμ€ν 리λ₯Ό κ²μν μ μλλ‘ git log λͺ λ Ήμ λ§€μ° λ€μν μ΅μ μ μ§μν©λλ€.
$ git log -p
$ git log -p -2
-p μ΅μ μ κ° μ»€λ°μ diff κ²°κ³Όλ§μ 보μ¬μ£Όκ³ -2 μ΅μ μ μ΅κ·Ό 2κ°μ κ²°κ³Όλ§ λ³΄μ¬μ£Όλ μ΅μ μ λλ€.
μ§μ diffλ₯Ό μ€νν κ²κ³Ό κ°μ κ²°κ³Όλ₯Ό μΆλ ₯νκΈ° λλ¬Έμ λλ£κ° 무μμ 컀λ°νλμ§ λ¦¬λ·°νκ³ μ‘°ννλλ° μ μ©ν©λλ€.
λ, git log λͺ λ Ήμλ νμ€ν 리μ ν΅κ³λ₯Ό 보μ¬μ£Όλ μ΅μ μ΄ μμ΅λλ€.
$ git log --stat
μ‘°ν μ ν 쑰건
-n
: μ΅κ·Ό nκ°μ 컀λ°λ§ μ‘°ννλ€.--since
,--after
: λͺ μν λ μ§ μ΄νμ 컀λ°λ§ κ²μνλ€.--until
,--before
: λͺ μν λ μ§ μ΄μ μ 컀λ°λ§ κ²μνλ€.--author
: μ λ ₯ν μ μμ 컀λ°λ§ 보μ¬μ€λ€.--committer
: μ λ ₯ν 컀미ν°μ 컀λ°λ§ 보μ¬μ€λ€.--grep
: μ»€λ° λ©μμ§ μμ ν μ€νΈλ₯Ό κ²μνλ€.-S
: μ»€λ° λ³κ²½(μΆκ°/μμ )λ΄μ© μμ ν μ€νΈλ₯Ό κ²μνλ€.
Git λλ리기
λ§μ½ commit ν λ΄μ©μ μμ νκ³ μΆλ€λ©΄ --amend
μ΅μ
μ μ¬μ©νλ©΄ λ©λλ€. λ°λ‘ μμ commit
μ μμ ν μ μλ μ΅μ
μ
λλ€.
$ git commit -m "user info update"
$ git add userInfo
$ git commit --amend
μ¬κΈ°μ μ€νν 3κ°μ λͺ
λ Ήμ΄λ λͺ¨λ νλμ commit
μΌλ‘ κΈ°λ‘λ©λλ€.
νμΌ μνλ₯Ό Unstageλ‘ λ³κ²½νκΈ°
μ΄ λ°©λ²μ Staged Area
μ Working Directory
μ¬μ΄λ₯Ό μ μ΄ν μ μλ λ°©λ²μ
λλ€.
$ git resert HEAD <file> ...
μμ λͺ
λ Ήμ΄λ₯Ό μ¬μ©νλ©΄ ν΄λΉ νμΌμ staged
μνμμ unstaged
μνλ‘ λ³κ²½λ©λλ€.
λ§μ½ commit
ν ν΄λΉ νμΌμ μμ ν΄μΌνλ€κ±°λ, ν΄λΉ commit
μμ μ μΈν΄μΌν λ μ¬μ©νλ©΄ μ μ©ν μ΅μ
μ
λλ€!
Modified νμΌ λλ리기
μ΄λ€ νμΌμ μμ νλλ°, λ€μ μ΄κΈ° μνλ‘ λλλ¦¬κ³ μΆμ λ μ¬μ©νλ μ΅μ μ λλ€.
$ git checkout -- <file>