λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Git의 κΈ°λ³Έ κ°œλ…κ³Ό μ„€μΉ˜ 방법: 버전 κ΄€λ¦¬μ˜ ν•„μˆ˜ κ°€μ΄λ“œ πŸš€

okrestart 2024. 10. 30.

 

κ°œλ°œμžλ“€μ΄ κΌ­ μ•Œμ•„μ•Ό ν•  버전 관리 μ‹œμŠ€ν…œ, Git ! 버전 관리 μ‹œμŠ€ν…œ(VCS)은 μ½”λ“œμ˜ λ³€κ²½ 이λ ₯을 κ΄€λ¦¬ν•˜μ—¬ ν”„λ‘œμ νŠΈμ˜ μ•ˆμ •μ„±μ„ μœ μ§€ν•˜κ³ , ν˜‘μ—…μ„ μ›ν™œν•˜κ²Œ λ•λŠ” μ€‘μš”ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. 특히, Git 은 λΆ„μ‚°ν˜• 버전 관리 μ‹œμŠ€ν…œμœΌλ‘œ μ „ 세계 κ°œλ°œμžλ“€μ—κ²Œ 널리 μ‚¬λž‘λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” Git의 κ°œλ…κ³Ό μ„€μΉ˜ 방법을 톡해 μ—¬λŸ¬λΆ„μ΄ μ‰½κ²Œ Git을 μ΄ν•΄ν•˜κ³  μ„€μΉ˜ν•  수 μžˆλ„λ‘ μ•ˆλ‚΄ν•©λ‹ˆλ‹€.

 

 

1. 버전 κ΄€λ¦¬μ˜ μ€‘μš”μ„±: μ™œ Git이 ν•„μš”ν• κΉŒ?

버전 관리 μ‹œμŠ€ν…œμ€ μ½”λ“œλ‚˜ 파일의 λ³€κ²½ 이λ ₯을 κ΄€λ¦¬ν•˜μ—¬, 각 버전 κ°„μ˜ 차이λ₯Ό ν™•μΈν•˜κ³  이전 λ²„μ „μœΌλ‘œ μ‰½κ²Œ λŒμ•„κ°ˆ 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€. 이 μ€‘μ—μ„œλ„ Git 은 λΆ„μ‚°ν˜• 버전 관리 μ‹œμŠ€ν…œμœΌλ‘œ, λ„€νŠΈμ›Œν¬μ— μ—°κ²°λ˜μ§€ μ•Šμ•„λ„ λ‘œμ»¬μ—μ„œ 자유둭게 μž‘μ—…ν•˜κ³ , 원격 μ„œλ²„μ— μ•ˆμ „ν•˜κ²Œ λ°±μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Gitκ³Ό λ‹€λ₯Έ 버전 관리 μ‹œμŠ€ν…œ 비ꡐ

버전 관리 μ‹œμŠ€ν…œ νŠΉμ§• μ£Όμš” μž₯점
Git λΆ„μ‚°ν˜•, μ˜€ν”ˆ μ†ŒμŠ€ λ„€νŠΈμ›Œν¬ μ—°κ²° 없이 μž‘μ—… κ°€λŠ₯, 병합 κ°•λ ₯
SVN μ€‘μ•™μ§‘μ€‘ν˜•, μ˜€ν”ˆ μ†ŒμŠ€ μ„œλ²„μ— μ˜μ‘΄ν•΄ 관리, 비ꡐ적 λ‹¨μˆœν•œ ꡬ쑰
Mercurial λΆ„μ‚°ν˜•, μ˜€ν”ˆ μ†ŒμŠ€ 속도가 λΉ λ₯΄κ³  μ‚¬μš©λ²•μ΄ 간단함

 

