๊ณต๋ถ€๊ธฐ๋ก/๊นƒ & ๋ฆฌ๋ˆ…์Šค

Git & Github ์‹ค๋ฌด ํ™œ์šฉ ์™„๋ฒฝ ๊ฐ€์ด๋“œ part1. (Git ๊ธฐ์ดˆ ๋ฐ ์ปค๋ฐ‹)

kaizen_bh 2024. 4. 12. 23:17

 

๋„์ปค ๊ฐ•์˜์™€ ํ•จ๊ป˜ ์‹ ์ฒญํ•œ ์œ ๋ฐ๋ฏธ ๊ฐ•์˜, Git & Github ์‹ค๋ฌด ํ™œ์šฉ ์™„๋ฒฝ ๊ฐ€์ด๋“œ 

์ด์ „์— ๊นƒ๊ณผ ๊นƒํ—™์„ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๊นƒ์ด๋‚˜ ๊นƒํ—™์„ ์‚ฌ์šฉํ•  ์ค„ ์•„๋Š” ๊ฑด ๋ ˆํฌ ๋งŒ๋“ค๊ณ  ํŒŒ์ผ๋“ค ์˜ฌ๋ฆฌ๊ณ  ๊นƒ ํด๋ก ํ•˜๋Š” ๊ฒŒ ์ „๋ถ€์˜€๋‹ค... ๊ทธ๋Ÿฌ๋‚˜ ๊นƒ, ๊นƒํ—™์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜‘์—…ํ•˜๋Š” ๊ณณ์ด ์ •๋ง ๋งŽ์œผ๋ฏ€๋กœ ์ด๋ฒˆ ๊ธฐํšŒ์— ๊ธฐ๋ณธ์„ ๋ฐฐ์›Œ๋ณด๊ณ ์ž ์ด ๊ฐ•์˜๋ฅผ ์„ ํƒํ•˜์˜€๋‹ค.

๊ฐ•์˜์˜ ๋‚ด์šฉ๋“ค์ด ์„น์…˜๋ณ„๋กœ ์ž‘๊ฒŒ ์ชผ๊ฐœ์ ธ ์žˆ์–ด ํ•œ๋‘ ํŽ˜์ด์ง€์˜ ๊ธ€๋กœ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 


 

 

 

์„น์…˜ 2 : Git ์†Œ๊ฐœ

Git์ด๋ž€?

  • ๊นƒ์€ ์ „์„ธ๊ณ„์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ, ํ˜‘๋ ฅ๊ณผ ๋ณ€ํ™”์˜ ๊ณต์œ ๊ฐ€ ์ฃผ ํŠน์ง•์ด๋‹ค. ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž, ์ž‘์„ฑ์ž ๊ฐ„์˜ ํ˜‘๋ ฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ๋ˆ„๊ตฌ๋“  ๊นƒ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ฐ ๊ฐœ์ธ๋“ค ๊ฐ„์— ๋ฒŒ์–ด์ง€๋Š” ์—ฌ๋Ÿฌ ๋ณ€ํ™”์™€ ์ˆ˜์ •์‚ฌํ•ญ๋“ค์„ ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.
  • ๊นƒ์€ ์ฒดํฌํฌ์ธํŠธ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ค€๋‹ค. ์ž‘์—…์˜ ์ค‘๊ฐ„์ค‘๊ฐ„๋งˆ๋‹ค ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋‘๊ณ  ๋ฒ„์ „์„ ์„ค์ •ํ•˜์—ฌ ์›ํ•˜๋Š” ์‹œ์ ์œผ๋กœ ๋กค๋ฐฑํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ํ•œ ์ฒดํฌํฌ์ธํŠธ์—์„œ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ๋ฐœ๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ํ˜น์€ ์ฒดํฌํฌ์ธํŠธ๋“ค์„ ๊ฒฐํ•ฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

 

