-
Git , Github | ๊น๊ณผ ๊นํ๋ธ ๋ง์คํฐTIL 2022. 9. 14. 21:59
1. setup ๊น ์ค์นํ๊ธฐ
git : all the commands
git --version
.gitconfig : ๋ชจ๋ git์ ๊ดํ ์ค์ !
git config --list
config ํ์ผ ์ด๊ธฐ
git config --global -e
config ํ์ผ์ ์๋ํฐ์ ์ฐ๊ฒฐํ๊ธฐ
git config --global core.editor "code"
code ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด gitconfig ํ์ผ์ด ์๋ํฐ์์ ์ด๋ฆผ
code .
๊ธฐ๋ณธ ์ ๋ณด ์ค์ ํ๊ธฐ
git config --global user.name "sinyoung" //name ์ค์ git config --global user.email "sinyoung@naver.com" //email ์ค์ git config userr.name //sinyoung /* window ๋์ด์ฐ๊ธฐ : text \r\n (carriage-return) max : \n */ git config --global core.autocrlf true //git config --global core.autocrlf input
2. ๊น ๊ณต๋ถ ํฌ์ธํธ
๋ช ๋ น์ด ์์ฃผ๋ก ์ดํดํ๊ธฐ !
git + ๋ช ๋ น์ด(commit , add, ,,,,) -option
Terms(์ฉ์ด์ ๋ฆฌ)
- ๋๋ ํ ๋ฆฌ : folder
- Terminal or Command Line : Interface for Text Commands(๋ช ๋ น์ด)
- CLI : Command Line Interface
- cd : Change Directory (ํด๋ ์ด๋)
- Code Editor : ์ฝ๋ฉ ์๋ ํ๋ก์ธ์
- ๋ ํฌ์งํ ๋ฆฌ(Repository) : ํ๋ก์ ํธ ๋๋ ํ๋ก์ ํธ๊ฐ ์ ์ฅ๋๋ ํด๋
- Github : ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์จ๋ผ์ธํ๊ฒฝ์์ ํธ์คํ ํด์ฃผ๋ ์น
Git Commands(์์ฃผ ์ฐ๋ ๊น ๋ช ๋ น์ด)
- Clone : ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋์ ๋ก์ปฌ ํ๊ฒฝ์ผ๋ก ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ
- add : ๋ณ๊ฒฝ๋ ํ์ผ์ git์ ์ ๋ฐ์ดํธ ํ ๋ ์ฌ์ฉ(delete, add)
- commit : ํ์ผ๋ค์ ๊น์ ์ ์ฅํ ๋
- push : github ๊ณผ ๊ฐ์ ๋ฆฌ๋ชจํธ repository์ ๊น ์ปค๋ฐ(๋ณ๊ฒฝ๋ ํ์ผ)์ ์ ๋ก๋ํ ๋ (๋ก์ปฌ -> ๋ฆฌ๋ชจํธ)
- pull : ๋ฆฌ๋ชจํธ repository์ ๋ณ๊ฒฝ๋ ๊ฒ๋ค์ ๋ก์ปฌ์ ๋ค์ด๋ก๋ํ ๋ (๋ฆฌ๋ชจํธ -> ๋ก์ปฌ )
1. ๊นํ ๊ฐ์ ํ๊ธฐ
2. ๋ ํฌ์งํ ๋ฆฌ ์ ์ํ๊ธฐ (ํ๋ก์ ํธ ํด๋ ์์ฑ)
3. READEME.md ํ์ผ ์์ฑ
README ํ์ผ์ ํ๋ก์ ํธ์ ์ธํธ๋ก ํ์ผ์ด๋ค. ํ๋ก์ ํธ์ ๋ํ ๊ฐ๋จํ ์ค๋ช ์ ์ ์ ์ ์๋ค.
์ปค๋ฐ ํ์ธํ๊ธฐ
4. ๊น ์ค์นํ๊ธฐ
5. clone : ๋ ํฌ์งํ ๋ฆฌ ๋ก์ปฌ์ ๋ค์ด๋ฐ๊ธฐ
repo ์ฃผ์ ๋ณต์ฌ ํ
clone ๋ฐ์์ค๊ธฐ
/*๋ด๊ฐ ์ํ๋ ํด๋๋ฅผ ์๋ํฐ๋ก ์ด์ด์ค ํ */ $git clone repository address
clone ๋ฐ์์จ ํด๋๋ก ์ด๋
$cd github-repo
ls -la ๋ช ๋ น์ด : ํด๋์ ๋ชจ๋ ํ์ผ(์จ๊ฒจ์ง ํ์ผ๋ ํฌํจ)์ ๋ณด์ฌ์ฃผ๋ ๋ช ๋ น์ด
6. git status : ์์ฑ, ์์ , ์ญ์ ๋ ํ์ผ ์ํ ํ์ธ
$git status
7. git add : ์์ ๋ ํ์ผ ์ ๋ฐ์ดํธ
/*git add filename or .(all)*/ git add .
8. git commit
์ฒซ๋ฒ์งธ ์ปค๋ฐ -m "added index.html" ์ด commit์ ์ ๋ชฉ๋ถ๋ถ์ด ๋๊ณ , ๋๋ฒ์งธ ์ปค๋ฐ -m "somee description"์ด description ๋ถ๋ถ์ด ๋๋ค.
9. git push
$git push origin main /*git push + ํ์ฌ github storage ์์น + pushํ ๋ธ๋ฐ์น ์์น*/
clone์ ํด์จ ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ ์๋์ผ๋ก origin ์ผ๋ก ๋ฑ๋ก๋๋ค.
์ ๋ฐ์ดํธ ๋ ๊นํ
clone ๋ฐ์ง ์์ ๋ก์ปฌ repository ์์ github ๋ ํฌ๋ก push ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋๋ค .
์ ๋ก๋ํ ๋ ํฌ๋ฅผ ์ง์ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค.
$git remote add origin(๋ญ๋ผ๊ณ ๋ถ๋ฅผ์ง) ๊นํ๋ ํฌ๋งํฌ
-u ์ต์ ์ ์ด์ฉํ๋ฉด ์ ์คํธ๋ฆผ ํ๊ฒฝ origin ๋ธ๋์น์ push ๋ฅผ ํ ๋ git push ๋ง ์ ๋ ฅํ์ฌ push ํ ์ ์๋ค.
git push -u origin master
SSH Keys
๋ด ๋ก์ปฌ ํ์ผ๋ค์ ๊นํ(๋ฆฌ๋ชจํธ ํ๊ฒฝ)์ ์ ๋ก๋ ์ํค๊ธฐ ์ํด์๋ ๊นํ์ ๋ด๊ฐ owner๋ผ๋ ๊ฒ์ ์ธ์ฆํด์ผ ํ๋ค.
๊นํ(๋ฆฌ๋ชจํธ ํ๊ฒฝ)๊ณผ ๋ก์ปฌ ํ๊ฒฝ์ ์ฐ๊ฒฐ์์ผ์ผ ํ๋ค.
์ด ๋ SSH Keys๋ฅผ ์ด์ฉํ ์ ์๋ค.
SSH Keys : ssh๋ ์๊ฒฉ ์ ์ฅ์์ ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ ์์ ํ๊ฒ ์ฐ๊ฒฐํด์ฃผ๋ Secure Shell์ด๋ค.
๊น (git)
๊น์ ์์ ํ๋ก์ ํธ๋ถํฐ ํฐ ํ๋ก์ ํธ๊น์ง ๋ฒ์ ๋ณ๋ก ์ปจํธ๋กค ํ ์ ์๊ฒ ํด์ฃผ๋ ์์คํ ์ด๋ค.
๋์ ํ๋ก์ ํธ๋ฅผ ๋ฒ์ ๋ณ๋ก ๊ฐ๊ณ ์์ ์ ์๋ค๋ฉด ์ด๋จ๊น?
์์ ์ฝ๋๋ฅผ ๋ณผ ์๋ ์๊ณ , ๋ณ๊ฒฝ๋ ๋ด์ฉ๋ค์ ํ์ธํ๊ธฐ๋ ์ฌ์ธ ๊ฒ์ด๋ค.
๊น์ ๊ทธ ์ผ๋ค์ ๋์์ฃผ๋ ๋ฌด๋ฃ ๋๊ตฌ์ด๋ค.
What is Version Control?
๋งค์ผ ๊ฐ๋ฐ์๋ค์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ๋ฐํ๊ณ ์ ์ฅํ๊ณ ๊ณ ์น๊ณ ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ ๊ฒ์ด๋ค.
๋ง์ฝ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ด ์๋ค๋ฉด ๋ด๊ฐ ์, ์ธ์ , ๋ฌด์์ ๊ณ ์ณค๋์ง ์ผ์ผํ ๊ธฐ๋กํด์ผ ํ ๊ฒ์ด๋ค. ์๋ณธํ์ผ๋ ๋ฐ๋ก ์์ฑํ๊ณ . ๊ทธ๋ฆฌ๊ณ ๋ฌด์๋ณด๋ค ๊ณผ๊ฑฐ๋ก ๋์๊ฐ๊ธฐ ํ๋ค ๊ฒ์ด๋ค.
ํ์ง๋ง Version Control ์ ์, ์ธ์ , ๋ฌด์์ ๊ณ ์ณค๋์ง ์๋ ค์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณผ๊ฑฐ์ ์ํ๋ ์์ ์ผ๋ก ๋์๊ฐ ์ ์๋ ํ์๋จธ์ ๊ณผ ๊ฐ์ ์ญํ ๋ ํ๋ค. .
- History Tracking
- Collaboration
์ฌ๋ฌ ์ฌ๋๊ณผ ํ์ ํ ๋ History๋ฅผ ๊ณต์ ํ ์ ์๊ฒ ๋๋ค.
๊น์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ !
1. ์ฌ๋ฌ ๋ฒ์ ์ปจํธ๋กค ์ค ๊น์ ๊ฐ์ฅ ๋ชจ๋ํ๊ณ ๋น ๋ฅธ ๋๊ตฌ์ด๋ค.
2. ๊น์ ๊ณผ๊ฑฐ์ ํ์ (๋ฌด์์, ์ธ์ , ์ ๊ณ ์ณค๋์ง)์ ์๋ ค์ค๋ค.
3. ๊น์ ์ฌ๋ฌํ์ผ์ ๋ณํ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
ํ์ ์ ํ ๋, ๋๊ตฐ๊ฐ๋ a ํ์ผ์, ๋๊ตฐ๊ฐ๋ bํ์ผ์ ์์ ํ์ ๋, ๊น์ ์ฌ๋ฌํ์ผ์ ๋ณํ(ํ์คํ ใน)๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
4. ๊น์ ๋๊ตฌ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
What is Git?
๊น์ ์ฌ์ฉํด ํ๋ก์ ํธ๋ค์ ๊ด๋ฆฌํ๋ฉด?
Local Git
๋ก์ปฌ ๊น์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค.
์ฝ๊ฒ ๋ช ๋ น์ด๋ฅผ ๊ณต๋ถํ๊ณ ์ฌ์ฉํด์ ๊ด๋ฆฌํ ์ ์๋ค.
1. simple use of git
//initialize project $git init myproject //create directory(history snapshot) cd myproject git add . git commit -m "importing all the code"
2. collaborative git
10. Github workflow
write code -> commit changed -> make a pull request
11. Local GIt Workflow
write code -> stage changes(git add) -> commit changes(git commit) -> push chages(git push) -> make a pull request
12. git branching
main branch๋ default ๋ธ๋์น๋ค.
๊ฐ๊ฐ์ ๋ธ๋์น๋ ์๋ก ์ํฅ์ ๋ฐ์ง ์๊ณ ์์ ํ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ค. => ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๋ก์ด ์ฝ๋, ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๋ธ๋์น๋ฅผ ๋ถ๋ฆฌํ์ฌ ์์ ํ๋ฉด, ์๋ ๋ธ๋์น์ ์ํฅ์ ์ฃผ์ง์๊ณ (๋ฒ๊ทธ, ๋ฌธ์ ๋ฑ...) ๋ ๋ฆฝ์ ์ผ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ push ํ ์ ์๋ค. + ๋ค๋ฅธ์ฌ๋๊ณผ ํ์ ์ ํ ๋ ์๋ก ๊ฐ์์ ๋ธ๋์น์์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ์ ์๋ค.
sandbox area์ฒ๋ผ ์ฐ์ต์ฅ์ฒ๋ผ !
์ํ๋ ์์ (๊ธฐ๋ฅ๊ฐ๋ฐ ์๋ฃ, ๋ฒ๊ทธ ๊ฐ์ ) main branch์ merge(ํตํฉ)์ํฌ ์ ์๋ค.
๋ธ๋์น ํ์ธํ๊ธฐ
$git branch
ํ์ฌ ๋ด๊ฐ ์์นํ๊ณ ์๋ ๋ธ๋์น๊ฐ * ์ผ๋ก ํ์๋๋ค.
๋ธ๋์น ์์ฑํ๊ธฐ git checkout
๋ธ๋์น๋ผ๋ฆฌ ์ด๋ํ๊ฑฐ๋ ์์ฑํ ๋๋ git checkout(๋ธ๋์น ์์ฑ+ ๋ธ๋์น ์ด๋)์ ์ด์ฉํ๋ค.
git checkout ๋ค์ -b ์ต์ ์ ๋ถ์ฌ ๋ธ๋์น๋ฅผ ์์ฑํ ์ ์๋ค.
git checkout -b feature-11(nameofbranch)
๋ณดํต branch ์ด๋ฆ์ ์ง์ ๋ feature๋ฅผ ์์ ๋ถ์ธ๋ค. /,-๋ฅผ ๋ค์ ๋ถ์ฌ ์ด์๋๋ฒ๋, ๋จ์ด๋ฅผ ๋ถ์ฌ ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
๋ธ๋์น ์ด๋ํ๊ธฐ
git checkout main
๋ธ๋์น ๊ฐ merge ์ํค๊ธฐ
feature-readme-instructions ๋ธ๋์น์์ readme ํ์ผ์ ๋ฐ๊ฟจ์ ๋ main ๋ธ๋์น๋ ์๋ฌด๋ฐ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
๋ง์ฝ ๋ก์ปฌ main ๋ธ๋์น๋ก ๋ฐ๋๋ด์ฉ์ push ํ๊ณ ์ถ๋ค๋ฉด merge๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ทธ ์ ์ diff๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
git diff feature-readmfe-instructions
๋ด์ฉ์ ํ์ธํ๋ค๋ฉด merge ์์ผ์ฃผ๋ฉด ๋๋ค.
ํ์ง๋ง main ๋ธ๋์น๋ก push๋ฅผ ํ ํ feature ๋ธ๋์น์์ ๋ฆฌ๋ชจํธ upstream์ push๋ฅผ ํ๋ ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฌ๋ค.
--set-upstream์ -u ์ต์ ์ผ๋ก ๋์ ์ธ ์ ์๋ค.
$git -u origin feature-readmee-instructions
๋ธ๋์น ์ญ์
๋ธ๋์น๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ merge๋ฅผ ์ํค๋ฉด ์ญํ ์ ๋คํ๋ค. ๋ธ๋์น ์ ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
git branch -d branchname
์ฌ๋ฌ์ฌ๋์ด ํ๋์ ํ์ผ์ ์์ ํ๋ฉด merge ์ถฉ๋์ด ๋ฐ์ํ๋ค.
๋ฌธ์ ์ํฉ์ ๋ง๋ค์ด๋ณด์. ์๋ก ๋๊ธฐํ๋ฅผ ์งํํ์ง ์๊ณ ๋์์ ๊ฐ์ ํ์ผ์ ์์ ์ํค๋ ๊ฒ์ด๋ค. master ๋ธ๋์น์์ index.html ํ์ผ์ ์์ ํ๊ณ featureํ์ผ์์ index.html ํ์ผ์ ์์ ํด๋ณด์.
๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ณผ ์ ์๋ค.
ํด๊ฒฐ๋ฒ : ๋๋ค commit ๊น์ง ์งํ์ ํ๋ค. => diff๋ก ๋น๊ตํ๊ณ merge ์ํจ๋ค.
main ๋ธ๋์น์ merge๋ฅผ ์ํค๋ฉด conflict ๋ฉ์์ง๋ฅผ ํ์ธํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ๋ํ๋๊ณ ์ฌ๊ธฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. (์ด๋ค ์ฝ๋๋ฅผ ๋จ๊ธธ ์ง ์ ํ)
ํ์ผ ํ๋๋ง add ์ํค๋ ๊ฒฝ์ฐ -am ์ต์ ์ ์ฌ์ฉํด์ add์ commit์ ๋์์ ์งํํ ์ ์๋ค.
13. git pull(upstream -> local
upstream branch์์ local๋ก pull์ ๋ฐ์ ๋๊ธฐํ๋ฅผ ์ํฌ ์ ์๋ค.
14. undoing in git
1. git reset
git add ๋๋๋ฆฌ๊ธฐ
git reset filename
git commit ๋๋๋ฆฌ๊ธฐ
* git์์ HEAD๋ ๊ฐ์ฅ ์ต๊ทผ์ commit์ ๊ฐ๋ฆฌํจ๋ค.
HEAD~1 ์ ํ๋ฉด ๊ฐ์ฅ ์ต๊ทผ์์ -1 commit ๊น์ง reset์ด ๋๋ค.
git rest HEAD~1
git log๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ commit์ ๋ณผ ์ ์๋ค.
commit ์ง์ ์ ์ ํํ ๋๋ commit ์์ hash๋ฅผ ๋ณต์ฌํด์ ์ง์ ํ๋ฉด ๋๋ค.
reset --hard ์ต์ ใ ๋ฅด ์ฌ์ฉํ๋ฉด unstaged๋ ์๋๊ณ remove๋ง ๋๋ค.
Fork : ๋ค๋ฅธ ์ฌ๋์ ๋ ํฌ๋ฅผ ๋์ ๋ ํฌ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Computer Basics (0) 2022.09.17 ๐จ ubuntu | shell theme ๋ฐ๊พธ๊ธฐ (0) 2022.09.15 โฑ๏ธ ์คํฑ์์น ์ ์ํ๊ธฐ | setInterval , String.padStart (0) 2022.09.05 ๐ ํ๋ฒ๊ฑฐ ๋ฒํผ ์ ์ํ๊ธฐ (0) 2022.09.03 ๐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive | ์ด๋ฒคํธ [์ด๋ฒคํธ ํธ๋ค๋ฌ] (0) 2022.05.26