Git은 SVN κ³Ό 달리 쀑앙 μ„œλ²„μ— μ˜μ‘΄ν•˜μ§€ μ•ŠμœΌλ©°, λ‘œμ»¬μ—μ„œλ„ μΆ©λΆ„νžˆ μž‘μ—…μ„ 진행할 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ Git의 브랜칭 및 병합 κΈ°λŠ₯ 이 κ°•λ ₯ν•΄, μ—¬λŸ¬ κ°œλ°œμžκ°€ λ™μ‹œμ— λ‹€μ–‘ν•œ κΈ°λŠ₯을 μž‘μ—…ν•˜κΈ°μ— 맀우 μœ μš©ν•©λ‹ˆλ‹€.

 

2. Git μ„€μΉ˜ν•˜κΈ°: μš΄μ˜μ²΄μ œλ³„ μ„€μΉ˜ 방법

 

Windowsμ—μ„œ Git μ„€μΉ˜ν•˜κΈ°

  1. Git λ‹€μš΄λ‘œλ“œ νŽ˜μ΄μ§€ 에 μ ‘μ†ν•˜μ—¬ μ΅œμ‹  버전을 λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€.
  2. λ‹€μš΄λ‘œλ“œν•œ μ„€μΉ˜ νŒŒμΌμ„ μ‹€ν–‰ν•˜κ³ , μ„€μΉ˜ μ˜΅μ…˜μ„ ν™•μΈν•˜λ©° μ§„ν–‰ν•©λ‹ˆλ‹€.
  3. Git Bash λΌλŠ” μ»€λ§¨λ“œ 라인 도ꡬ가 μ„€μΉ˜λ˜λ©°, 이λ₯Ό 톡해 λ‹€μ–‘ν•œ Git λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Tip: Windowsμ—μ„œ Git Bashλ₯Ό μ‚¬μš©ν•˜λ©΄ Linux와 λΉ„μŠ·ν•œ ν™˜κ²½μ—μ„œ μž‘μ—…ν•  수 μžˆμ–΄ νŽΈλ¦¬ν•©λ‹ˆλ‹€.

Macμ—μ„œ Git μ„€μΉ˜ν•˜κΈ°

Macμ—λŠ” 기본적으둜 Git이 μ„€μΉ˜λ˜μ–΄ μžˆμ§€λ§Œ, μ΅œμ‹  버전을 μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ Homebrew λ₯Ό 톡해 μ„€μΉ˜ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

brew install git

이 λͺ…λ Ήμ–΄λ₯Ό 터미널에 μž…λ ₯ν•˜λ©΄ Homebrewκ°€ μ΅œμ‹  Git을 μ„€μΉ˜ν•©λ‹ˆλ‹€.

Linuxμ—μ„œ Git μ„€μΉ˜ν•˜κΈ°

Linuxμ—μ„œλŠ” νŒ¨ν‚€μ§€ κ΄€λ¦¬μžλ₯Ό 톡해 κ°„λ‹¨νžˆ Git을 μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, Ubuntuμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 λͺ…λ Ήμ–΄λ‘œ μ„€μΉ˜ν•©λ‹ˆλ‹€:

sudo apt update
sudo apt install git

μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ 터미널에 git --version 을 μž…λ ₯ν•˜μ—¬ μ„€μΉ˜κ°€ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

3. Git κΈ°λ³Έ μ‚¬μš©λ²•: ν•„μˆ˜ λͺ…령어와 μ‹€μŠ΅ 예제

Git을 μ„€μΉ˜ν•œ ν›„, ν”„λ‘œμ νŠΈ λ””λ ‰ν† λ¦¬μ—μ„œ λ‹€μŒκ³Ό 같은 λͺ…령어듀을 μ‚¬μš©ν•΄λ³΄μ„Έμš”.

둜컬 μ €μž₯μ†Œ μ΄ˆκΈ°ν™”ν•˜κΈ°

git init

이 λͺ…λ Ήμ–΄λŠ” ν˜„μž¬ 디렉토리λ₯Ό Git μ €μž₯μ†Œλ‘œ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. 이후 λͺ¨λ“  파일 λ³€κ²½ 사항을 Git이 좔적할 수 있게 λ©λ‹ˆλ‹€.

