git commit -m "Blog Posting #5π«‘"
κ°λ°μνμ μ νμ λꡬ
Git ꡬ쑰: λ‘컬 Gitμ μμ νμ
Gitμμ μ½λμ λ³κ²½ μ¬νμ μ¬λ¬κ°μ§ μμμ κ±°μΉλ€.
Gitμ μ½λμ μνλ₯Ό μ¬λ¬ λ¨κ³λ‘ λλμ΄ κ΄λ¦¬νλ€. μ¬κΈ°μλ 4κ°μ μ£Όμ μμμ μ€μ¬μΌλ‘ μ€λͺ ν μμ μ΄λ€.
1. Working Directory(μμ 곡κ°):
- λ‘컬μμ μ€μ λ‘ μμ
μ μννλ 곡κ°. μ΄κ³³μμ νμΌμ μμ , μμ , μΆκ°νλ λ±μ μμ
μ΄ μ΄λ£¨μ΄μ§λ€.
- λ‘컬 μμ 곡κ°μμ μμ ν λΈλμΉ μ ν → `git checkout`
- Tracked: Gitμ΄ μΆμ νλ νμΌ → μ΄μ μ Gitμ μΆκ°λ νμΌλ€.
- Untracked: Gitμ΄ μμ§ μΆμ νμ§ μμ νμΌ → μλ‘ μμ±λ νμΌ λλ μμ λ νμΌλ€μ μ§ν©
- μ΄ μ€μμ Commit νκ³ μνλ κ²μμ Staging Areaλ‘ μ¬λ¦°λ€.
2. Staging Area, Index:
- 컀λ°μ μν΄ λκΈ° μ€μΈ νμΌλ€μ΄ μ μ₯λλ μμ → `git add`
- Git Commit λͺ λ Ήμ΄ μ μ¬κΈ°μ μλ νμΌλ€μ΄ Commit λλ€(μ€λ μ· μ°ν)
- Cache = Index = Stage λλ Cached = Indexed = Staged
- Staged: Staging Areaμ μλ νμΌλ€μ 컀λ°λ μ€λΉκ° λ μνμ΄λ€.
3. Unstaged:
- Gitμ΄ μΆμ νλ νμΌ μ€μμ μμ λμμ§λ§ μμ§ Stating Areaλ‘ μ¬λ¦¬μ§ μμ νμΌλ€.
- μ΄ μνμ νμΌλ€μ μμ§ μ»€λ°λμ§ μμκΈ° λλ¬Έμ 컀λ°νλ €λ©΄ `git add` λͺ λ Ήμ΄λ‘ Staging Areaλ‘ μ¬λ €μΌνλ€.
4. Untracked:
- Gitμ΄ μμ§ μΆμ νμ§ μμ νμΌλ€. μλ‘ μμ±λ νμΌμ΄ μ¬κΈ°μ ν΄λΉνλ©° μ΄ μνμ νμΌλ€μ Gitμ΄ μ ν κ΄λ¦¬νμ§ μλλ€.

