Git CLI

RHUK2ยท2021๋…„ 11์›” 24์ผ
0

Git

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๐Ÿ“ข 22/05/20 ๋ณต์Šต


๐Ÿ“š Reference


Smart Tiger's blog,https://seamless.tistory.com/43
LainyZine,https://www.lainyzine.com/ko/article/git-stash-usage-saving-changes-without-commit/

์ฐธ๊ณ  ์‚ฌ์ดํŠธ์— ๋‚ด์šฉ์„ ๊ฐœ์ธ์ ์œผ๋กœ ๋ณต์Šตํ•˜๊ธฐ ํŽธํ•˜๋„๋ก ์žฌ๊ตฌ์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
์ž์„ธํ•œ ์„ค๋ช…์€ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ๋ฅผ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


์ž์ฃผ ์“ฐ๋Š” git ๋ช…๋ น์–ด


git init

ํ˜„์žฌ ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ git ์ €์žฅ์†Œ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
.git ํŒŒ์ผ์—๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ณ , ํ˜„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅ์ผ€ํ•œ๋‹ค.

$ git init
$ ls -a # ".git" ํŒŒ์ผ ์ƒ์„ฑ ํ™•์ธ

git config

๊ธ€๋กœ๋ฒŒ ์˜ต์…˜์„ ์ ์šฉํ•˜๋ฉด ~/.gitconfig ํŒŒ์ผ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์˜ <current directory>/.git/config ํŒŒ์ผ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋กœ์ปฌ์—์„œ ์ปค๋ฐ‹ํ•  ๋•Œ ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
https://www.lainyzine.com/ko/article/useful-git-settings-when-using-github-multi-account/

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

$ cat ~/.gitconfig
# [user]
# name = Your Name
# email = you@example.com

$ git config user.name <user name>
$ git config user.email <user email>

$ cat <current directory>/.git/config
# [user]
# name = Your Name
# email = you@example.com

# ์ •๋ณด ํ™•์ธ
$ git config --global user.name
$ git config --global user.email
$ git config user.name
$ git config user.email

# ์ •๋ณด ์‚ญ์ œ
$ git config --global --unset user.name
$ git config --global --unset user.email
$ git config --unset user.name
$ git config --unset user.email

git remote

push ๋˜๋Š” pull์„ ํ•˜๊ธฐ ์œ„ํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

$ git remote -v
$ git remote add <remote name> <url>
$ git remote remove <remote name>
$ git remote show <remote name> # ๋ฆฌ๋ชจํŠธ ๋ธŒ๋žœ์น˜์™€ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
$ git remote prune <remote name> # ๋ฆฌ๋ชจํŠธ ๋ธŒ๋žœ์น˜์˜ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฐธ์กฐ๋ฅผ ์ง€์šด๋‹ค.

git pull

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜จ ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ์ถฉ๋Œ ์ฒดํฌ๋ฅผ ํ•ด์ค€๋‹ค.

$ git pull <remote name>
$ git pull <remote name> <branch name> # ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ•œ๋ฒˆ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.

$ git fetch <remote name> <branch name>
$ git merge FETCH_HEAD

git fetch

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

$ git fetch <remote name> <branch name>

git merge

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ์ถฉ๋Œ ์ฒดํฌ๋ฅผ ํ•ด์ค€๋‹ค.

$ git merge FETCH_HEAD

git clone

์›๊ฒฉ ์ €์žฅ์†Œ์˜ git ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

$ git clone <url> # ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ•œ๋ฒˆ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.

$ git init
$ git remote add origin <url>
$ git pull origin master
$ git clone <url> <folder name> # ํด๋”๋ช… ์ง€์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

git log

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

$ git log

git status

ํ˜„์žฌ ์›Œํฌํ”Œ๋ ˆ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

$ git status

git add

์›Œํฌํ”Œ๋ ˆ์ด์Šค์—์„œ ์ž‘์—…ํ•˜๋˜ ๋‚ด์šฉ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

$ git add . # ์ˆ˜์ •ํ•œ ํŒŒ์ผ ์ „๋ถ€๋ฅผ ๋„˜๊ธด๋‹ค.

git restore

์ˆ˜์ •ํ•œ ๋‚ด์šฉ์„ ๋˜๋Œ๋ฆด ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

$ git restore .

git commit

์Šคํ…Œ์ด์ง• ์˜์—ญ์˜ ๋‚ด์šฉ์— ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

$ git commit -m "message" # ๋ฉ”์„ธ์ง€ ์ž‘์„ฑ
$ git commit --amend -m "message" # ๋ฉ”์„ธ์ง€ ์ˆ˜์ •

git push

๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋‚ด์šฉ์„ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

$ git push <remote name> <branch name>
$ git push -u(--set-upstream) <remote name> <branch name> # -u ์˜ต์…˜์„ ํ†ตํ•ด ๋‚ด์šฉ์„ ๋„˜๊ฒจ์ค„ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ง€์ •ํ•ด๋‘๋ฉด ๋‹ค์Œ ํ‘ธ์‰ฌ๋ถ€ํ„ฐ๋Š” git push๋งŒ์œผ๋กœ ๋ชฉ์ ์ง€๋ฅผ ์ฐพ์•„๊ฐ„๋‹ค.

