πŸ’»/개발

[Git] Git의 κ°œλ…κ³Ό μ‚¬μš©λ°©λ²•

ruhz 2021. 1. 25. 16:38

0. Git

λ­”κ°€λ₯Ό λ§Œλ“€κ³  ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄, μ»΄ν“¨ν„°μ˜ νŠΉμ • 폴더에 μž‘μ—…λ¬Όλ“€μ„ λ„£μ–΄λ†“κ²Œ λœλ‹€. Git은 이 폴더 μ•ˆμ— μ‹œκ°„μ—¬ν–‰μ΄ κ°€λŠ₯ν•œ ν‰ν–‰μš°μ£Όλ“€μ„ λ§Œλ“œλŠ” 것이닀. μš°λ¦¬κ°€ ν”νžˆ μ•Œκ³  μžˆλŠ” GithubλŠ” 이 Git을 κ³΅μœ ν•˜κ³  관리할 수 μžˆλŠ” ν΄λΌμš°λ“œμ΄λ‹€. 

 

μ‹œκ°„ μ—¬ν–‰

μ‹œκ°„ 여행이 κ°€λŠ₯ν•˜λ‹€λŠ” 건 λ‚΄κ°€ μˆ˜μŠ΅ν•˜κΈ° μ–΄λ €μš΄ μ‹€μˆ˜λ₯Ό ν–ˆμ„ λ•Œ, ν˜Ήμ€ μ „μ΄λž‘ 뭐가 λ°”λ€Œμ—ˆλŠ”μ§€ ν—·κ°ˆλ¦΄ λ•Œ μ–Έμ œλ“  폴더 λ‚΄ μƒνƒœλ₯Ό 과거둜 돌릴 수 μžˆλ‹€λŠ” 것이닀. μ•„μ˜ˆ λͺ¨λ“  파일의 μ €μž₯된 μƒνƒœλ₯Ό μ•„κΉŒλ‘œ, μ—Šκ·Έμ œλ‘œ, ν˜Ήμ€ 맨 초기둜 돌릴 수 있고 νŠΉλ³„νžˆ μ–΄λ–€ ν•„μš”ν•œ κ²ƒλ§Œ μ±™κ²¨μ„œ κ°€μ Έμ˜¬ μˆ˜λ„ μžˆλ‹€.

 

평행 우주

λ§Œμ•½ ν˜„μž¬ μ½”λ“œμ—μ„œ μ‹œλ„ν•΄λ³΄κ³  싢은 것이 μžˆκ±°λ‚˜ 변경해보고 싢은 뢀뢄이 μžˆλ‹€λ©΄, μ½”λ“œμ˜ ν‰ν–‰μš°μ£Όλ₯Ό λ§Œλ“€μ–΄ μ‹œλ„λ₯Ό 해보닀가 λ§ˆμŒμ— λ“€λ©΄ λ‹€μ‹œ ν•©μΉ  μˆ˜λ„ μžˆλ‹€. 

 

 

 

1. Git μ‚¬μš©λ²•

Git을 μ‚¬μš©ν•˜λŠ” 법은 CLI(Command line Interface)둜 λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜λŠ” 방법, Source Tree와 같이 GUI(Graphical User Interface)λ₯Ό μ΄μš©ν•˜λŠ” λ°©λ²•μ΄μžˆλ‹€. CLIλŠ” λ”°λ‘œ μ„€μΉ˜ν•΄μ€„ ν•„μš”λŠ” μ—†κ³  λ‹€μŒ 3κ°€μ§€κ°€ μ„€μΉ˜λ˜μ—ˆλŠ”μ§€λ₯Ό ν™•μΈν•˜μž.

 

CLI둜 Git μ‚¬μš©ν•΄λ³΄κΈ°

이 방법 말고도 VSμ—μ„œ Ctrl + ' 둜 열어도 κ°€λŠ₯

git μ €μž₯μ†Œ 생성

git init	// git μ €μž₯μ†Œ 생성
git config --global user.name "(내이름)"	// 이름 등둝
git config --global user.email "(λ‚΄ λ©”μΌμ£Όμ†Œ)"	// 이메일 등둝

μž‘μ—…μ„ 마치면 .git 파일이 μˆ¨κΉ€νŒŒμΌλ‘œ μƒμ„±λœλ‹€. 이 νŒŒμΌμ— 관리에 ν•„μš”ν•œ 정보가 κΈ°λ‘λ˜λŠ” κ²ƒμ΄λ―€λ‘œ μ‚­μ œν•  땐 이 νŒŒμΌμ„ μ§€μ›Œλ²„λ¦¬λ©΄ λœλ‹€.

 

ν˜„μž¬ μ‹œμ μ„ μ €μž₯

git status	// ν˜„μž¬ git의 μƒνƒœ 확인
git add -A	// ν΄λ”μ˜ λͺ¨λ“  것을 νƒ€μž„μΊ‘μŠ μ•ˆμ— λ‹΄κ² λ‹€(stage ν•˜κ² λ‹€)
git commit -m "νƒ€μž„μΊ‘μŠμ— λŒ€ν•œ μ„€λͺ…"	// λ‚˜μ€‘μ— κΊΌλ‚Ό λ•Œλ₯Ό λŒ€λΉ„ν•΄ μ„€λͺ…을 달고, νƒ€μž„μΊ‘μŠμ„ 묻겠닀
git log		// git의 νƒ€μž„μΊ‘μŠλ“€μ„ 확인

add둜 νƒ€μž„μΊ‘μŠ μ•ˆμ— νŒŒμΌμ„ λ‹΄λŠ”λ‹€. commit둜 νƒ€μž„μΊ‘μŠμ„ λ¬»λŠ”λ‹€. λ‹€μ‹œ λ§ν•˜λ©΄, add둜 git이 좔적할 수 μžˆλ„λ‘ stage에 νŒŒμΌλ“€μ„ 올리고, commit으둜 ν˜„μž¬ 폴더 μƒνƒœλ₯Ό 사진찍어 버전을 λ§Œλ“œλŠ” 것이닀. μžμ„Έν•œ 사항은 링크λ₯Ό μ°Έκ³ !

 

과거둜 λŒμ•„κ°€κΈ°

git log		// ν•΄λ‹Ή νƒ€μž„μΊ‘μŠμ˜ 번호 확인
git reset "일련번호" --hard	// 이 νƒ€μž„μΊ‘μŠ μ΄ν›„μ˜ 변경점듀은 λͺ¨λ‘ μ‚­μ œ
git revert "일련번호"	// 이 νƒ€μž„μΊ‘μŠμ˜ 변경점듀을 μ·¨μ†Œν•œ νƒ€μž„μΊ‘μŠμ„ μƒˆλ‘œ λ¬»λŠ”λ‹€

reset은 ν•΄λ‹Ή νƒ€μž„μΊ‘μŠλ‘œ λŒμ•„κ°€κ³  이 ν›„μ˜ μž‘μ—…λ“€μ€ λͺ¨λ‘ μ·¨μ†Œν•˜λŠ” 것이고, revertλŠ” ν•΄λ‹Ή μž‘μ—…μœΌλ‘œ λ³€κ²½λœ 것듀을 μ·¨μ†Œν•œ μΊ‘μŠμ„ μƒˆλ‘œ λ¬»λŠ” 것이닀. reset은 ν•œ 번 ν•˜λ©΄ λŒμ•„κ°ˆ 수 μ—†μœΌλ‹ˆ μ‹ μ€‘νžˆ ν•˜λ„λ‘ ν•˜μž.

 

branch 생성

git branch "branch 이름"	// κΈ°μ‘΄ branch "master"μ—μ„œ μƒˆλ‘œμš΄ ν‰ν–‰μš°μ£Ό 생성
git checkout "branch 이름"	// ν•΄λ‹Ή branch ν‰ν–‰μš°μ£Όλ‘œ 이동
git merge "branch 이름"		// ν˜„μž¬ μžˆλŠ” μš°μ£Όμ—λ‹€κ°€ 해당이름을 κ°€μ§„ ν‰ν–‰μš°μ£Όμ˜ 변경점듀을 가져와 ν•©μΉ¨
git log --graph --all --decorate	// ν‰ν–‰μš°μ£Όμ—μ„œμ˜ μž‘μ—…λ‚΄μ—­μ„ λ³΄μ—¬μ€Œ

λ¬Όλ‘  μ’€ 더 μ΅μˆ™ν•΄μ Έμ•Όκ² μ§€λ§Œ, 주석을 읽어보면 정말 νŽΈλ¦¬ν•œ κΈ°λŠ₯이 아닐 수 μ—†λ‹€! ν•˜μ§€λ§Œ λ§Œμ•½ λ‹€λ₯Έ μš°μ£Όμ—μ„œ νŠΉμ • 뢀뢄을 λ‹€λ₯΄κ²Œ μˆ˜μ •ν•˜λ©΄ μ–΄λ–»κ²Œ 될까? conflictλ₯Ό ν•΄κ²°ν•˜λΌλŠ” λ©”μ„Έμ§€κ°€ λœ¬λ‹€. λ‘˜ 쀑 ν•œ μͺ½μ„ μ§€μ›Œμ£Όκ³  add 및 commit을 ν•΄μ£Όμž! μ—¬λŸ¬ branchμ—μ„œ μž‘μ—…ν•œλ‹€λ©΄ 같은 νŒŒμΌμ„ μˆ˜μ •ν•˜μ§€ μ•Šλ„λ‘ μ‘°μ‹¬ν•˜λ„λ‘ ν•˜μž.

 

rebase ν•˜κΈ°

git rebase "branch 이름"	// merge처럼 κ°€μ§€λ₯Ό κΈ°λ‘₯에 λ‹€μ‹œ ν•©μΉ˜λŠ”κ²Œ μ•„λ‹ˆλΌ, κ°€μ§€λ₯Ό λ–Όλ‹€ κΈ°λ‘₯에 μ΄μ–΄λΆ™μž„
git branch -D "branch 이름"	// λ‹€ μ“΄ branchλ₯Ό μ‚­μ œ

 

 

 

μœ„ λ‚΄μš©μ€ 'μ–„νŒν•œ 코딩사전'을 보고 정리 및 μΆ”κ°€ν•œ κ²ƒμž…λ‹ˆλ‹€.