๊ฐœ๋ฐœํ™˜๊ฒฝ/Git

[Git] CLI ๋ช…๋ น์–ด ์ •๋ฆฌ - ๊ณ„์† ์ถ”๊ฐ€

Ella_K 2022. 12. 26. 20:59

๐Ÿ”ฅ๋ฒ„์ „ ํ™•์ธ

$ git --version

๐Ÿ”ฅconfig

core.autocrlf

$ git config –global core.autocrlf true
์ปค๋ฐ‹ํ•  ๋•Œ CRLF๋ฅผ LF๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๊ณ , ์ฒดํฌ์•„์›ƒ ํ•  ๋•Œ์—๋Š” ๋ฐ˜๋Œ€๋กœ LF๋ฅผ CRLF๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ด
์œˆ๋„์šฐ์—์„œ๋งŒ ์‚ฌ์šฉ

 

$ git config –global core.autocrlf input
์ปค๋ฐ‹ํ•  ๋•Œ CRLF๋ฅผ LF๋กœ ๋ณ€ํ™˜
๋ฆฌ๋ˆ…์Šค์™€ ๋งฅ์—์„œ ์‚ฌ์šฉ

 

$ git config –global core.autocrlf false
default ์„ค์ •
CRLF ๋ฅผ ์ผ๋“  LF ๋ฅผ ์ผ๋“  git ์€ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ผ ๊ทธ๋Œ€๋กœ checkin, checkout 

 

์‚ฌ์šฉ์ž ์ •๋ณด ์„ค์ •

$ git config --global user.name "(๋ณธ์ธ ์ด๋ฆ„)"
$ git config --global user.email "(๋ณธ์ธ ์ด๋ฉ”์ผ)"

ํ™•์ธ

$ git config --global user.name
$ git config --global user.email

 

๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋ช… ๋ณ€๊ฒฝ

$ git config --global init.defaultBranch main

๐Ÿ”ฅinit

git ๊ด€๋ฆฌ ์‹œ์ž‘

$ git init

๐Ÿ”ฅstatus

ํŒŒ์ผ ์ƒํƒœ ํ™•์ธ

$ git status

๐Ÿ”ฅadd

working directory์— ์žˆ๋Š” ํŠน์ • ํŒŒ์ผ staging area๋กœ ์ด๋™

$ git add (ํŒŒ์ผ๋ช…)

 

working directory์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ staging area๋กœ ์ด๋™

$ git add .

๐Ÿ”ฅcommit 

vi ๋ชจ๋“œ

$ git commit
 Vi ์ž…๋ ฅ ๋ชจ๋“œ๋กœ ์ง„์ž… (Vim ์ฐธ๊ณ )

 

commit ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ 

git commit -m "(์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€)"

 

add์™€ commit ํ•œ๋ฒˆ์—

git commit -am "(์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€)"
์ƒˆ๋กœ ์ถ”๊ฐ€๋œ(untracked) ํŒŒ์ผ์ด ์—†์„ ๋•Œ๋งŒ ๊ฐ€๋Šฅ

๐Ÿ”ฅlog

ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์—์„œ์˜ ๋‚ด์—ญ๋งŒ ํ™•์ธ

$ git log

 

์—ฌ๋Ÿฌ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์—ญ ํ™•์ธ

$ git log --all --decorate --oneline --graph

๐Ÿ”ฅreset

ํŠน์ • ์‹œ์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

$ git reset --(option) (๋Œ์•„๊ฐˆ ์ปค๋ฐ‹ ํ•ด์‹œ)
option:
--soft : repository์—์„œ staging area๋กœ ์ด๋™
--mixed (default) : repository์—์„œ working directory๋กœ ์ด๋™
--hard: ์ˆ˜์ •์‚ฌํ•ญ ์™„์ „ํžˆ ์‚ญ์ œ

 

reset ํ•˜๊ธฐ ์ „ ์‹œ์ ์œผ๋กœ ๋ณต์›

$ git reset --(option)

 

HEAD๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ๋‹จ๊ณ„๋กœ reset

$ git reset HEAD~2 --hard

๐Ÿ”ฅrevert

$ git revert (๋˜๋Œ๋ฆด ์ปค๋ฐ‹ ํ•ด์‹œ)
$ git revert --no-commit (๋˜๋Œ๋ฆด  ์ปค๋ฐ‹ ํ•ด์‹œ)
์ปค๋ฐ‹ํ•˜์ง€ ์•Š๊ณ  revert
๋‹ค๋ฅธ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ์›ํ•˜๋Š” ์‹œ์ ์— ํ•จ๊ป˜ ์ปค๋ฐ‹ํ•œ๋‹ค.

๐Ÿ”ฅrestore

ํŒŒ์ผ์„ staging area์—์„œ working directory๋กœ ์ด๋™

git restore --staged (ํŒŒ์ผ๋ช…)

 

ํŒŒ์ผ์„ working directory์—์„œ ์ œ๊ฑฐ

git restore (ํŒŒ์ผ๋ช…)

๐Ÿ”ฅbranch

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

$ git branch (๋ธŒ๋žœ์น˜๋ช…)

 

๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ํ™•์ธ (๋กœ์ปฌ๋งŒ)

$ git branch

 

๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ๋ชจ๋‘ ํ™•์ธ (๋กœ์ปฌ, ์›๊ฒฉ)

$ git branch --all

 

๋ธŒ๋žœ์น˜ ์‚ญ์ œ

$ git branch -d (์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๋ช…)

 

๋ธŒ๋žœ์น˜ ๊ฐ•์ œ ์‚ญ์ œ

$ git branch -D (๊ฐ•์ œ์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๋ช…)

 

๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ

$ git branch -m (๊ธฐ์กด ๋ธŒ๋žœ์น˜๋ช…) (์ƒˆ ๋ธŒ๋žœ์น˜๋ช…)

๐Ÿ”ฅswitch

๋ธŒ๋žœ์น˜ ์ด๋™

$ git switch (์ด๋™ํ•  ๋ธŒ๋žœ์น˜๋ช…)

 

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ด๋™

$ git switch -c (์ƒˆ ๋ธŒ๋žœ์น˜๋ช…)

 

๋กœ์ปฌ์— ์›๊ฒฉ๊ณผ ๊ฐ™์€ ์ด๋ฆ„ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜์—ฌ ์—ฐ๊ฒฐ ํ›„ switch

git switch -t origin/(๋ธŒ๋žœ์น˜๋ช…)

๐Ÿ”ฅmerge

$ git merge (๋จธ์ง€ํ•  ๋ธŒ๋žœ์น˜๋ช…)
์ง€์ •ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋กœ merge
merge๋„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์ด๋ฏ€๋กœ mergeํ•˜๊ธฐ ์ „ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์˜ ๋งˆ์ง€๋ง‰ ์‹œ์ ์œผ๋กœ resetํ•ด์„œ ๋˜๋Œ๋ฆฌ๊ธฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

Ex.
ํ˜„์žฌ ๋ธŒ๋žœ์น˜: main
$ git merge feature/post
feature/post ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜๋กœ merge

 

$ git merge --abort
merge ์‹œ ์ถฉ๋Œ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ถฉ๋Œ ํ•ด๊ฒฐ์ด ์–ด๋ ค์šธ ๋•Œ merge ์ค‘๋‹จ

๐Ÿ”ฅrebase

$ git rebase (์žฌ๋ฐฐ์น˜ ๊ฒฐ๊ณผ ๋ธŒ๋žœ์น˜๋ช…)
merge์™€ ๋ฐ˜๋Œ€
Ex.
ํ˜„์žฌ ๋ธŒ๋žœ์น˜: feature/post
$ git rebase main
feature/post ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜๋กœ rebase

 

์ถฉ๋Œ ์‹œ ํ•ด๊ฒฐ ์–ด๋ ค์šธ ๊ฒฝ์šฐ rebase ์ค‘๋‹จ

$ git rebase --abort

 

์ถฉ๋Œ ์‹œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ

1. ์ถฉ๋Œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•œ๋’ค git add . ํ•œ๋‹ค. 

2. rebase ๊ณ„์†

git rebase --continue

์ถฉ๋Œ์ด ๋ชจ๋‘ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ 1,2๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.


๐Ÿ”ฅremote

github repository ์ƒ์„ฑ ํ›„ ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ

$ git remote add (์›๊ฒฉ ์ด๋ฆ„) (์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ)
์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•  ๋กœ์ปฌ ์œ„์น˜์—์„œ ์ˆ˜ํ–‰
์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„์€ ํ”ํžˆ orgin์„ ์‚ฌ์šฉ
$ git branch -M main
$ git push -u origin main
๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ์ปค๋ฐ‹ ๋‚ด์—ญ๋“ค ์›๊ฒฉ์œผ๋กœ push
-u ๋˜๋Š” --set-upstream : ํ˜„์žฌ ๋ธŒ๋žœ์น˜์™€ ๋ช…์‹œ๋œ ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ๊ธฐ๋ณธ ์—ฐ๊ฒฐ

 

์›๊ฒฉ ๋ชฉ๋ก ํ™•์ธ

$ git remote
$ git remote -v

 

์›๊ฒฉ ์ง€์šฐ๊ธฐ

git remote remove (origin ๋“ฑ ์›๊ฒฉ ์ด๋ฆ„)
๋กœ์ปฌ ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ฒฐ๋งŒ ์—†์• ๋Š” ๊ฒƒ์œผ๋กœ GitHub์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” ์ง€์›Œ์ง€์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ”ฅclone

์›๊ฒฉ ์ €์žฅ์†Œ clone

git clone (์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ)
git๊นŒ์ง€ ๋ชจ๋‘ clone

๐Ÿ”ฅpush

์›๊ฒฉ์— ์ปค๋ฐ‹ ์˜ฌ๋ฆฌ๊ธฐ

$ git push

 

๊ฐ•์ œ push

$ git push --force

 

์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ push

git push -u (์›๊ฒฉ ์ด๋ฆ„) (๋ธŒ๋žœ์น˜๋ช…)
์›๊ฒฉ์— ๋กœ์ปฌ๊ณผ ๋™์ผ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๋ฉด์„œ push

 

์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

$ git push (์›๊ฒฉ ์ด๋ฆ„) --delete (์›๊ฒฉ์˜ ๋ธŒ๋žœ์น˜๋ช…)

๐Ÿ”ฅpull

์›๊ฒฉ์— ์ปค๋ฐ‹ ๋‹น๊ฒจ์˜ค๊ธฐ

$ git pull

 

push ํ•  ๊ฒƒ์ด ์žˆ๋Š”๋ฐ pull ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ -  mergeํ•˜๊ธฐ

$ git pull --no-rebase

 

push ํ•  ๊ฒƒ์ด ์žˆ๋Š”๋ฐ pull ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ -  rebaseํ•˜๊ธฐ

$ git pull --rebase

๐Ÿ”ฅfetch

์›๊ฒฉ ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ

$ git fetch
fetch: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ปค๋ฐ‹์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•œ๋‹ค.
pull: ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ปค๋ฐ‹์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์™€ merge๋˜๋Š” rebaseํ•œ๋‹ค. 

๐Ÿ”ฅrm

$ git rm (ํŒŒ์ผ๋ช…)
ํŒŒ์ผ์˜ ์‚ญ์ œ๊ฐ€ staging area์— ์žˆ๋‹ค.

๐Ÿ”ฅmv

$ git mv (ํŒŒ์ผ๋ช…) (๋ณ€๊ฒฝํ•  ํŒŒ์ผ๋ช…)
ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ์ด staging area์— ์žˆ๋‹ค.

๐Ÿ”ฅcheckout

HEAD ์•ž ๋’ค ์ด๋™ํ•˜๊ธฐ

$ git checkout HEAD^
$ git checkout HEAD~~
$ git checkout HEAD^2
HEAD : ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ๊ฐ€์žฅ ๋ ์ง€์ 
^ ๋˜๋Š” ~์„ ์ด์šฉํ•˜์—ฌ ๊ฐฏ์ˆ˜ ๋งŒํผ ์ด์ „์œผ๋กœ ์ด๋™
์ƒˆ๋กœ์šด ์ต๋ช…์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ ๋‹ค.
ํŠน์ • ์ง€์ ์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

 

commit ํ•ด์‹œ๋ฅผ ์ด์šฉํ•ด ์ด๋™

$ git checkout (์ปค๋ฐ‹ํ•ด์‹œ)

 

์ด๋™์„ ํ•œ๋‹จ๊ณ„ ๋˜๋Œ๋ฆฌ๊ธฐ

$ git checkout -

 

์›๊ฒฉ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™

$ git checkout (์›๊ฒฉ ์ด๋ฆ„)/(๋ธŒ๋žœ์น˜๋ช…)
$ git checkout origin/main
$ git checkout origin/new-branch
git fetchํ›„ git checkout origin/main์œผ๋กœ ํ•˜๋ฉด ์›๊ฒฉ ๋ธŒ๋žœ์น˜์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 


Source

https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EA%B9%83/dashboard

 

์ œ๋Œ€๋กœ ํŒŒ๋Š” Git & GitHub - by ์–„์ฝ” - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์ฝ”์•Œ๋ชป๋„ ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์นœ์ ˆํ•˜๊ณ  ์‰ฌ์šด ๊ฐ•์ขŒ! ํ˜„์—… ๊ฐœ๋ฐœ์ž๋Š” Git ๋ฐ•์‚ฌ๋กœ ๋“ค์–ด์ฃผ๋Š” ๋ํŒ์™• ๊ฐ•์ขŒ!, - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ...

www.inflearn.com