- Untracked: μνΉ λλ ν 리μ μΆκ°λμμ§λ§ Gitμμ κ΄λ¦¬νμ§ μλ μν
- Unmodified: μ κ·λ‘ νμΌμ΄ μΆκ°λμμ λμ μνλ‘ new file μνμ λμΌ
- Modified: νμΌμ΄ μΆκ°λ μ΄ν ν΄λΉ νμΌμ΄ μμ λμμ λμ μν
- Staged: Git μ€ν μ΄μ§ μμμ λ°μ λ μν
κΈ°λ³Έμ μΈ Git μμ λͺ λ Ήμ΄: λΈλμΉ λ° νμΌ κ΄λ¦¬
λΈλμΉ κ΄λ¦¬
- `git fetch -p`: μ격 λΈλμΉλ₯Ό λ‘μ»¬λ‘ κ°μ Έμ¨λ€.
- `git pull origin main`: μ격 main λΈλμΉμ μ΅μ 컀λ°λ€μ λ‘μ»¬λ‘ κ°μ Έμ¨λ€ (Pull + Merge)
- `git branch -a`: μ격 λΈλμΉμ λ‘컬 λΈλμΉ λ¦¬μ€νΈλ₯Ό μ‘°ν
- `git checkout [λΈλμΉλͺ ]`: ν΄λΉ λ‘컬 λΈλμΉ μ΄λ
- `git checkout -b [μ λΈλμΉλͺ ]`: λ‘컬 λΈλμΉ μμ±(νμ¬ μμΉνκ³ μλ λΈλμΉμ 컀λ°μ κΈ°μ€μΌλ‘)
- `git merge [λΈλμΉλͺ ]`:νμ¬ λΈλμΉμ λ€λ₯Έ λΈλμΉμ λ³κ²½μ¬νμ λ¨Έμ§νλ€.
- `git branch --delete` λλ `git branch -D`: λ‘컬 λΈλμΉ μμ
νμΌ κ΄λ¦¬
- `git add [νμΌλͺ
]`: Git 컀λ°μ μμ μ¬νμΌλ‘ λ±λ‘νκΈ° μν μλΉ μ μ°¨. νμΌμ Staging Areaμ μΆκ°νμ¬ μ»€λ°ν μ€λΉ.
- Staged ←Unstaged: Gitμ΄ μΆμ μ€μΈ νμΌμ λ³κ²½μ¬ν
- Staged ←Untracked: Gitμ΄ λͺ¨λ₯΄λ(μΆμ λμ§ μμ λͺ°λλ) νμΌμ μΆκ°
- `git add .`: νμ¬ λλ ν 리μ λͺ¨λ λ³κ²½ μ¬νμ Staging Areaμ μΆκ°
- `git add -p`: νμΌ λ¨μμ μΆκ°κ° μλ ν μ€νΈ λ¨μμ μΆκ°
- `git rm [νμΌλͺ ]`: νμΌμ Gitμμ μμ νκ³ Staging Areaμ λ°μ
- `git mv [κΈ°μ‘΄ νμΌλͺ ] [μ νμΌλͺ ]`: νμΌμ μ΄λνκ±°λ μ΄λ¦μ λ³κ²½νκ³ Staging Areaμ λ°μ
νμΌ μμ λ΄μ© μμ μ μ₯μ: Stash
- `git stash`: νμ¬ `git add`λ₯Ό ν΅ν΄ Commit λκΈ°μ€μΈ λͺ¨λ μμ μ¬νλ€ μμλ‘ μ μ₯
- `git stash pop`: μμ μ μ₯μμ μ μ₯λμ΄μλ κ² μ€ κ°μ₯ μ΅μ μ νλλ₯Ό κΊΌλΈλ€.(Stack μλ£κ΅¬μ‘°)
- `git stash list`: μ μ₯λ Stash λͺ©λ‘ μ‘°ν(Stack μλ£κ΅¬μ‘°μ μμ¬μλ μμ μ μ₯λ³Έ 리μ€νΈ)
μ»€λ° μμ± λ° μμ
- `git commit`: μλν°λ₯Ό ν΅ν΄ λ©μΈμ§λ₯Ό μ λ ₯νμ¬ μ»€λ°(μΌλ°μ μΌλ‘λ `vi`μ¬μ©, 컀μ€ν μ `code`μ¬μ© κ°λ₯)
- `git commit -m "λ©μμ§"`: μ λ ₯ν λ©μΈμ§λ₯Ό ν΅ν΄ 컀λ°
- `git commit -am "λ©μΈμ§"`: `git commit -a` (Untracked μ μΈ) + `git commit -m "λ©μΈμ§"`
- `git commit --amend`: λ§μ§λ§ μ»€λ° μμ (μ»€λ° λ©μΈμ§ μμ or μ»€λ° λ΄μ© μΆκ°)
- `git push`: νμ¬ λΈλμΉμ 컀λ°λ λ΄μ© λͺ¨λ μ격μ μ λ‘λ(νΈμ)
- `git push --set-upstream origin main`: λ‘컬 λΈλμΉμ μ°κ²°λ μ격 λΈλμΉκ° μμ λ μ΅μ΄ μ°κ²°
μ»€λ° μμ (λ‘€λ°±)
- git reset [μ΅μ
] HEAD~1: μ΅κ·Ό 컀λ°μ μ·¨μνκ³ λ‘€λ°±
- `--soft`: 컀λ°λ§ μ·¨μνκ³ Staging Areaλ μ μ§νλ€.
- `--mixed`: 컀λ°μ μ·¨μνκ³ , Staging Areaμμ λ³κ²½ μ¬νμ Unstagedλ‘ μ΄λνλ€
- `--hard`: 컀λ°κ³Ό μμ λλ ν 리μ λ³κ²½ μ¬νμ λͺ¨λ μ·¨μνλ€.
- μ λ μ»€λ° μ§μΉ Hash: `2cd~~`
- μλ μ»€λ° μ§μΉ Relative References (^rhk ~) : `HEAD~1` νΉμ `HEAD^1`
- ~(Tilde): Nλ²μ§Έ μ‘°μ - μμ§
- ^(Caret):Nλ²μ§Έ λΆλͺ¨ - μν
- @(At-Sign): Reflog λ΄κ° μ§μ 컀λ°ν νμ€ν 리 κΈ°λ°μ λ‘€λ°±
μ»€λ° μ‘°ν
- `git log`: μ»€λ° λ©μΈμ§ κΈ°λ° μ‘°ν
- `git show`: μ»€λ° λ©μΈμ§ + μμΈ μμ λ΄μ© κΈ°λ° μ‘°ν
λͺ κ°μ§ μλ¬ νΉμ κ²½κ³ λ©μΈμ§
warning: in the working copy of 'detail.html', LF will be replaced by CRLF the next time Git touches it.
warning: in the working copy of 'simple.html', LF will be replaced by CRLF the next time Git touches it.
- CRLF/LF κ²½κ³ : μλμ°μ 리λ
μ€/λ§₯OS κ°μ μ€λ°κΏ λ¬Έμ(CRLF/LF)μ°¨μ΄λ‘ μΈν΄ λ°μνλ κ²½κ³
- ν΄κ²°:
- μλμ°: `git config --global core.autocrlf true`
- 리λ μ€/λ§₯: `git config --global core.autocrlf input`
- ν΄κ²°:
Git νΈλ¬λΈ μν : μ΄μ Commit μμ
Git μμ μ€ μ€μλ₯Ό νκ±°λ μ΄μ 컀λ°μΌλ‘ μμ ν΄μΌ νλ κ²½μ°, μ¬λ¬ κ°μ§ λ°©λ²μΌλ‘ λ¬Έμ λ₯Ό ν΄κ²° ν μ μλ€.
Amend / Reset - λ¨μΌ λ¬Έμ λ°μ μ
1. Amend:
- `git commit --amend` λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ§μ 컀λ°μ λ©μΈμ§λ λ΄μ©μ μμ ν μ μμ.
- κ°λ¨ν μμ μ΄λ μ€μλ‘ λΉ λ¨λ¦° λ΄μ©μ μΆκ°ν λ μ μ©νλ€.
2. Reset:
- `git reset HEAD~1` λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ§μ 컀λ°μ λ‘€λ°±ν μ μμ.
- Cherry-Picking λΆκ°λ₯: μ) `git reset HEAD~3`: 3λ²μ§Έ μ μΌλ‘ 3κ°μ μ»€λ° λͺ¨λ λ‘€λ°±
- μΈ κ°μ§ μ΅μ
μ΄ μλ€. 컀λ°μ μ΄λ»κ² λ‘€λ°±ν μ§ μ ν κ°λ₯
- `--soft`: 컀λ°λ§ μ·¨μνκ³ Staging Areaλ μ μ§νλ€.
- `--mixed`(κΈ°λ³Έκ°): 컀λ°μ μ·¨μνκ³ Staging Areadμμ Unstagedλ‘ μ΄λ
- `--hard`: 컀λ°κ³Ό λͺ¨λ λ³κ²½ μ¬νμ μ·¨μνκ³ μμ λλ ν 리λ₯Ό μ΄κΈ°μνλ‘ λλλ¦°λ€.
Rebase - λ€μ λ¬Έμ λ°μ μ
- Rebase λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ¬λ¬ κ°μ 컀λ°μ λ€μ μ 리ν μ μλ€.
- `git rebase -i HEAD~3` λͺ λ Ήμ΄λ‘ μ΄μ 컀λ°λ€μ νΈμ§, μμ , ν©μΉκΈ° λ±μ μμ μ μνν μ μλ€.
- Rebase μ΅μ
:
- Reword: μ»€λ° λ©μΈμ§ μμ
- Edit: μ»€λ° λ΄μ© μμ λ° μΆ©λ ν΄κ²°
- Drop: 컀λ°μ κ±°
- Squash: λΆνμνκ² λ§μμ§ μ»€λ°μ μλ₯Ό μ€μ΄κΈ° μν΄ μ»€λ° ν©μΉκΈ°\
β» Cherry-Picking(체리νΌνΉ): 'μΌμ΄ν¬ μμ μΉμ΄μ Έμλ μ²΄λ¦¬λ§ μ§μ΄λ¨Ήλ νμ' → μνλ κ²°κ³Όλ λ°μ΄ν°λ§ μ νμ μΌλ‘ κ³¨λΌ μ¬μ©νλ νμ
Reflog - μμ 볡ꡬ
- Reflog λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ΄μ μ μννλ λͺ¨λ μμ
μ μ‘°ννκ³ , νΉμ μμ μΌλ‘ λμκ° μ μλ€.
- `git reflog` λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ κ³Όκ±°μ μνλ‘ λ³΅κ΅¬ν μ μλ€.
- μννλ λͺ¨λ 컀λ°λ€μ μ μ₯λμ΄ μ΄λ€ μΉλͺ μ μΈ λ¬Έμ κ° λ°μν΄λ λμκ°λ₯.
- `HEAD@{n}` ννλ‘ μνλ μμ μΌλ‘ μ΄λν μ μμΌλ©° μ€μλ‘ λΈλμΉλ₯Ό μμ νκ±°λ 컀λ°μ μμ΄λ²λ Έμλ μ μ©νλ€.
βΉοΈμ°Έκ³
[ASAC 6κΈ° κ°μμλ£]
https://cornswrold.tistory.com/71#google_vignette
[Git] νμκ΄λ¦¬μ Git (3νΈ) - Git μ€ν μ΄μ§ λ¨κ³ μ΄ν΄
Git μ€ν μ΄μ§λ¨κ³ μ΄ν΄Gitμ λ€λ₯Έ νμ κ΄λ¦¬μμ€ν κ³Ό λ€λ₯΄κ² μμ€ μ½λλ₯Ό μ§μ μΆκ°νκ±°λ λ³κ²½νμ§ μλλΌλ μ΄λ₯Ό μΈμ§νμ§ λͺ»νλ©° Git add λͺ λ Ήμ ν΅ν΄μλ§ μΈμν μ μλ€. => Gitμ νμ κ΄λ¦¬κ° 3
cornswrold.tistory.com
Git - μμ νκ³ μ μ₯μμ μ μ₯νκΈ°
.gitignore λ₯Ό μ¬μ©νλ κ°λ¨ν λ°©μμ νλμ .gitignore νμΌμ μ΅μμ λλ ν 리μ νλ λκ³ λͺ¨λ νμ λλ ν 리μκΉμ§ μ μ©μν€λ λ°©μμ΄λ€. λ¬Όλ‘ .gitignore νμΌμ νλλ§ λλ κ²μ΄ μλλΌ νμ
git-scm.com
'π»DEV-STUDY > Git' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Git & GitHub #6 - μ€λ¬΄μμμ Git λΈλμΉ μ λ΅ λ° Zone κ΅¬λ³ (0) | 2024.09.01 |
---|---|
Git & GitHub #4 - Conflict μΆ©λ ν΄κ²° (0) | 2024.09.01 |
Git & GitHub #3 - Local Branchμμ Remote Branch λκΈ°ν (4) | 2024.09.01 |
Git & GitHub #2 - Git μμκ³Ό Local/Remote Branch κ΄λ¦¬ (1) | 2024.09.01 |
Git & GitHub #1 - κ°λ λ° SSH ν€ μμ± (0) | 2024.08.31 |