Git vs Github

  • Git ≠ Github
  • Git
    • ๋ฒ„์ ผ ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด. ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์ธํ„ฐ๋„ท์ด๋‚˜ ๊ณ„์ • ๋“ฑ๋ก์ด ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. MS Word๋‚˜ Excel ๊ฐ™์€ ๋ฌธ์„œ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ๊ทธ์ € ์‚ฌ์šฉํ•˜๋Š” ์ผ์ข…์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
  • Github
    • ์›น์„œ๋น„์Šค. ๊นƒ ํ—ˆ๋ธŒ๋Š” ๊นƒ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ํด๋ผ์šฐ๋“œ์— ์†Œ์Šค ์ฝ”๋“œ๋“ค์„ ์ €์žฅํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ์‰ฝ๊ฒŒ ๊ณต๋™์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์›น์‚ฌ์ดํŠธ ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์ •๊ณผ ์ธํ„ฐ๋„ท์ด ํ•„์š”ํ•˜๋‹ค.
    • ๊นƒ์„ ์‚ฌ์šฉํ•ด ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์šฉ๋“ค์„ ๊นƒํ—ˆ๋ธŒ์— ์—…๋กœ๋“œํ•˜์—ฌ ๊ณต์œ  ๋ฐ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ด ์ฝ”๋“œ์™€ ๊นƒํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ์ž์˜ ์ปดํ“จํ„ฐ๋กœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

 


์„น์…˜ 3 : ์„ค์น˜ ๋ฐ ์„ค์ •

Git ์„ค์น˜ ๋ฐ ์„ค์ •ํ•˜๊ธฐ

  • ์ฃผ ์‚ฌ์šฉํ™˜๊ฒฝ์€ ์œˆ๋„์šฐ๋ฏ€๋กœ ์œˆ๋„์šฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ์„ค์น˜ ํŽ˜์ด์ง€์—์„œ ๋งž๋Š” ๋น„ํŠธ์˜ ์œˆ๋„์šฐ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋. 
  • ์„ค์น˜ ํ›„์—” Git ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ ๋จผ์ € ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค.
userpc@DESKTOP-UQ5OHLV MINGW64 ~
$ git config user.name

userpc@DESKTOP-UQ5OHLV MINGW64 ~
$ git config --global user.name "bh lee"

userpc@DESKTOP-UQ5OHLV MINGW64 ~
$ git config user.name
bh lee

---

userpc@DESKTOP-UQ5OHLV MINGW64 ~
$ git config user.email

userpc@DESKTOP-UQ5OHLV MINGW64 ~
$ git config --global user.email "lbh1224@gmail.com"

userpc@DESKTOP-UQ5OHLV MINGW64 ~
$ git config user.email
lbh1224@gmail.com

 

 

 

 


์„น์…˜ 4 : Git์˜ ๊ธฐ์ดˆ. 

+์„น์…˜ 5 : ์ปค๋ฐ‹๊ณผ ๊ด€๋ จ ์ฃผ์ œ ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ

์„น์…˜ 4์™€ ์„น์…˜ 5, ๋‘ ์„น์…˜์€ ์ปค๋ฐ‹์— ๋Œ€ํ•ด ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋ฏ€๋กœ ํ•จ๊ป˜ ์ •๋ฆฌํ•˜์˜€๋‹ค. 

 

Git Repo ๋งŒ๋“ค๊ธฐ

  • ๊นƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋จผ์ € ๋ ˆํฌ๋ผ ํ”ํžˆ ๋ถ€๋ฅด๋Š” Repository๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.
  • ์–ธ์ œ, ์–ด๋А ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”์ง€ ๊นƒ์—๊ฒŒ ์ˆ˜๋™์œผ๋กœ ์ง€์‹œํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ €์žฅ์†Œ๋“ค, ๋ชจ๋“  ๋ ˆํฌ๋“ค์€ ๊ณ ์œ  ์ด๋ ฅ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ์„œ๋กœ ๊ด€๋ จ์ด ์—†๋Š” ๋…๋ฆฝ์ ์ธ ์„ฑ๊ฒฉ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  • ๊นƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฐ๊ฐ์˜ ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™ํ•ด์„œ ๊นƒ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค์— ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

Git Init & Git Status

 

