GitHub 101 ๐ŸŽˆ & Git Command

Yubin's velog ! ยท2023๋…„ 9์›” 19์ผ

Git 101 ๐Ÿ˜Ž

๋ชฉ๋ก ๋ณด๊ธฐ
7/8
post-thumbnail

Remote Respository ๋งŒ๋“ค๊ธฐ

  • create respository
  • ํ•˜๊ธฐ์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๋Š”๋ฐ, GitHub์˜ remote repository์™€ local repository์˜ ์ด๋ฆ„์ด ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•  ํ•„์š”๋Š” ์—†์Œ
  • Remote Repository(GitHub)์™€ local Repository์˜ ๊ด€๊ณ„

๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ --> ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์˜ฎ๊ธฐ๊ธฐ

  • ๋‚˜์˜ ๊ฒฝ์šฐ ๋กœ์ปฌ์€ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์ƒํ™ฉ์ด๋ผ ๋‘๋ฒˆ์งธ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ

git push

  • ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•œ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

  • ์—ฌ๊ธฐ์„œ ๋ฌธ๋“ git push๋ฅผ ๋ชจ๋‘๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์งˆ๋ฌธ์ด ์ƒ๊ธฐ๋Š”๋ฐ, ํ‘ธ์‰ฌ๋Š” ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ฃผ์ธ๋งŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด default! ๋งŒ์•ฝ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋„ ๊ฐ™์ด push๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— collaborator ์„ค์ •์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.


git pull

  • ๋ฆฌ๋ชจํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ”๋€ ๋‚ด์šฉ์„ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋„ ๋ฐ˜์˜ํ•˜๊ธฐ
  • Remote Repository --> Local Repository ๋ฐ˜์˜ํ•˜๋Š” ๊ณผ์ •
  • ์ด์Šˆ์—†์ด pull์ด ์ง„ํ–‰์ด ๋˜๋ฉด, ํ•˜๊ธฐ์™€ ๊ฐ™์ด ์ด๋™๊ณผ์ •์˜ ๋กœ๊ทธ๊ฐ€ ๋ฐœ์ƒ

์š”์•ฝํ•˜์ž๋ฉด ํ•˜๊ธฐ์™€ ๊ฐ™์ด ๋„์‹ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค ! ๐ŸŽจ

๋ฆฌํฌํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” (๋™์ผํ•œ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ), ํฌ๊ฒŒ ์•ˆ์ •์„ฑ๊ณผ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ํ˜‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด๋‹ค.


git clone : GitHub project์˜ repository ๋ณต์ œ ๐ŸŽ

๊ด€์‹ฌ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋‚˜์˜ค๋Š” ํ”Œ์ ์˜ code ๋“ค์–ด๊ฐ€์„œ clone ์‚ฌ์ดํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

  • ํ˜„์žฌ git์— ์ž์‹ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์žˆ๋Š” ์ƒํƒœ์—์„œ ํด๋ก ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ”„๋กœ์ ํŠธ๋ผ๋ฆฌ ์—‰ํ‚ค๊ธฐ์— ๋ฐ˜๋“œ์‹œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‚˜์™€์„œ ์ง„ํ–‰ >> git clone ๋ณต์‚ฌํ•œ ์ฃผ์†Œ

git log : ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ•˜์˜€๋˜ ์ปค๋ฐ‹ ์ด๋ ฅ(commit history)์„ ๋ณด์—ฌ์คŒ

  • ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹์ด ์œ„์— ์žˆ๊ณ , ์˜ค๋ž˜๋œ ์ปค๋ฐ‹์ด ์•„๋ž˜์— ์œ„์น˜ํ•จ
  • Git Commit : Git์€ ๊ฐ commit์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ๊ฐ์˜ ID๋ฅผ ๋ถ€์—ฌ (= commit hash)

๋ณดํ†ต์˜ git log์—์„œ๋Š” git commit / author / Data / Commit message ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์คŒ


์กฐ๊ธˆ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” git log --prettry=oneline ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค :)
Commit ID์™€ Commit message ๊ฐ€ ํ•˜๊ธฐ์ฒ˜๋Ÿผ ํ•œ์ค„๋กœ ์˜ˆ์˜๊ฒŒ ๋ณด์—ฌ์ง„๋‹ค !

-> ์ด 5๋ฒˆ์˜ ์ปค๋ฐ‹ ์•„์ด๋””๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ฏธ๋ฃจ์–ด ๋ณด์–ด, 5๋ฒˆ์˜ commit์„ ์ง„ํ–‰ํ•˜์˜€์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค :)