파일 μΆ”κ°€ 및 μ»€λ°‹ν•˜κΈ°

git add <파일λͺ…>
git commit -m "컀밋 λ©”μ‹œμ§€"
  • git add λͺ…λ Ήμ–΄λŠ” μ§€μ •ν•œ νŒŒμΌμ„ μŠ€ν…Œμ΄μ§• μ˜μ—­ 에 μΆ”κ°€ν•˜μ—¬, 컀밋 μ€€λΉ„λ₯Ό ν•©λ‹ˆλ‹€.
  • git commit λͺ…λ Ήμ–΄λŠ” λ³€κ²½ 사항을 컀밋 ν•˜μ—¬, 버전 기둝에 λ‚¨κΉλ‹ˆλ‹€.

λ³€κ²½ 사항 ν™•μΈν•˜κΈ°

git status

git status λŠ” ν˜„μž¬ μž‘μ—… λ””λ ‰ν† λ¦¬μ˜ μƒνƒœλ₯Ό ν™•μΈν•˜μ—¬, λ³€κ²½λœ 파일이 μžˆλŠ”μ§€, μΆ”κ°€λœ 파일이 μžˆλŠ”μ§€ 등을 μ•Œλ €μ€λ‹ˆλ‹€.

과거둜 λŒμ•„κ°€κΈ°: 버전 되돌리기

Git의 κ°•λ ₯ν•œ κΈ°λŠ₯ 쀑 ν•˜λ‚˜λŠ” 과거의 νŠΉμ • μ‹œμ μœΌλ‘œ λŒμ•„κ°ˆ 수 μžˆλ‹€λŠ” μ μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 이전 μ»€λ°‹μœΌλ‘œ λ˜λŒμ•„κ°€κ³  μ‹Άλ‹€λ©΄ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

git checkout <컀밋 ν•΄μ‹œ>

이 λͺ…λ Ήμ–΄λŠ” ν•΄λ‹Ή μ»€λ°‹μ˜ μƒνƒœλ‘œ μ½”λ“œλ₯Ό λ˜λŒλ¦½λ‹ˆλ‹€. 이 과정을 톡해 μ€‘μš”ν•œ μ½”λ“œμ˜ λ³€κ²½ 사항을 볡ꡬ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

4. μ‹€λ¬΄μ—μ„œ Git을 ν™œμš©ν•œ ν˜‘μ—…: κΈ°λ³Έ κ°œλ…κ³Ό μ£Όμ˜μ‚¬ν•­

Git은 λΆ„μ‚°ν˜• ꡬ쑰 λ₯Ό 톡해 μ—¬λŸ¬ λͺ…이 λ™μ‹œμ— μž‘μ—…ν•˜λŠ” 것을 μ§€μ›ν•©λ‹ˆλ‹€. Git을 ν†΅ν•œ ν˜‘μ—… μ‹œμ—λŠ” 브랜치(branch) λ₯Ό λ‚˜λˆ„μ–΄ 각자 μž‘μ—…μ„ μ§„ν–‰ν•˜κ³ , 이후 병합(merge)ν•˜μ—¬ ν•˜λ‚˜μ˜ μ™„μ„±λœ μ½”λ“œλ‘œ ν•©μΉ©λ‹ˆλ‹€.

Git λΈŒλžœμΉ˜μ™€ 병합 μ΄ν•΄ν•˜κΈ°

git branch <브랜치λͺ…>
git checkout <브랜치λͺ…>
  • git branch λŠ” μƒˆλ‘œμš΄ 브랜치λ₯Ό μƒμ„±ν•˜μ—¬, μž‘μ—…μ΄ λ…λ¦½μ μœΌλ‘œ 이루어지도둝 ν•©λ‹ˆλ‹€.
  • git checkout 을 톡해 μ›ν•˜λŠ” 브랜치둜 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.

