$brew install git๋ฅผ Terminal์ ์
๋ ฅํ์ฌ ์ค์น๋ฅผ ์งํํฉ๋๋ค.โจ CLI๋ฅผ ๋จผ์ ๋ฐฐ์ฐ๋ ์ด์ !!
1. CLI ์ปค๋งจ๋๋ก git์ ์ฌ์ฉํ ์ค ์๋ฉด, GUI ๋๊ตฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๋ํ ์ดํด๊ฐ ๋น ๋ฅด๋ค.
2. ๋ฉ์ด ๋๋ค.๐
bash๋?
- Shell์ ํ ์ข ๋ฅ๋ก ์ด์์ฒด์ ์ ์ปค๋๊ณผ ์ฌ์ฉ์๋ฅผ ์ด์ด์ฃผ๋ ์ํํธ์จ์ด
์ปค๋(Kernel)์ด๋?
ํ๋์จ์ด์ ์์ฉํ๋ก๊ทธ๋จ์ ์ด์ด์ฃผ๋ ์ด์์ฒด์ ์ ํต์ฌ ์์คํ ์ํํธ์จ์ด- ๋ค์ํ ์ด์์ฒด์ ์์ ๊ธฐ๋ณธ ์๋ก ์ฑํ
git bash๋ฅผ ์ด๊ณ $ git -v๋ฅผ ์
๋ ฅํ์ฌ ์ค์น ํ์ธ์ ํ๋ค.
git ํ๊ฒฝ ์ค์ ์ ํด์ค๋ค.
$ git config --global user.name "github ์ ์ ๋๋ค์"
$ git config --global user.email "github ๋ฉ์ผ ์ฃผ์"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"
$ git config --global core.editor "vim" : $ vi ํ์ผ๋ช
์ผ๋ก vim์ผ๋ก ํ์ผ์ ์ด๊ธฐ ์ํด ์ ์ฉ$ git config --global core.pager "cat" : $ cat ํ์ผ๋ช
์ผ๋ก ํ์ผ ๋ด์ฉ์ ๋ณผ ์ ์๊ฒ ์ ์ฉconfig ์์
์ด ๋๋ฌ๋ค๋ฉด, $ git config --list๋ฅผ ์
๋ ฅํ์ฌ ์คํ๊ฐ ์๋์ง ํ์ธํ๋ค.
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"๋ฅผ ์
๋ ฅํ์ฌ lg alias๋ฅผ ์ค์ ํด ์ค๋ค.
$ .. : ์์ ํด๋$ . : ํ์ฌ ํด๋- : ์ต์
(flag)* : ์ ์คํฐ๋ฆฌ์คํฌ('๋ชจ๋ '์ด๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์๋ค.)$ ls : ํ์ฌ ์์น์์ ์ด๋ํ ์ ์๋ ์์น๋ฅผ ์๋ ค์ค$ ls -l : ํ์ผ๋ค์ ํ์ค์ฉ ํ๊ธฐ$ ls -a : ๋ชจ๋ ํ์ผ ๋ํ๋ด๊ธฐ(์จ๊ธด ํ์ผ๊น์ง ๋ํ๋)$ cd ํด๋์ด๋ฆ/ : directory(ํด๋) ์ด๋$ mkdir ํด๋์ด๋ฆ/ : directory(ํด๋) ๋ง๋ค๊ธฐ (make directory์ ์ฝ์ด์ด๋ค.)$ pwd : ํ์ฌ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค$ touch ํ์ผ๋ช
: ํ์ผ ์์ฑ(text ๊ธฐ๋ฐ ํ์ผ๋ง ์์ฑ ๊ฐ๋ฅํ๋ค.)$ mv ํ์ผ๋ช
: ํ์ผ ์ด๋$ mv ๊ธฐ์กด-ํ์ผ๋ช
๋ฐ๊พธ๊ณ ์ถ์-์ด๋ฆ์-ํ์ผ๋ช
: ๊ธฐ์กด์ ํ์ผ๋ช
์ ๋ฐ๊พธ๊ณ ์ถ์ ์ด๋ฆ์ ํ์ผ๋ช
์ผ๋ก ๋ณ๊ฒฝ$ cp ํ์ผ๋ช
: ํ์ผ ๋ณต์ฌ$ rm ํ์ผ๋ช
: ํ์ผ ์ญ์ (ํด๋๋ ์ ๊ฑฐ ๋ถ๊ฐ๋ฅํ๋ค.)$ rm -r ํด๋๋ช
/ : ์์ ์๋ ๊ฒ์ ๋ชจ๋ ์ง์ฐ๊ณ ํด๋๋ ์ญ์ (์กฐ์ฌํด์ ์ฌ์ฉ!)$ rm -rf ํด๋๋ช
/ : ๊ฐ์ ์ญ์ (์กฐ์ฌํด์ ์ฌ์ฉ!)$ vi ํ์ผ๋ช
: vim์ผ๋ก ํ์ผ ์ด๊ธฐ$ cat ํ์ผ๋ช
: ํ์ผ์ ์ ํ ๋ด์ฉ ๋ณด๊ธฐํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๋ฐฉ๋ฒ๋ git init๊ณผ git clone์ผ๋ก ๋๋๋ค.
git init๋จผ์ , git init์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
git init์ ์์
๊ณต๊ฐ(local,์ปดํจํฐ)์์ ์์ํ์ฌ github(์๊ฒฉ์ ์ฅ์)๋ก ์์ค ์ฝ๋๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์
๋๋ค.
$ mkdir first-repo
$ cd first-repo
git init ๋ช
๋ น์ด๋ก local repository ์ญํ ์ ํ ์ ์๊ฒ ํด์ค๋ค.$git init
github์์ ์๋ก์ด repository๋ฅผ ์์ฑํ๊ณ , ๋ณต์ฌํ ์ฃผ์๋ฅผ local repository์ ๋ฑ๋กํ๋ค.
first-repo ํด๋์ ์ด๋ฆ์ ๊ฐ๊ฒ ๋ง๋ค์ด์ค๋ค.$ git remote add origin ๋ณต์ฌํ์ฃผ์์ ์ ์ฉ๋์๋์ง ํ์ธํ๋ค
$ git remote
$ git remote -v
$ touch README.md
$ vi README.md
vim์ผ๋ก README.md ํ์ผ์ด ์ด์ด์ก๋ค๋ฉด i๋ฅผ ๋๋ฌ insert mode๋ก ๋ฐ๊พผ ๋ค , ๋ด์ฉ์ ์์
ํ๊ณ ์๋ฃํ์๋ค๋ฉด escํค๋ฅผ ๋๋ฌ normal mode๋ก ๋น ์ ธ๋์ :wq๋ฅผ ์
๋ ฅํ์ฌ ์ ์ฅํ ๋ค vim์ ์ข
๋ฃํ๋ค.
5๋ฒ์ด ์๋ฃ๋์๋ค๋ฉด $ git status๋ฅผ ์
๋ ฅํ์ฌ ํ์ฌ ํ๋ก์ ํธ ์ํ๋ฅผ ํ์ธํ๋ค.
์ฌ์ง์ ๋ณด์ด๋ Untracked files: README.md๊ฐ ๋ณด์ธ๋ค๋ฉด ๋ค์ ์์
์ ํ ์ค๋น๊ฐ ๋ ๊ฒ์ด๋ค.
$ git add README.md ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ working directory์ ์ถ๊ฐ๋ ํ์ผ์ staging area๋ก ์ฎ๊ธด๋ค.
$ git add์๋ฃ ํ, $ git status๋ฅผ ์
๋ ฅํ์ฌ ํ์ฌ ์ํ๋ฅผ ํ์ธํ๋ค.
์ฌ์ง์ ๋ณด์ด๋ Changes to be committed ๋ฉ์ธ์ง๊ฐ ๋ณด์ธ๋ค๋ฉด commit์ ํ ์ค๋น๊ฐ ๋ ๊ฒ์ด๋ค.
$ git commit๋ฅผ ์
๋ ฅํ์ฌ commit์ ์งํํ์ฌ ์ค๋ค.
$ git config --global core.editor "vim"์ผ๋ก ์ค์ ํด ์ฃผ์๊ธฐ ๋๋ฌธ์ vim ์๋ํฐ๋ก commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ ์ ์๋ค.
i๋ฅผ ๋๋ฌ insert mode๋ก ๋ฐ๊พผ ๋ค , commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๊ณ escํค๋ฅผ ๋๋ฌ normal mode๋ก ๋น ์ ธ๋์ :wq๋ฅผ ์
๋ ฅํ์ฌ ์ ์ฅํ ๋ค vim์ ์ข
๋ฃํ๋ค.
vim์ด ์ด์ํ๊ฑฐ๋ ์ค์ ์ ํด์ฃผ์ง ์์์ ๊ฒฝ์ฐ
$ git commit -m "commit message๋ฅผ ์ ๋ ฅํด commit ๋ฉ์ธ์ง๋ฅผ ์ ๋ ฅํ ์ ์๋ค.
๋ชจ๋ ์์
์ด ๋๋ฌ๋ค๋ฉด $ git status๋ฅผ ์
๋ ฅํ์ฌ commit์ด ์ ๋์๋์ง ํ์ธํด ์ค๋ค.
์ฌ์ง๊ณผ ๊ฐ์ด Your branch is ahead of โorigin/mainโ by ์ซ์ commit๋ผ๋ ๋ฉ์ธ์ง๊ฐ ๋ณด์ธ๋ค๋ฉด ์๋ฃ๋ ๊ฒ์ด๋ค.
commit๊น์ง ์๋ฃํ์๋ค๋ฉด ์๊ฒฉ์ ์ฅ์(remote repository)๋ก push๋ฅผ ํด์ค๋ค.
$ git init์ผ๋ก ์ฐ๊ฒฐํ์ ์, ์๊ด๊ด๊ณ๊ฐ ๋ค๋ฅด๊ฒ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฏ๋ก $ git push -u origin main์ ์
๋ ฅํด ์๊ด๊ด๊ณ๋ฅผ ๊ฐ๊ฒ ํด์ค๋ค.
-u(upstream set)์ ๋ถ์ด๋ฉด ๊ฐ์ ์๊ด๊ด๊ณ ์ํ๋ก ๋ง๋ค์ด์ค๋ค.
-> '๋ค๋ฅธ ์กด์ฌ๋ฅผ ๊ฐ๊ฒ ํ๋ค'๊ณ ์ดํด
์ดํ๋ถํฐ๋, -u์์ด $ git push origin main์ ์
๋ ฅํ๋ฉด ๋๋ค.
prefix
- feat: featrues - ๊ธฐ๋ฅ ๊ฐ๋ฐ ๊ด๋ จ
- docs: documentations - ๋ฌธ์ ๊ด๋ จ
- conf: configurations - ํ๊ฒฝ ์ค์ ๊ด๋ จ
- test: test - test ๊ด๋ จ
- fix: bug-fix - ์๋ชป๋ ๊ธฐ๋ฅ ์์ ํ์ ์
- refactor: refactoring - ์ฝ๋ ๋ฆฌํํ ๋ง, ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ๋ฒ๊ทธ ์์ ์์ด ํ์ฌ ๊ตฌํ์ ๊ฐ์ ํ ๊ฒฝ์ฐ
- ci: Continuous Integration - ci๊ตฌ์ฑํ์ผ ๋ฐ ์คํฌ๋ฆฝํธ ๋ณ๊ฒฝ ์
- build: Build โ ์์คํ ๋๋ ์ธ๋ถ ์ข ์์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ์ฌํญ ๊ด๋ จ
- perf: Performance โ ์ฑ๋ฅ ๊ฐ์ ์
git clonegit clone์ github(์๊ฒฉ์ ์ฅ์)์์ ์์ํ์ฌ ์์
๊ณต๊ฐ(local,์ปดํจํฐ)๋ก ์์ค ์ฝ๋๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์
๋๋ค.
github์์ ์๋ก์ด repository๋ฅผ ์์ฑํ ํ, Clone ๋ฒํผ์ ๋๋ฌ ๋ํ๋ URL์ฃผ์๋ฅผ ๋ณต์ฌํ๋ค.
์๋ก์ด repository๋ฅผ ์์ฑํ ๋, README.md, .gitignore, LICENSE ํ์ผ์ ํจ๊ป ์์ฑํ๋ค.
- README.md
: ํ๋ก์ ํธ์ repository๋ฅผ ์ค๋ช ํ๋ ์ฑ ์ ํ์ง์ ๊ฐ์ ๋ฌธ์- .gitignore
- git ํ์ผ์ ์ถ์ ํ ๋, ํ์์๋ ํ์ผ์ด๋ ํด๋ ๋ฑ์ ์ถ์ ํ์ง ์๋๋ก ๋ช ์ํ๊ธฐ ์ํด ์์ฑํ๋ค.
- ํน์ ํ์ผ ํ์ฅ์๋ฅผ ๋ฌด์ํ๊ฑฐ๋ ์ด๋ฆ์ ํจํด์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ๋๋ ํน์ ์ด ๋๋ ํ ๋ฆฌ ์๋์ ๋ชจ๋ ํ์ผ์ ๋ฌด์ํ ์ ์๋ค.- LICENSE
: License๋ ๋ด๊ฐ ๋ง๋ค ๋์๋, ๋ฐฐํฌํ ๋์๋ ๊ฐ์ฅ ์ ๊ฒฝ ์จ์ผ ํ๋ ์ผ์ด๋ค.
- MIT License: ๋ชจ๋ ํ๋์ ์ ์ฝ์ด ์์ผ๋ฉฐ, ์ ์๊ถ์๋ ์ํํธ์จ์ด์ ๊ด๋ จํ ์ฑ ์์์ ์์ ๋กญ๋ค.
- Apache License: ํนํ๊ถ ๊ด๋ จ ๋ด์ฉ์ด ํฌํจ
- GNU General Public License: ๊ฐ์ฅ ๋ง์ด ์๋ ค์ ธ ์์ผ๋ฉฐ, ์์ค์ฝ๋ ์ฌ์ฉ์ ์๋ฌด์ฌํญ์ ๋ฐ๋์ ๋ฐ๋ผ์ผํ๋ค.
git bash์์ $ git clone ๋ณต์ฌํURL์ฃผ์๋ฅผ ์
๋ ฅํ์ฌ ์ค๋ค.
์ ํ์ผ์ ๋ง๋ค๊ณ ์์ ์ ์งํํ๋ค.
$ touch README.md
$ vi README.md
vim์ผ๋ก README.md ํ์ผ์ด ์ด์ด์ก๋ค๋ฉด i๋ฅผ ๋๋ฌ insert mode๋ก ๋ฐ๊พผ ๋ค , ๋ด์ฉ์ ์์
ํ๊ณ ์๋ฃํ์๋ค๋ฉด escํค๋ฅผ ๋๋ฌ normal mode๋ก ๋น ์ ธ๋์ :wq๋ฅผ ์
๋ ฅํ์ฌ ์ ์ฅํ ๋ค vim์ ์ข
๋ฃํ๋ค.
3๋ฒ์ด ์๋ฃ๋์๋ค๋ฉด $ git status๋ฅผ ์
๋ ฅํ์ฌ ํ์ฌ ํ๋ก์ ํธ ์ํ๋ฅผ ํ์ธํ๋ค.
์ฌ์ง์ ๋ณด์ด๋ Untracked files: README.md๊ฐ ๋ณด์ธ๋ค๋ฉด ๋ค์ ์์
์ ํ ์ค๋น๊ฐ ๋ ๊ฒ์ด๋ค.
$ git add README.md ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ working directory์ ์ถ๊ฐ๋ ํ์ผ์ staging area๋ก ์ฎ๊ธด๋ค.
$ git add์๋ฃ ํ, $ git status๋ฅผ ์
๋ ฅํ์ฌ ํ์ฌ ์ํ๋ฅผ ํ์ธํ๋ค.
์ฌ์ง์ ๋ณด์ด๋ Changes to be committed ๋ฉ์ธ์ง๊ฐ ๋ณด์ธ๋ค๋ฉด commit์ ํ ์ค๋น๊ฐ ๋ ๊ฒ์ด๋ค.
$ git commit๋ฅผ ์
๋ ฅํ์ฌ commit์ ์งํํ์ฌ ์ค๋ค.
$ git config --global core.editor "vim"์ผ๋ก ์ค์ ํด ์ฃผ์๊ธฐ ๋๋ฌธ์ vim ์๋ํฐ๋ก commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ ์ ์๋ค.
i๋ฅผ ๋๋ฌ insert mode๋ก ๋ฐ๊พผ ๋ค , commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๊ณ escํค๋ฅผ ๋๋ฌ normal mode๋ก ๋น ์ ธ๋์ :wq๋ฅผ ์
๋ ฅํ์ฌ ์ ์ฅํ ๋ค vim์ ์ข
๋ฃํ๋ค.
commit์ด ์๋ฃ ๋์๋ค๋ฉด ์๊ฒฉ์ ์ฅ์(remote repository)๋ก pushํ๋ค.
$ git push origin main
์ฌ๊ธฐ์
git init๊ณผ ๋ค๋ฅธ ์
:git clone์ ์๊ฒฉ์ ์ฅ์์์ ๋จผ์ ๋์ด์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์๊ฒฉ์ ์ฅ์์ main ๋ธ๋์น์ local์ main ๋ธ๋์น๋ ๊ฐ์ ์๊ด๊ด๊ณ์ ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก,-uflag๋ฅผ ๋ถ์ด์ง ์์๋ ๋๋ค.