“μ§μ₯μμ μ¨ κΉ”μ μ°Έκ³ νμ¬ μ 리ν λ΄μ©μ λλ€.
1. κΉ - κΈ°λ³Έ
- Version Control System μ€ νλ
- νμΌ μ΄λ¦μ λ°κΎΈμ§ μκ³ λ²μ μ κ΄λ¦¬ν μ μλ€.
- How? Commit
1) κΉμ 3κ°μ§ ν΅μ¬ κΈ°λ₯
- Backup
- Recovery
- Collaboration
2) κΉμ κΈ°λ³Έμ μ¬μ© λ°©λ²
1οΈβ£ git init
- μ μ₯μλ₯Ό λ§λ€μ΄ λ²μ κ΄λ¦¬ νκ² λ€.
- Create an empty Git repository or reinitialize an exisiting one
- μ¦, κΉ λ¦¬νΌμ§ν 리λ₯Ό μλ‘ λ§λ€κ±°λ, κΈ°μ‘΄μ κΉ λ¦¬νΌμ§ν 리λ₯Ό μ¬μ΄κΈ°ννκ³ μΆμ λ
- Git repository = Git μ μ₯μ
- 리νΌμ§ν 리λ₯Ό κΈ°μ€μΌλ‘ λ²μ κ΄λ¦¬κ° μ΄λ£¨μ΄μ§λ€.
2οΈβ£ git add
file
- μ΄ νμΌμ λ²μ κ΄λ¦¬λ₯Ό μμνκ² λ€. (μ»€λ° λκΈ°μν)
add
: μ»€λ° λκΈ°μν (stage areaμ μ¬λΌκ° νμΌλ€)- νμΌμ μ ννμ¬ μ»€λ° λκΈ°μνμ μ¬λ¦΄ μ μλ€.
# μλ₯Ό λ€μ΄ file.txt λΌλ νμΌμ νμ¬ μ μ₯μμ λ§λ€μλ€κ³ κ°μ ν©μλ€
# νμΌμ λν΄ λ²μ κ΄λ¦¬λ₯Ό μμν©λλ€
# νμΌμ λν΄ λ²μ κ΄λ¦¬λ₯Ό μμνκ² λ€λ κ²μ μλ €μ£Όλ κ²μ΄ 'add' λͺ
λ Ήμ΄ μ
λλ€.
# νμΌμ΄ μμ λμ΄ λ²μ κ΄λ¦¬ μ€μΈ νμΌμ μμ μ΄ μΌμ΄λ¬λ€λΌλ κ²μ μλ €μ€ λλ 'add'λ₯Ό μ¬μ©ν©λλ€.
>> git add f1.txt
>> git status # μλ‘ μΆκ°ν νμΌμ΄ μ μ₯μμ λ±λ‘λμλ€λ κ²μ μ μ μμ΅λλ€.
3οΈβ£ git commit
- νμΌμ λ²μ μ λν μΈλΆμ¬νμ μμ±νλ€.
- λ²μ = μλ―Έμλ λ³ν
commit
: μ»€λ° μν (repositoryμ λ²μ μΌλ‘ λ±λ‘λ μν)
>> git commit # vim μ΄ μ€νλ©λλ€.
>> git commit -m "Initial commit" # κ°λ¨ν λ©μμ§λ₯Ό μμ±ν μ μμ΅λλ€.
>> git commit -a # add μμ΄ commit message μμ± κ°λ₯ (add + commit)
>> git commit -am # add μμ΄ commit messageλ₯Ό inlineμΌλ‘ μμ±ν μ μλ€.
4οΈβ£ git log
/ git diff
- κ°κ°μ commitμ κ³ μ μ IDκ° μλ€.
>> git log # νμ¬κΉμ§ commitλ λ΄μ©μ λ³Ό μ μμ΅λλ€.
>> git log commit_id # commit_id μ΄μ κΉμ§μ commitμ μ μ μλ€.
>> git diff commit_id1..commitid3 # id1κ³Ό id3 μ¬μ΄μ λ³νλ₯Ό μ μ μμ΅λλ€.
5οΈβ£ git reset
vs. git revert
- νμ¬μ λ‘κ·Έλ₯Ό μ·¨μν΄μ κ³Όκ±°μ νΉμ λ‘κ·Έλ‘ λμκ°κ³ μΆμ λ μ¬μ©νλ€.
- localμ λν΄μλ§
reset
νμ - push νμλreset
νμ§ λ§ κ²
>> git log
# νΉμ λ‘κ·Έ(commit_id)λ‘ λμκ°κ³ μΆμ λ, λ€μ λͺ
λ Ήμ΄ μ¬μ©
# νΉμ λ‘κ·Έ λ€ μ»€λ°μ΄ λ€ μ§μμ§ κ²μ²λΌ 보μΈλ€. (μΆν 볡ꡬ κ°λ₯)
# λμκ°κ³ μΆμ νΉμ commit_idμ headκ° μ‘΄μ¬νλ€.
>> git reset commit_id --hard
# νΉμ λ‘κ·Έλ₯Ό μ§μ°κ³ , μλ‘μ΄ λ²μ μ μμ±ν μ μλ€.
>> git revert
2. .git
μ§μ₯μμ μ¨ GIT : μ리 - git add
1) git add
μ μν λ³ν
f1.txt
λΌλ νμΌμ μμ±νμ¬git add f1.txt
μ μ μ₯νλ©΄.git
λλ ν 리 μμindex
νμΌκ³Όobjects
ν΄λκ° μκΈ΄λ€
index
:add
λ νμΌμ λν κΈ°λ‘μ΄ λ΄κ²¨μλ€.objects/
:add
λ νμΌμ μ€μ λ΄μ©μ΄ λ΄κ²¨μ Έ μλ€.- κΈ°λ‘μ κ³μ 보κ΄λλ©° μ΄μ μνλ‘ λλ리거λ νΉμ μνλ‘ λ³΅κ΅¬ μ μ°Έμ‘°νλ€.
- gitμ νμΌμ κ°μκ° μ무리 λ§μλ λ΄μ©μ΄ κ°λ€λ©΄ κ°μ κ°μ²΄λΌκ³ μ¬κΈ΄λ€. (index νμΌμμ κ°μ commit_idλ₯Ό λ³Ό μ μλ€.
- (= μ¦ λ΄μ©μ΄ κ°μΌλ©΄ κ°μ κ°μ²΄λ‘ μκ°νλ€. )
π “λ΄μ©μ΄ κ°μΌλ©΄ νμΌ μ΄λ¦μ΄ κ°λ€? (=κ°μ κ°μ²΄μ΄λ€)” μ λ©μ»€λμ¦
- gitμ μμ±ν λ΄μ©μ SHA1 λΌλ μκ³ λ¦¬μ¦μ μ΄μ©νμ¬ ν΄μ¬κ°μΌλ‘ λ°λλ€.
π‘ κΉμ μλ§μ νμΌμ μ΄λ»κ² κ΄λ¦¬ν μ μμκΉ? κΉμ λ³κ²½λ νμΌκ³Ό λ³κ²½λμ§ μμ νμΌμ μ΄λ»κ² ꡬλΆνλ κ²μΌκΉ?
- κ°μ λ΄μ©μ κ°μ Hash κ°μ κ°μ§κ² λκΈ° λλ¬Έμ νμΌ λͺ μ΄ λ¬λΌλ λ΄μ©μ 볡μ¬νμ¬ λ΄μ©μ΄ κ°λ€λ©΄, κ°μ κ°μ²΄μΈ κ²μ΄λ€.
2) git commit
- λ³νκ° μκΈ°λ νμΌ
- μ°λ¦¬κ° commitν λ©μμ§λ₯Ό κΈ°μ€μΌλ‘ objects λλ ν 리 μ ν΄λκ° μκΈ΄λ€.
- ν΄λ μ μμ±ν commit λ©μμ§λ₯Ό 보κ΄νλ νμΌμ΄ μκΈ΄λ€.
- μ¦, μ°λ¦¬κ° μμ±ν commitμ λ°λΌ versionμ΄ μκΈ°κ³ κ° versionμ tree λ₯Ό κ°μ§κ³ μλ€.
- νμΌμμ commit λ©μμ§μ ν¨κ»
tree
μparent
λ νμΈ κ°λ₯νλ€.tree
λ 컀λ°λ νμΌλ€μ κ΄ν μ 보λ₯Ό λ΄κ³ μλ€. (commit_id, νμΌλͺ )parent
λ μ΄μ μ 컀λ°λ λ©μμ§ μ 보λ₯Ό λ΄κ³ μλ€.
3) μ 리
git add
ν add ν νμΌμ λν κΈ°λ‘μ΄ indexμ λ΄κΈ΄λ€.git add
ν addν νμΌμ λ΄μ©μ λν Hash κ°μ λ°νμΌλ‘ objects ν΄λ μ ν΄λμ νμΌμ΄ μκΈ΄λ€.git commit
ν objects ν΄λ μ commitν λ©μμ§μ λν Hash κ°μ λ°νμΌλ‘ ν΄λμ νμΌμ΄ μκΈ΄λ€.- νμΌμ νμΈνλ©΄, treeμ commit λ©μμ§λ₯Ό λ³Ό μ μλ€.
- treeλ₯Ό ν΄λ¦νλ©΄, μ΄λ€ νμΌμ΄ add λμλμ§λ₯Ό νμΈν μ μλ€. (add ν νμΌμ λν κΈ°λ‘μ νμΈν μ μλ€.)
- parentλ μ΄μ μ commit ν λ΄μ©μ κ°λ¦¬ν¨λ€.
- μ¦, treeλ μ°κ²° μ°κ²°λμ΄, commit λ©μμ§ logλ₯Ό νμΈν μ μκ³ , commitλ λ©μμ§μ treeλ₯Ό νμΈνμ¬ μ΄λ€ νμΌμ΄ add λμλμ§λ₯Ό νμΈνλ κ²μ΄λ€.
μ°Έκ³ μλ£: μνμ½λ© - μ§μ₯μμ μ¨ git λμμμ μ°Έκ³ νμ¬ μ 리ν λ΄μ©μ λλ€.
https://opentutorials.org/course/2708/15210
κ³Όκ±°μ λ²μ μΌλ‘ λμκ°κΈ° - μνμ½λ©
μμ μκ° λ²μ κ΄λ¦¬μ μ€μν ν¨μ©μ κ³Όκ±°μ μνλ‘ λμκ° μ μλ€λ μ μ λλ€. μ¬κΈ°μλ μ΄ λ°©λ²μ λν΄μ μμλ΄ λλ€. νκ°μ§ μ£Όμνμ€ μ μ κ³Όκ±°λ‘ λμκ°λ μμ μ μνν μμ μ λλ€. μ¬
opentutorials.org
'TIL > Git' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Error] λΆλ¦¬λ HEAD λ΄ μ»€λ° (0) | 2022.07.24 |
---|
λκΈ