이후 병합 μž‘μ—… 을 톡해 각자 μž‘μ—…ν•œ λ‚΄μš©μ„ ν•˜λ‚˜μ˜ 메인 λΈŒλžœμΉ˜μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

일반적인 Git μ‚¬μš© 톡계 및 νŠΈλ Œλ“œ 정보 🌐

졜근 쑰사에 λ”°λ₯΄λ©΄, 개발자의 90% 이상 이 Git을 버전 관리 λ„κ΅¬λ‘œ μ‚¬μš©ν•˜κ³  있으며, 특히 μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ™€ κΈ°μ—…μ—μ„œμ˜ ν™œμš©λ„κ°€ 맀우 λ†’μŠ΅λ‹ˆλ‹€. Git은 ν˜‘μ—…κ³Ό μ½”λ“œ κ΄€λ¦¬μ˜ ν‘œμ€€μœΌλ‘œ 자리 작고 μžˆμ–΄, κ°œλ°œμžκ°€ ν•„μˆ˜μ μœΌλ‘œ μ΅ν˜€μ•Ό ν•  기술둜 평가받고 μžˆμŠ΅λ‹ˆλ‹€.

 

FAQ πŸ€”

Q1. Gitκ³Ό GitHub의 μ°¨μ΄λŠ” λ¬΄μ—‡μΈκ°€μš”?
A1. Git은 λΆ„μ‚°ν˜• 버전 관리 μ‹œμŠ€ν…œ(VCS)이고, GitHubλŠ” Git을 기반으둜 ν•œ μ½”λ“œ μ €μž₯μ†Œ ν˜ΈμŠ€νŒ… μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

Q2. Git을 κΌ­ μ„€μΉ˜ν•΄μ•Ό ν•˜λ‚˜μš”?
A2. Git을 직접 μ„€μΉ˜ν•˜μ§€ μ•Šκ³ λ„ GitHub λ“±μ˜ μ›Ή μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•  수 μžˆμ§€λ§Œ, λ‘œμ»¬μ—μ„œ μž‘μ—…ν•˜λ €λ©΄ Git이 ν•„μš”ν•©λ‹ˆλ‹€.

Q3. Git의 λŒ€μ•ˆμ΄ μžˆλ‚˜μš”?
A3. Git 외에도 SVN, Mercurial 등이 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ Git은 μ„±λŠ₯κ³Ό κΈ°λŠ₯μ—μ„œ μ„ ν˜Έλ˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.

Q4. Git의 λΈŒλžœμΉ˜λŠ” μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λ‚˜μš”?
A4. Git의 λΈŒλžœμΉ˜λŠ” 각각의 독립적인 μž‘μ—… ν™˜κ²½μ„ μ œκ³΅ν•˜λ©°, 병합을 톡해 λͺ¨λ“  μž‘μ—… λ‚΄μš©μ„ 톡합할 수 μžˆμŠ΅λ‹ˆλ‹€.

Q5. Git을 μ΄μš©ν•œ ν˜‘μ—…μ€ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?
A5. GitHub λ˜λŠ” GitLabκ³Ό 같은 원격 μ €μž₯μ†Œλ₯Ό ν™œμš©ν•˜μ—¬ 곡동 μž‘μ—…ν•˜κ³ , Pull Request 등을 톡해 μ½”λ“œ 리뷰와 병합을 μ§„ν–‰ν•©λ‹ˆλ‹€.

이 κ°€μ΄λ“œλ₯Ό 톡해 Git의 κ°œλ…κ³Ό μ„€μΉ˜ 방법을 μ΄ν•΄ν•˜κ³  μ‹€μŠ΅ν•΄λ³΄μ„Έμš”! Git은 κ°œλ°œμ— ν•„μˆ˜μ μΈ 기술둜, μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œμ νŠΈμ— 큰 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

λŒ“κΈ€