git show Commit_ID

  • ์–ด๋–ค ๋ถ€๋ถ„์ด ๋‹ฌ๋ผ์กŒ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์คŒ
  • git show [์ปค๋ฐ‹ ์•„์ด๋””]๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ์ปค๋ฐ‹ ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ์ปค๋ฐ‹์—์„œ ์–ด๋–ค ๋ณ€ํ™”(์–ด๋–ค ํŒŒ์ผ์ด ์ƒ๊ธฐ๊ณ , ๊ธฐ์กด ํŒŒ์ผ์—์„œ ์–ด๋–ค ๋ถ€๋ถ„์ด ์ˆ˜์ •๋˜๊ณ  ๋“ฑ)๊ฐ€ ์žˆ์—ˆ๋Š”์ง€๋ฅผ ํ•œ๋ˆˆ์— ํŒŒ์•… ๊ฐ€๋Šฅ
  • ์ปค๋ฐ‹ ์•„์ด๋””๋Š” ์ „์ฒด๊ฐ€ ์•„๋‹Œ, ์•ž์˜ ๋„ค์ž๋ฆฌ๋ฅผ ์น˜๋ฉด ๋‚˜์˜ด
    --> ์•„์ด๋”” ์ „์ฒด๋ฅผ ์น˜๋Š” ๊ฒƒ์ด ๋””ํดํŠธ์ด๋‚˜, ๋ณดํ†ต ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์ปค๋ฐ‹์„ ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์•ž ๋„ค์ž๋ฆฌ XXXX ๋งŒ ์ ์–ด๋„ ์•Œ ์ˆ˜ ์žˆ์Œ
  • (-)๋Š” ํ•ด๋‹น ์ปค๋ฐ‹์˜ ์ด์ „ ๋ชจ์Šต
  • (+)๋Š” ํ•ด๋‹น ์ปค๋ฐ‹์—์„œ์˜ ๋ชจ์Šต
    --> ํ•˜๊ธฐ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๋ฉด, ๋นˆ์นธ + ํ•œ์ค„์ด ์ถ”๊ฐ€๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์–ด๋””์—์„œ ๋‹ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ

-m ์˜ต์…˜ ์—†์ด๋„ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ๋‚จ๊ธฐ๋Š” ๋ฐฉ๋ฒ•

  • git commit ์ดํ›„ ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ๋‚จ๊ธฐ๋Š” ๋ฐฉ๋ฒ•
  • ์ž…๋ ฅ์„ ํ• ๋•Œ, i ์ž…๋ ฅ ํ›„ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ > ์™„๋ฃŒ ํ›„ ์ €์žฅ์„ ์œ„ํ•ด์„œ ESC ๋ˆ„๋ฅด๊ณ  :wq

git commit --amend

  • ์ตœ์‹  ์ปค๋ฐ‹์„ ๋‹ค์‹œ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค์‹œ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์œผ๋กœ ๋งŒ๋“ค๊ธฐ

๊ธด ์ปค๋งจ๋“œ aliasing ์œผ๋กœ ๋งŒ๋“ค๊ธฐ - git config ์‚ฌ์šฉ

๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ๋œ commit history๋ฅผ ๋ณผ ๋•Œ, git log --pretty=oneline ์ž‘์„ฑํ•˜์˜€๋Š”๋ฐ ์˜ต์…˜์ด ๋งŽ๋‹ค๋ณด๋‹ˆ ๋งค๋ฒˆ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ๊ท€์ฐฎ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ alias ๋ฅผ ์ด์šฉํ•˜๋ฉด ํ•ด๊ฒฐ !

  • git config alias.[์ƒˆ๋กœ์šด ๋ณ„๋ช…] [๊ธธ์ด๊ฐ€ ๊ธด ์ปค๋งจ๋“œ]

git config alias.history 'log --pretty=oneline
์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด ๋ณ„๋ช…์„ history ๋ผ๊ณ  ์ง€์ •ํ•œ๋‹ค๋ฉด, git history๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
--> ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ git์— ์›๋ž˜ ์žˆ๋Š” ์ปค๋ฉ˜๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋งŒ๋“ค์–ด์ง„ alias ๋ผ๋Š” ์‚ฌ์‹ค ์ธ์ง€ํ•˜๊ธฐ !


git diff ์ด์ „์ปค๋ฐ‹ID ์ดํ›„์ปค๋ฐ‹ID

  • ๋‘ ์ปค๋ฐ‹์˜ ์ฐจ์ด์ ์„ ๋น„๊ตํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ปค๋งจ๋“œ
  • (ex) ํ•˜๊ธฐ์˜ ๊ฒฝ์šฐ๋ฅผ ๋ณด๋ฉด, README.md ์˜ ๋ณ€๋™์ด๋ ฅ์ด ํ™•์ธ๋˜๋Š”๋ฐ ์ด ๋‘˜์˜ ์ฐจ์ด์ ์„ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” git diff 03af c519 ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธ (์ด์ „ ์ปค๋ฐ‹์„ ๋จผ์ € ์“ฐ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋ง์ž ๐Ÿฉฐ

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