git status

  • ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ ˆํฌ์˜ ์ƒํƒœ๋ฅผ ๋ณด๊ณ ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด.
  • ๋ ˆํฌ๊ฐ€ ์•„์ง ์—†๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ not a git repository, ๊นƒ ์ €์žฅ์†Œ ์ •๋ณด๊ฐ€ ์—†๋‹ค๊ณ  ๋œฌ๋‹ค. 
userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads
$ git status
fatal: not a git repository (or any of the parent directories): .git

 

 

git init

  • ์ƒˆ ๋ ˆํฌ์˜ ํ™ˆ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ช…๋ น์–ด. ํ˜„์žฌ ์œ„์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒˆ๋กœ์šด ๊นƒ ์ €์žฅ์†Œ๋กœ ์‹ค์ฒดํ™”ํ•œ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋ ˆํฌ๋ฅผ ๋งŒ๋“ค๋•Œ ์ตœ์ดˆ์—๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
  • git init ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋นˆ ๊นƒ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์ €์žฅ์†Œ๋ฅผ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋นˆ ๊นƒ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ .git ์ด๋ผ๋Š” ์ˆจ๊ฒจ์ง„ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ๊นƒ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ .git ์ด๋ ‡๊ฒŒ ์ˆจ๊ฒจ์ง„ ํ˜•ํƒœ์ธ ์ด์œ ๋Š” ๋งŒ์•ฝ ์ด๋ ฅ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ชจ๋“  ์ž๋ฃŒ๋“ค์„ ์žƒ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 
  • ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด git init์€ ์ƒˆ๋กœ์šด ๊นƒ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ฌ๊ณผ ๋™์‹œ์— ๊ธฐ์กด์˜ ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ํ•ญ์ƒ git status๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. .git ํด๋”๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. 
git init 

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test
$ git init
Initialized empty Git repository in C:/Users/userpc/Downloads/git_study/test/.git/

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

 

 

.git directory

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ ls

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ ls -a
./  ../  .git/

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ cd .git/

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test/.git (GIT_DIR!)
$ ls
HEAD  config  description  hooks/  info/  objects/  refs/

 

 


 

 

Git Add & Commit 

  • ์ปค๋ฐ‹ ์›Œํฌํ”Œ๋กœ์šฐ ๊ฐœ์š”
    • ๊นƒ ์ปค๋ฐ‹์€ ๊นƒ ๋ ˆํฌ์— ์žˆ๋Š” ์ฒดํฌํฌ์ธํŠธ๋“ค ์ค‘ ํ•˜๋‚˜๋กœ ๋ณดํ†ต ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์— ์–ด๋งˆํ•˜๊ฒŒ ๋งŽ์€ ์ปค๋ฐ‹๋“ค์ด ์กด์žฌํ•œ๋‹ค. ์•„์ฃผ ์ค‘์š”ํ•œ ์ ์€ ์ปค๋ฐ‹์€ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์ด๋‹ค. ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ ์ด์ƒ์œผ๋กœ ์–ด๋–ค ๊ฒƒ์„ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
    • ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ˆ˜์ •ํ•ด์„œ ํŒŒ์ผ์— ์ €์žฅํ•ด์•ผ ํ•˜๋ฉฐ, ์•„๋ž˜์˜ ์‚ฌ์ง„ ์˜ˆ์ œ์ฒ˜๋Ÿผ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ๋“ค์„ ๋ฌถ์–ด์„œ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ๋‹ค. 
    • ์›Œํฌ ํ”Œ๋กœ์šฐ์—๋Š” 3๊ฐ€์ง€ ์˜์—ญ์ด ์žˆ๋‹ค.
      • ์›Œํ‚น ๋””๋ ‰ํ† ๋ฆฌ : ํ”„๋กœ์ ํŠธ์—์„œ ์‹ค์ œ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ณต๊ฐ„, ๋””๋ ‰ํ† ๋ฆฌ.
      • ์Šคํ…Œ์ด์ง€ ์˜์—ญ : ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ๋“ฑ๋กํ•˜๋Š” ๊ณณ
      • ์ €์žฅ์†Œ : .git ํด๋”. ์ปค๋ฐ‹์„ ํ•˜๊ฒŒ ๋˜๋ฉด git commit์€ .git ์•ˆ์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ƒˆ ์ปค๋ฐ‹์„ ํด๋”์— ๋“ฑ๋กํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ปค๋ฐ‹ํ•˜๋ฉด ๊ทธ ํด๋”, ์‚ฌ์‹ค์€ ๊นƒ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

  • Git add๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์Šคํ…Œ์ด์ง•ํ•˜๊ธฐ 
    • ์–ด๋–ค ์ž‘์—…์„ ํ•˜๊ณ  ๋‚˜์„œ ์ƒ๊ธด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ๋จผ์ € add ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฌ๋Š” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. 

git commit workflow

 

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋กœ git init์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ ˆํฌ๋ฅผ ๋งŒ๋“ค๊ณ  characters.txt, outline.txt ๋‘ ๊ฐœ์˜ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋งŒ๋“  ๋’ค์— git staus๋ฅผ ์ณ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

๊นƒ์€ 2๊ฐœ์˜ ํŒŒ์ผ์„ ์ธ์‹ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ถ”์ ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๋ณด์—ฌ์ค€๋‹ค. 

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        characters.txt
        outline.txt

nothing added to commit but untracked files present (use "git add" to track)

 

 

git add๋ฅผ ์ด์šฉํ•ด ๋‘ ํ…์ŠคํŠธํŒŒ์ผ์„ add ํ•˜๋ฉด

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   characters.txt
        new file:   outline.txt

 

์ปค๋ฐ‹ํ•˜๊ธฐ ์ „, ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

 

 

Git ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€

  • ๊นƒ์„ ์ปค๋ฐ‹ํ•  ๋•Œ๋Š” ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ™์ด ์ ์„ ์ˆ˜ ์žˆ๋‹ค. ์ปค๋ฐ‹ํ•  ๋•Œ๋งˆ๋‹ค ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์š”์•ฝํ•˜๊ฑฐ๋‚˜ ๋ฌ˜์‚ฌํ•˜๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • git commit -m “my message”
userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git commit -m "start work on outline and main characters"
[master (root-commit) fb4ec81] start work on outline and main characters
 2 files changed, 2 insertions(+)
 create mode 100644 characters.txt
 create mode 100644 outline.txt


userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
nothing to commit, working tree clean

 

git status๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ปค๋ฐ‹์ด ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๊ณ  ๋œฌ๋‹ค.

์ปค๋ฐ‹ํ•  ๋•Œ ๋ฉ”์„ธ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด git commit -m ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๋งŒ์•ฝ git commit ๋ช…๋ น์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋งŒ์•ฝ ์—๋””ํ„ฐ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

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

์ž‘์—… ํ›„์— ์ปค๋ฐ‹ํ•  ๋•Œ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋ฅผ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด vim ์—๋””ํ„ฐ๋กœ ์ปค๋ฐ‹๋ฉ”์„ธ์ง€๋ฅผ ์ ์œผ๋ผ๊ณ  ์ฐฝ์ด ๋œจ๊ฑฐ๋‚˜ ํ˜น์€ VSCode๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด VSCode๋กœ ๋„˜์–ด๊ฐ€๊ธฐ๋„ ํ•œ๋‹ค. 

๋งŒ์•ฝ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๊ฐ€ vim์œผ๋กœ ๋œฐ ๊ฒฝ์šฐ git config --global core.editor “code --wait” ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด VSCode๋กœ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋ฅผ ์„ค์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. 

 

์—ฌ๋Ÿฌ ์ค„์˜ ์ปค๋ฐ‹๋ฉ”์„ธ์ง€ ์ž…๋ ฅํ•˜๊ธฐ

 

 

Git Log ๋ช…๋ น์–ด 

# master ๋ธŒ๋žœ์น˜์—์„œ chapter1.txt ํŒŒ์ผ ์ƒˆ๋กœ ์ƒ์„ฑ
userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ touch chapter1.txt

# git status๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ
userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        chapter1.txt

nothing added to commit but untracked files present (use "git add" to track)

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ ls
chapter1.txt  characters.txt  outline.txt

# characters.txt ํŒŒ์ผ ์ˆ˜์ •
userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ vim characters.txt

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   characters.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        chapter1.txt

no changes added to commit (use "git add" and/or "git commit -a")

 

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋กœ ์ƒˆ๋กœ์šด ํ…์ŠคํŠธ ํŒŒ์ผ chapter1.txt๋ฅผ ์ƒ์„ฑํ•˜๊ณ  characters.txt ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์˜€๋”๋‹ˆ git status์—์„œ ์œ„์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋œฌ๋‹ค.

๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š” ๋‘ ํŒŒ์ผ, chapter1.txt characters.txt๋ฅผ add๋ฅผ ํ†ตํ•ด ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฌ๊ณ  ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ์ปค๋ฐ‹ํ•˜์˜€๋‹ค.

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git add chapter1.txt characters.txt
warning: in the working copy of 'characters.txt', LF will be replaced by CRLF the next time Git touches it

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   chapter1.txt
        modified:   characters.txt


userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git commit -m "begin work on chapter 1"
[master 6298419] begin work on chapter 1
 2 files changed, 1 insertion(+)
 create mode 100644 chapter1.txt

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
nothing to commit, working tree clean

 

์ด์™ธ์—๋„ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ git status์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปค๋ฐ‹์„ ํ–ˆ์„ ๋•Œ์˜ ๋กœ๊ทธ๋“ค๋„ ์•„๋ž˜์ฒ˜๋Ÿผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git log
commit 00f2743ebeed35508a877d9f36de420a3dd9807d (HEAD -> master)
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 19:08:01 2024 +0900

    split chapter 1 into two pieces

commit 5d2cd9756a67805b1a744e0a76ca050eeb1981ff
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 19:04:49 2024 +0900

    finish chapter 1

commit 6298419754009b8490fbf80356fd905c9e960ea0
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 19:01:32 2024 +0900

    begin work on chapter 1

commit fb4ec81f80ae6fa22f94e59bc28abd81984a2d36
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 18:49:23 2024 +0900

    start work on outline and main characters

 

์ปค๋ฐ‹ ๋‚ด์—ญ์ด ์ ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•ด๋„ ๊ดœ์ฐฎ์œผ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์–ด๋งˆ์–ด๋งˆํ•œ ์ปค๋ฐ‹๋“ค์ด ์กด์žฌํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์ปค๋ฐ‹ ๋กœ๊ทธ๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค๋ฉด ๊ฐ€๋…์„ฑ์ด ๊ต‰์žฅํžˆ ์•ˆ ์ข‹์•„์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ๊ฒฝ์šฐ ์ถ•์•ฝ, ์š”์•ฝํ•ด์ฃผ๋Š” git log ์˜ต์…˜๋“ค์„ ์‚ฌ์šฉํ•ด ์ฃผ๋ฉด ์ข‹๋‹ค.

๊นƒ ๋กœ๊ทธ ๊ณต์‹๋ฌธ์„œ์˜ ๋ชจ๋“  ์˜ต์…˜์„ ์•Œ ํ•„์š”๋Š” ์—†๋‹ค. 

 

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git log
commit a9533bf022b95ff74f79488e85c72818f2dcee80 (HEAD -> master)
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 28 20:41:42 2024 +0900

    in outline, i add some sentence
    this is example, commit message
    addjdjdjdjdjdjdj

commit 1c0b4a341d9d5bcfeca8a930ccc9d752e8c98b2d
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 28 20:33:04 2024 +0900

    Fix Typo in outline

commit 00f2743ebeed35508a877d9f36de420a3dd9807d
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 19:08:01 2024 +0900

    split chapter 1 into two pieces

commit 5d2cd9756a67805b1a744e0a76ca050eeb1981ff
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 19:04:49 2024 +0900

    finish chapter 1

commit 6298419754009b8490fbf80356fd905c9e960ea0
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 19:01:32 2024 +0900

    begin work on chapter 1

commit fb4ec81f80ae6fa22f94e59bc28abd81984a2d36
Author: lbh1224 <leehag1224@gmail.com>
Date:   Thu Mar 21 18:49:23 2024 +0900

    start work on outline and main characters

-------------------------------after--------------------------------

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git log --oneline
a9533bf (HEAD -> master) in outline, i add some sentence this is example, commit message addjdjdjdjdjdjdj
1c0b4a3 Fix Typo in outline
00f2743 split chapter 1 into two pieces
5d2cd97 finish chapter 1
6298419 begin work on chapter 1
fb4ec81 start work on outline and main characters

 

์ด๋ ‡๊ฒŒ ์ถ•์•ฝ, ์š”์•ฝํ•ด์„œ ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ์•„๋ฌด๋ฆฌ ๊ธธ๋”๋ผ๋„ ์ปค๋ฐ‹ ๋‚ด์šฉ์„ ์š”์•ฝํ•ด์•ผ ํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ผ์ธ์€ ์ปค๋ฐ‹์„ ์š”์•ฝํ•œ๋‹ค๋Š” ํŒจํ„ด์€ ๊ด€๋ก€์ด๋‹ค.

 

 

.gitignore

  • ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•˜๋ฉด์„œ ๊นƒ์„ ์‚ฌ์šฉํ•  ๋•Œ, ๊ฐ–๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊นƒ์—๊ฒŒ ์•Œ๋ ค์ง€๊ฑฐ๋‚˜ ์ถ”์ ๋˜์ง€ ์•Š๊ณ  ์™„๋ฒฝํžˆ ์ œ์™ธ๋˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
  • API ํ‚ค, ํŒจ์Šค์›Œ๋“œ, ํ† ํฐ ๋“ฑ ๋ณด์•ˆ์ด ํ•„์š”ํ•˜์—ฌ ๊ณต์œ ๋˜์–ด์„  ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋‚˜ ๊นƒ์— ์˜ฌ๋ฆด ํ•„์š” ์—†๊ณ  ์ œ์™ธํ•ด์•ผ ํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด ๋•Œ .gitignore ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์›ํ•˜๋Š” ๋‚ด์šฉ๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ด ๋ณด์ž๋ฉด

1. secrets.txt๋ผ๋Š” ๋ณด์•ˆ์ƒ์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ์ด ์žˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์€ ๊นƒ์— ์˜ํ•ด ์ถ”์ ๋˜์–ด์„œ๋„, ์ปค๋ฐ‹๋˜์–ด ๊ณต์œ ๋˜์–ด์„œ๋„ ์•ˆ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง๊นŒ์ง€๋Š” ๊นƒ์˜ ์ถ”์ ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค.

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ vim secrets.txt

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        secrets.txt

nothing added to commit but untracked files present (use "git add" to track)

 

 

2. .gitignore ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ฆฌ์ŠคํŠธ์— secrets.txt ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ touch .gitignore

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ ls -a
./   .git/       chapter1.txt  characters.txt  secrets.txt
../  .gitignore  chapter2.txt  outline.txt

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ vim .gitignore

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

nothing added to commit but untracked files present (use "git add" to track)

 

์œ„์™€ ๋‹ฌ๋ฆฌ git status์—์„œ secrets.txt ํŒŒ์ผ์ด ๋” ์ด์ƒ ๊นƒ์— ์ถ”์ ๋˜์ง€ ์•Š์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ .gitignore ํŒŒ์ผ ์ž์ฒด๊ฐ€ ์ถ”์ ๋˜๊ณ  ์žˆ๋‹ค. .gitignore ํŒŒ์ผ์€ ํ˜„์žฌ๋กœ์„  ์ปค๋ฐ‹๋  ํ•„์š”๊ฐ€ ์—†๋Š” ํŒŒ์ผ์ด๋ฏ€๋กœ ์ด ํŒŒ์ผ๋„ ์ œ์™ธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

3. gitignore ํŒŒ์ผ์— ์ž๊ธฐ ์ž์‹ ๋„ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ vim .gitignore

userpc@DESKTOP-UQ5OHLV MINGW64 ~/Downloads/git_study/test (master)
$ git status
On branch master
nothing to commit, working tree clean

์ด์ œ ๋”์ด์ƒ ๊นƒ์˜ ์ถ”์ ์„ ๋ฐ›์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.