TIL 11 | Git, GitHub

saneeeeeeee_Yaยท2021๋…„ 4์›” 6์ผ
0

๐Ÿ›ธ

๋ชฉ๋ก ๋ณด๊ธฐ
11/25
post-thumbnail

https://git-scm.com/book/ko/v2

Git : ์ปดํ“จํ„ฐ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž๋“ค ๊ฐ„์— ํ•ด๋‹น ํŒŒ์ผ๋“ค์˜ ์ž‘์—…์„ ์กฐ์œจํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค

Git ๋ช…๋ น์–ด

git status ํŒŒ์ผ์˜ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ

git log git ํžˆ์Šคํ† ๋ฆฌ ์กฐํšŒํ•˜๊ธฐ
option

  1. --hard [commit log๋ฒˆํ˜ธ] : ๋Œ์•„๊ฐ€๋ ค๋Š” ์ด๋ ฅ์ดํ›„์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ง€์›Œ ๋ฒ„๋ฆฐ๋‹ค.
  2. --soft [commit log๋ฒˆํ˜ธ] : ๋Œ์•„๊ฐ€๋ ค ํ–ˆ๋˜ ์ด๋ ฅ์œผ๋กœ ๋˜๋Œ์•„ ๊ฐ”์ง€๋งŒ ๋‹ค์‹œ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ๋‹ค(stage์— ๋‚จ์•„์žˆ๋‹ค)
  3. --mixed(๊ธฐ๋ณธ) : ์ดํ›„์— ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋Š” ๋‚จ์•„์žˆ์ง€๋งŒ, ์ธ๋ฑ์Šค๋Š” ์ดˆ๊ธฐํ™”๋œ๋‹ค
    git revert [commit log๋ฒˆํ˜ธ] : commit์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‚ด์šฉ์„ ๋ณต๊ตฌํ•œ๋‹ค

git branch ๋กœ์ปฌ branch ๋ณด๊ธฐ
git branch -a๋กœ์ปฌ/์›๊ฒฉ branch ๋ณด๊ธฐ
git branch [branch] branch ๋งŒ๋“ค๊ธฐ
git checkout [branch] branch๋กœ ๋“ค์–ด๊ฐ€๊ธฐ
git checkout -b [branch] branch ๋ณ‘ํ•ฉ
git checkout -d [new branch] [์›๊ฒฉ๋ช…/ํ•ด๋‹น branch] ์ƒˆ branch์— ํ•ด๋‹น branch ์ ์šฉ
git merge [branch]
git log --graph --all --decorate ์‹œ๊ฐํ™”๋œ ์ž‘์—…๋‚ด์—ญ
git rebase branch ์žฌ๋ฐฐ์น˜
git branch -D [branch] branch ์ง€์šฐ๊ธฐ
git config -- global user.name '์‚ฌ์šฉ์ž ์ด๋ฆ„' ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋“ฑ๋ก
git config -- global user.email '์‚ฌ์šฉ์ž email' ์‚ฌ์šฉ์ž email ๋“ฑ๋ก
git config --global -e ์—๋””ํ„ฐ ๋“ฑ๋ก
git config --global alias.[๋ณ€๊ฒฝ ๋ช…๋ น์–ด] [๊ธฐ์กด ๋ช…๋ น์–ด] ๋ช…๋ น์–ด ๋ณ€๊ฒฝ
git config --h ์ •๋ณด ํ™•์ธ
git clone [url] ์ €์žฅ์†Œ clone
git fetch ๊นƒ ๋ณ€๊ฒฝ์‚ฌํ•ญ
git pull [์›๊ฒฉ๋ช…] [branch]
git push [์›๊ฒฉ๋ช…] [branch]
git push -d [์›๊ฒฉ๋ช…] [branch] ์›๊ฒฉ์˜ branch ์‚ญ์ œ
git diff ํŒŒ์ผ ๋น„๊ตํ•˜๊ธฐ,์ˆ˜์ •๋‚ด์šฉ
git diff --staged Staging Area์— ๋„ฃ์€ ํŒŒ์ผ ๋น„๊ต

Work Flow


Working Directory : ์‰ฝ๊ฒŒ ์‹œ๊ฐํ™”๋œ Tree
Index : ๋ฐ”๋กœ ๋‹ค์Œ์— ์ปค๋ฐ‹ํ•  ๊ฒƒ
HEAD : ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

git init

git add

1. v1

2. v2

git commit

1. v1

2. v2

git reset

git history

1. HEAD ์ด๋™
git reset 9e5e6a4

2. Index ์—…๋ฐ์ดํŠธ

3. working directory ์—…๋ฐ์ดํŠธ

๊ฒฝ๋กœ๋ฅผ ์ฃผ๊ณ  Reset ํ•˜๊ธฐ

file.text๋ฅผ Stage์—์„œ ์ œ๊ฑฐํ•œ๋‹ค
git add file.txt๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ๋ช…๋ น์–ด

ํŠน์ • ์ปค๋ฐ‹์„ ๋ช…์‹œํ•˜๋ฉด Git์€ โ€œ`HEAD์—์„œ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š”โ€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ์ปค๋ฐ‹์—์„œ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ๋‹ค.

ํ•ฉ์น˜๊ธฐ(Squash)
์—ฌ๋Ÿฌ commit์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๊ธฐ

git history

git reset --soft HEAD~2 ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ HEAD ํฌ์ธํ„ฐ๋ฅผ ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค

git commit

git checkout

git checkout [branch]
๊ฒฝ๋กœ ์—†์Œ

  1. reset --hard ๋ช…๋ น๊ณผ๋Š” ๋‹ฌ๋ฆฌ git checkout ๋ช…๋ น์€ ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃฌ๋‹ค
  2. reset ๋ช…๋ น์€ HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” branch๋ฅผ ์›€์ง์ด์ง€๋งŒ checkout ๋ช…๋ น์€ HEAD ์ž์ฒด๋ฅผ ๋‹ค๋ฅธ branch๋กœ ์˜ฎ๊ธด๋‹ค

๊ฒฝ๋กœ ์žˆ์Œ

git reset --hard [branch] file์™€ ๊ฐ™๋‹ค

์š”์•ฝ

HEADINDEXWorking directoryWD safe?
commit Level
reset --soft [commit]REFโŒโŒโญ•
reset [commit]REFโญ•โŒโญ•
reset --hard [commit]REFโญ•โญ•โŒ
checkout [commit]HEADโญ•โญ•โญ•
File Level
reset [commit] โŒโญ•โŒโญ•
checkout [commit] โŒโญ•โญ•โŒ
profile
๐Ÿœhttps://action2thefuture.github.io/๐Ÿœ

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

Powered by GraphCDN, the GraphQL CDN