git reset

์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ž‘์—… ๋‚ด์šฉ์ด๋‚˜ ์ปค๋ฐ‹ ์ด๋ ฅ์„ ๋˜๋Œ๋ฆด ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ผ๊ฐ„ ์ƒํƒœ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

$ git reset # ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ž‘์—… ๋‚ด์šฉ์„ ๋˜๋Œ๋ฆฐ๋‹ค.
$ git reset --soft HEAD^ or <commit id> # ์ปค๋ฐ‹๋œ ๋‚ด์šฉ์„ ์Šคํ…Œ์ด์ง• ์˜์—ญ์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.
$ git reset --mixed HEAD^ or <commit id> # ์ปค๋ฐ‹๋œ ๋‚ด์šฉ์„ ์›Œํฌํ”Œ๋ ˆ์ด์Šค๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.
$ git reset --hard HEAD^ or <commit id> # ์ปค๋ฐ‹๋œ ๋‚ด์šฉ ๋ฐ ์ž‘์—… ์ค‘์ด๋˜ ๋‚ด์šฉ์„ ์ œ๊ฑฐํ•œ๋‹ค.

git revert

์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ผ๊ฐ„ ์ปค๋ฐ‹ ์ด๋ ฅ์„ ๋˜๋Œ๋ฆด ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋˜๋Œ๋ฆฐ ์ด๋ ฅ์„ ๋‚จ๊ธด๋‹ค.

$ git revert HEAD^ or <commit id>

git branch

๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ๋ฐ ์ƒ์„ฑ, ์ œ๊ฑฐํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

$ git branch -v
$ git branch -a
$ git branch -m <old branch name> <new branch name>
$ git branch -d|-D <branch name>
$ git branch <branch name>

git switch

๋ธŒ๋žœ์น˜ ์ด๋™ ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.

$ git switch <branch name>
$ git switch - # checkout์œผ๋กœ ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ์ด๋™ ์‹œ ์›๋ž˜ ๋ธŒ๋žœ์น˜๋กœ ๋Œ์•„์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

git checkout

ํŠน์ • ์ปค๋ฐ‹ ์ด๋ ฅ์œผ๋กœ ์ด๋™ ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.

$ git checkout <commit number>

git cherry-pick

๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ํŠน์ • ์ปค๋ฐ‹์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

$ git cherry-pick <commit number>
$ git cherry-pick --quit # ์ฒด๋ฆฌํ”ฝ ๋๋‚ด๊ธฐ

git stash

์ž‘์—… ๋„์ค‘ ๋‹ค๋ฅธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ž‘์—…ํ•˜๋˜ ๊ฑธ ๋‹ค๋ฅธ ์žฅ์†Œ์— ๋ณด๊ด€ํ•ด๋†“๊ณ  ์š”์ฒญํ•œ ์ž‘์—…์ด ๋๋‚˜๋ฉด ๊ธฐ์กด ์ž‘์—…์„ ๋‹ค์‹œ ๊บผ๋‚ด์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์›Œํฌํ”Œ๋ ˆ์ด์Šค์™€ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์žˆ๋Š” ์ˆ˜์ • ๋‚ด์šฉ๋“ค์„ ์˜ฎ๊ธด๋‹ค.

$ git stash # ์ž‘์—…ํ•˜๋˜ ๋‚ด์šฉ์„ ๋‹ค๋ฅธ ์žฅ์†Œ์— ๋ณด๊ด€ํ•œ๋‹ค.
$ git stash -u # Untracked files๋„ ํ•จ๊ป˜ ์˜ฎ๊ฒจ์ค€๋‹ค.
$ git stash -k # staged files๋ฅผ ์ œ์™ธํ•˜๊ณ  ์˜ฎ๊ฒจ์ค€๋‹ค.
$ git stash save -m <message> # ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ๋ณด๊ด€ํ•œ๋‹ค.
$ git stash list # ๋ณด๊ด€ํ•œ ๋‚ด์šฉ์˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค€๋‹ค.
$ git stash pop # ๋ณด๊ด€ํ•œ ๋‚ด์šฉ์„ ์›Œํฌํ”Œ๋ ˆ์ด์Šค๋กœ ๊บผ๋‚ด์˜จ๋‹ค.
$ git stash pop --index # ๋ณด๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๊บผ๋‚ด์˜จ๋‹ค.(์Šคํ…Œ์ด์ง• ์˜์—ญ)
$ git stash drop # ๋ณด๊ด€ํ•œ ๋‚ด์šฉ์„ ์ œ๊ฑฐํ•œ๋‹ค.
profile
์ƒ๊ฐ ๋งŽ์ด ํ•˜์ง€ ์•Š๊ธฐ ๐Ÿ˜Ž

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด