git ์‚ฌ์šฉํ•˜๊ธฐ๐Ÿ’ป

์ตœ์ค€์„ยท2022๋…„ 4์›” 14์ผ
0

git๊ณผ github

๋ชฉ๋ก ๋ณด๊ธฐ
2/3

git์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ์ ์šฉํ•ด์•ผํ•˜๋Š” ๋„๊ตฌ

git

  • git์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € git์„ ์„ค์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • Windows๋Š” https://gitforwindows.org/์—์„œ git์„ ๋‹ค์šด๋กœ๋“œ ํ•œ ํ›„, ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • MacOs์ธ ๊ฒฝ์šฐ๋Š” ์ด๋ฏธ ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
    - MacOs์ธ ๊ฒฝ์šฐ $brew install git๋ฅผ Terminal์— ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Terminal

  • CLI์—์„œ git์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ„ฐ๋ฏธ๋„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

โœจ CLI๋ฅผ ๋จผ์ € ๋ฐฐ์šฐ๋Š” ์ด์œ !!
1. CLI ์ปค๋งจ๋“œ๋กœ git์„ ์‚ฌ์šฉํ•  ์ค„ ์•Œ๋ฉด, GUI ๋„๊ตฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋น ๋ฅด๋‹ค.
2. ๋ฉ‹์ด ๋‚œ๋‹ค.๐Ÿ˜

  • Windows๋Š” cmd๋กœ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ git๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” git bash์—์„œ git ๊ด€๋ จ ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    bash๋ž€?

    • Shell์˜ ํ•œ ์ข…๋ฅ˜๋กœ ์šด์˜์ฒด์ œ์˜ ์ปค๋„๊ณผ ์‚ฌ์šฉ์ž๋ฅผ ์ด์–ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด

      ์ปค๋„(Kernel)์ด๋ž€?
      ํ•˜๋“œ์›จ์–ด์™€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์ด์–ด์ฃผ๋Š” ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด

    • ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ๊ธฐ๋ณธ ์‰˜๋กœ ์ฑ„ํƒ

github

  • github์— ๊ฐ€์ž…ํ•˜์—ฌ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ด์šฉํ•ด ์ค๋‹ˆ๋‹ค.

git์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

  1. git bash๋ฅผ ์—ด๊ณ  $ git -v๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ ํ™•์ธ์„ ํ•œ๋‹ค.

  2. git ํ™˜๊ฒฝ ์„ค์ •์„ ํ•ด์ค€๋‹ค.

$ git config --global user.name "github ์œ ์ €๋‹‰๋„ค์ž„"
$ git config --global user.email "github ๋ฉ”์ผ ์ฃผ์†Œ"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"
  • $ git config --global core.editor "vim" : $ vi ํŒŒ์ผ๋ช…์œผ๋กœ vim์œผ๋กœ ํŒŒ์ผ์„ ์—ด๊ธฐ ์œ„ํ•ด ์ ์šฉ
  • $ git config --global core.pager "cat" : $ cat ํŒŒ์ผ๋ช…์œผ๋กœ ํŒŒ์ผ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ ์šฉ
  1. config ์ž‘์—…์ด ๋๋‚ฌ๋‹ค๋ฉด, $ git config --list๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์˜คํƒ€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

  2. git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"๋ฅผ ์ž…๋ ฅํ•˜์—ฌ lg alias๋ฅผ ์„ค์ •ํ•ด ์ค€๋‹ค.

git bash ์‹œ์ž‘ ์ „ ์‚ฌ์šฉํ•  Command(๋ช…๋ น์–ด) ์•Œ์•„๋ณด๊ธฐ!

Shell Command

  • $ .. : ์ƒ์œ„ ํด๋”
  • $ . : ํ˜„์žฌ ํด๋”
  • - : ์˜ต์…˜(flag)
  • * : ์• ์Šคํ„ฐ๋ฆฌ์Šคํฌ('๋ชจ๋“ '์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.)
  • $ ls : ํ˜„์žฌ ์œ„์น˜์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์•Œ๋ ค์คŒ
  • $ ls -l : ํŒŒ์ผ๋“ค์„ ํ•œ์ค„์”ฉ ํ‘œ๊ธฐ
  • $ ls -a : ๋ชจ๋“  ํŒŒ์ผ ๋‚˜ํƒ€๋‚ด๊ธฐ(์ˆจ๊ธด ํŒŒ์ผ๊นŒ์ง€ ๋‚˜ํƒ€๋ƒ„)
  • $ cd ํด๋”์ด๋ฆ„/ : directory(ํด๋”) ์ด๋™
  • $ mkdir ํด๋”์ด๋ฆ„/ : directory(ํด๋”) ๋งŒ๋“ค๊ธฐ (make directory์˜ ์•ฝ์–ด์ด๋‹ค.)
  • $ pwd : ํ˜„์žฌ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์คŒ
  • $ touch ํŒŒ์ผ๋ช… : ํŒŒ์ผ ์ƒ์„ฑ(text ๊ธฐ๋ฐ˜ ํŒŒ์ผ๋งŒ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.)
  • $ mv ํŒŒ์ผ๋ช… : ํŒŒ์ผ ์ด๋™
  • $ mv ๊ธฐ์กด-ํŒŒ์ผ๋ช… ๋ฐ”๊พธ๊ณ ์‹ถ์€-์ด๋ฆ„์˜-ํŒŒ์ผ๋ช… : ๊ธฐ์กด์˜ ํŒŒ์ผ๋ช…์„ ๋ฐ”๊พธ๊ณ ์‹ถ์€ ์ด๋ฆ„์˜ ํŒŒ์ผ๋ช…์œผ๋กœ ๋ณ€๊ฒฝ
  • $ cp ํŒŒ์ผ๋ช… : ํŒŒ์ผ ๋ณต์‚ฌ
  • $ rm ํŒŒ์ผ๋ช… : ํŒŒ์ผ ์‚ญ์ œ(ํด๋”๋Š” ์ œ๊ฑฐ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.)
  • $ rm -r ํด๋”๋ช…/ : ์•ˆ์— ์žˆ๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ์ง€์šฐ๊ณ  ํด๋”๋„ ์‚ญ์ œ(์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉ!)
  • $ rm -rf ํด๋”๋ช…/ : ๊ฐ•์ œ ์‚ญ์ œ(์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉ!)
  • $ vi ํŒŒ์ผ๋ช… : vim์œผ๋กœ ํŒŒ์ผ ์—ด๊ธฐ
  • $ cat ํŒŒ์ผ๋ช… : ํŒŒ์ผ์— ์ ํžŒ ๋‚ด์šฉ ๋ณด๊ธฐ

Vim Command

  • i : insert mode
  • ESC : back to normal mode
  • q : ๋‚˜๊ฐ€๊ธฐ
  • q! : ๊ฐ•์ œ ๋‚˜๊ฐ€๊ธฐ
  • w : ์ €์žฅ
  • wq : ์ €์žฅํ•˜๋ฉด์„œ ๋‚˜๊ฐ€๊ธฐ

git ์‹œ์ž‘!

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•๋Š” git init๊ณผ git clone์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

1. git init

๋จผ์ €, git init์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
git init์€ ์ž‘์—…๊ณต๊ฐ„(local,์ปดํ“จํ„ฐ)์—์„œ ์‹œ์ž‘ํ•˜์—ฌ github(์›๊ฒฉ์ €์žฅ์†Œ)๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  1. ํ”„๋กœ์ ํŠธ ํด๋”์™€ ํด๋”๋กœ ์ด๋™ํ•ด์ค€๋‹ค.
$ mkdir first-repo
$ cd first-repo
  1. git init ๋ช…๋ น์–ด๋กœ local repository ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
$git init
  1. github์—์„œ ์ƒˆ๋กœ์šด repository๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ณต์‚ฌํ•œ ์ฃผ์†Œ๋ฅผ local repository์— ๋“ฑ๋กํ•œ๋‹ค.

    • ์—ฌ๊ธฐ์„œ ์ƒˆ๋กœ์šด repository๋ฅผ ๋งŒ๋“ค ๋•Œ, ์ด๋ฆ„์„ local์— ์ƒ์„ฑํ•œ first-repo ํด๋”์™€ ์ด๋ฆ„์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    • ๋ณต์‚ฌํ•œ ์ฃผ์†Œ๋ฅผ ํ˜„์žฌ ์ž‘์—…๊ณต๊ฐ„์—์„œ remoteํ•ด์ค€๋‹ค.
      $ git remote add origin ๋ณต์‚ฌํ•œ์ฃผ์†Œ
  2. ์ž˜ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

$ git remote
$ git remote -v
  • $ git remote : origin์ด๋ผ๋Š” alias(๋ณ„๋ช…)๋งŒ ํ™•์ธ๊ฐ€๋Šฅ
  • $ git remote -v : origin์ด๋ผ๋Š” alias(๋ณ„๋ช…)๊ณผ ์—ฐ๊ฒฐ๋œ github์ฃผ์†Œ ํ™•์ธ๊ฐ€๋Šฅ
  1. ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
$ touch README.md
$ vi README.md

vim์œผ๋กœ README.md ํŒŒ์ผ์ด ์—ด์–ด์กŒ๋‹ค๋ฉด i๋ฅผ ๋ˆŒ๋Ÿฌ insert mode๋กœ ๋ฐ”๊พผ ๋’ค , ๋‚ด์šฉ์„ ์ž‘์—…ํ•˜๊ณ  ์™„๋ฃŒํ•˜์˜€๋‹ค๋ฉด escํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ normal mode๋กœ ๋น ์ ธ๋‚˜์™€ :wq๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ €์žฅํ•œ ๋’ค vim์„ ์ข…๋ฃŒํ•œ๋‹ค.

  1. 5๋ฒˆ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด $ git status๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.
    git status
    ์‚ฌ์ง„์— ๋ณด์ด๋Š” Untracked files: README.md๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

  2. $ git add README.md ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ working directory์— ์ถ”๊ฐ€๋œ ํŒŒ์ผ์„ staging area๋กœ ์˜ฎ๊ธด๋‹ค.

  3. $ git add์™„๋ฃŒ ํ›„, $ git status๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.
    git add
    ์‚ฌ์ง„์— ๋ณด์ด๋Š” Changes to be committed ๋ฉ”์„ธ์ง€๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด commit์„ ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

  4. $ git commit๋ฅผ ์ž…๋ ฅํ•˜์—ฌ commit์„ ์ง„ํ–‰ํ•˜์—ฌ ์ค€๋‹ค.

    $ git config --global core.editor "vim"์œผ๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— vim ์—๋””ํ„ฐ๋กœ commit ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

    i๋ฅผ ๋ˆŒ๋Ÿฌ insert mode๋กœ ๋ฐ”๊พผ ๋’ค , commit ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ  escํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ normal mode๋กœ ๋น ์ ธ๋‚˜์™€ :wq๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ €์žฅํ•œ ๋’ค vim์„ ์ข…๋ฃŒํ•œ๋‹ค.

    vim์ด ์–ด์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์„ค์ •์„ ํ•ด์ฃผ์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ $ git commit -m "commit message๋ฅผ ์ž…๋ ฅํ•ด commit ๋ฉ”์„ธ์ง€๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

  5. ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚ฌ๋‹ค๋ฉด $ git status๋ฅผ ์ž…๋ ฅํ•˜์—ฌ commit์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ์ค€๋‹ค.
    git commit
    ์‚ฌ์ง„๊ณผ ๊ฐ™์ด Your branch is ahead of โ€˜origin/mainโ€™ by ์ˆซ์ž commit๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋‹ค.

  6. commit๊นŒ์ง€ ์™„๋ฃŒํ•˜์˜€๋‹ค๋ฉด ์›๊ฒฉ์ €์žฅ์†Œ(remote repository)๋กœ push๋ฅผ ํ•ด์ค€๋‹ค.

    $ git init์œผ๋กœ ์—ฐ๊ฒฐํ–ˆ์„ ์‹œ, ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ $ git push -u origin main์„ ์ž…๋ ฅํ•ด ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ™๊ฒŒ ํ•ด์ค€๋‹ค.

    -u(upstream set)์„ ๋ถ™์ด๋ฉด ๊ฐ™์€ ์ƒ๊ด€๊ด€๊ณ„ ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    -> '๋‹ค๋ฅธ ์กด์žฌ๋ฅผ ๊ฐ™๊ฒŒ ํ•œ๋‹ค'๊ณ  ์ดํ•ด

    ์ดํ›„๋ถ€ํ„ฐ๋Š”, -u์—†์ด $ git push origin main์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

๐ŸŒŸ tip!: ํšจ๊ณผ์ ์ธ commit message ์ž‘์„ฑํ•˜๋Š” ๋ฒ•

  • open source๋ฅผ ๊ฐœ๋ฐœํ•  ๊ฒฝ์šฐ, code์™€ Commit message๊ฐ€ ๊ฐ™์ด ๊ณต๊ฐœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์‚ฌ์šฉ์ž๋“ค์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์˜์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • commit์„ ์ž๋ฅด๋Š” ๋‹จ์œ„๋Š” ๋™์ž‘ํ•˜๋Š” ๋‹จ์œ„๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • commit ์ œ๋ชฉ์€ 50์ž ์ด๋‚ด๋กœ ์š”์•ฝํ•˜์—ฌ ์ž‘์„ฑํ•œ๋‹ค.
  • commit ๋ณธ๋ฌธ(๋‚ด์šฉ)์€ ์ตœ๋Œ€ํ•œ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•œ๋‹ค.
  • prefix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ˆˆ์— commit์˜ ์šฉ๋„๋ฅผ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ํ•œ๋‹ค.

    prefix

    • feat: featrues - ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๊ด€๋ จ
    • docs: documentations - ๋ฌธ์„œ ๊ด€๋ จ
    • conf: configurations - ํ™˜๊ฒฝ ์„ค์ • ๊ด€๋ จ
    • test: test - test ๊ด€๋ จ
    • fix: bug-fix - ์ž˜๋ชป๋œ ๊ธฐ๋Šฅ ์ˆ˜์ • ํ–ˆ์„ ์‹œ
    • refactor: refactoring - ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์—†์ด ํ˜„์žฌ ๊ตฌํ˜„์„ ๊ฐœ์„ ํ•œ ๊ฒฝ์šฐ
    • ci: Continuous Integration - ci๊ตฌ์„ฑํŒŒ์ผ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ๋ณ€๊ฒฝ ์‹œ
    • build: Build โ€“ ์‹œ์Šคํ…œ ๋˜๋Š” ์™ธ๋ถ€ ์ข…์†์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ด€๋ จ
    • perf: Performance โ€“ ์„ฑ๋Šฅ ๊ฐœ์„  ์‹œ

2. git clone

git clone์€ github(์›๊ฒฉ์ €์žฅ์†Œ)์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ž‘์—…๊ณต๊ฐ„(local,์ปดํ“จํ„ฐ)๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  1. github์—์„œ ์ƒˆ๋กœ์šด repository๋ฅผ ์ƒ์„ฑํ•œ ํ›„, Clone ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋‚˜ํƒ€๋‚œ URL์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค.

    ์ƒˆ๋กœ์šด repository๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, README.md, .gitignore, LICENSE ํŒŒ์ผ์„ ํ•จ๊ป˜ ์ƒ์„ฑํ•œ๋‹ค.

    • README.md
      : ํ”„๋กœ์ ํŠธ์™€ repository๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ฑ…์˜ ํ‘œ์ง€์™€ ๊ฐ™์€ ๋ฌธ์„œ
    • .gitignore
      - git ํŒŒ์ผ์„ ์ถ”์ ํ•  ๋•Œ, ํ•„์š”์—†๋Š” ํŒŒ์ผ์ด๋‚˜ ํด๋” ๋“ฑ์„ ์ถ”์ ํ•˜์ง€ ์•Š๋„๋ก ๋ช…์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ๋‹ค.
      - ํŠน์ • ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„์— ํŒจํ„ด์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Š” ํŠน์ €์–ด ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
    • LICENSE
      : License๋Š” ๋‚ด๊ฐ€ ๋งŒ๋“ค ๋•Œ์—๋„, ๋ฐฐํฌํ•  ๋•Œ์—๋„ ๊ฐ€์žฅ ์‹ ๊ฒฝ ์จ์•ผ ํ•˜๋Š” ์ผ์ด๋‹ค.
      - MIT License: ๋ชจ๋“  ํ–‰๋™์— ์ œ์•ฝ์ด ์—†์œผ๋ฉฐ, ์ €์ž‘๊ถŒ์ž๋Š” ์†Œํ”„ํŠธ์›จ์–ด์™€ ๊ด€๋ จํ•œ ์ฑ…์ž„์—์„œ ์ž์œ ๋กญ๋‹ค.
      - Apache License: ํŠนํ—ˆ๊ถŒ ๊ด€๋ จ ๋‚ด์šฉ์ด ํฌํ•จ
      - GNU General Public License: ๊ฐ€์žฅ ๋งŽ์ด ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ์†Œ์Šค์ฝ”๋“œ ์‚ฌ์šฉ์‹œ ์˜๋ฌด์‚ฌํ•ญ์„ ๋ฐ˜๋“œ์‹œ ๋”ฐ๋ผ์•ผํ•œ๋‹ค.
  2. git bash์—์„œ $ git clone ๋ณต์‚ฌํ•œURL์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ค€๋‹ค.

  3. ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.

$ touch README.md
$ vi README.md

vim์œผ๋กœ README.md ํŒŒ์ผ์ด ์—ด์–ด์กŒ๋‹ค๋ฉด i๋ฅผ ๋ˆŒ๋Ÿฌ insert mode๋กœ ๋ฐ”๊พผ ๋’ค , ๋‚ด์šฉ์„ ์ž‘์—…ํ•˜๊ณ  ์™„๋ฃŒํ•˜์˜€๋‹ค๋ฉด escํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ normal mode๋กœ ๋น ์ ธ๋‚˜์™€ :wq๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ €์žฅํ•œ ๋’ค vim์„ ์ข…๋ฃŒํ•œ๋‹ค.

  1. 3๋ฒˆ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด $ git status๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.
    git status
    ์‚ฌ์ง„์— ๋ณด์ด๋Š” Untracked files: README.md๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

  2. $ git add README.md ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ working directory์— ์ถ”๊ฐ€๋œ ํŒŒ์ผ์„ staging area๋กœ ์˜ฎ๊ธด๋‹ค.

  3. $ git add์™„๋ฃŒ ํ›„, $ git status๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.
    git add
    ์‚ฌ์ง„์— ๋ณด์ด๋Š” Changes to be committed ๋ฉ”์„ธ์ง€๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด commit์„ ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

  4. $ git commit๋ฅผ ์ž…๋ ฅํ•˜์—ฌ commit์„ ์ง„ํ–‰ํ•˜์—ฌ ์ค€๋‹ค.

    $ git config --global core.editor "vim"์œผ๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— vim ์—๋””ํ„ฐ๋กœ commit ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

    i๋ฅผ ๋ˆŒ๋Ÿฌ insert mode๋กœ ๋ฐ”๊พผ ๋’ค , commit ๋ฉ”์„ธ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ  escํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ normal mode๋กœ ๋น ์ ธ๋‚˜์™€ :wq๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ €์žฅํ•œ ๋’ค vim์„ ์ข…๋ฃŒํ•œ๋‹ค.

  5. commit์ด ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด ์›๊ฒฉ์ €์žฅ์†Œ(remote repository)๋กœ pushํ•œ๋‹ค.
    $ git push origin main

    ์—ฌ๊ธฐ์„œ git init๊ณผ ๋‹ค๋ฅธ ์ 
    : git clone์€ ์›๊ฒฉ์ €์žฅ์†Œ์—์„œ ๋จผ์ € ๋Œ์–ด์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›๊ฒฉ์ €์žฅ์†Œ์˜ main ๋ธŒ๋žœ์น˜์™€ local์˜ main ๋ธŒ๋žœ์น˜๋Š” ๊ฐ™์€ ์ƒ๊ด€๊ด€๊ณ„์— ์žˆ๋‹ค.
    ๊ทธ๋Ÿฌ๋ฏ€๋กœ, -u flag๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

profile
์ปคํ”ผ๋ฅผ ์ข‹์•„ํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

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