๐Ÿงฉ Git, GitHub

sseobยท2022๋…„ 6์›” 3์ผ
1

Git

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

Gitโ“

  • git์€ ํŒŒ์ผ์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
  • commitํ•œ ์‹œ์ ์˜ ํŒŒ์ผ๋“ค์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ด๋†“๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. (branch๋ฅผ ์˜ฎ๊ฒผ์„ ๋•Œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

Git, GitHub โ“

  • ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ github์€ ์ €์žฅ์†Œ์ด๊ณ , git์€ local version ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค !
  • git์—์„œ ๋งˆ์Œ๊ป version ๊ด€๋ฆฌ๋ฅผ ํ•ด๋†“์€ commit๋“ค์„ pushํ•ด์„œ github์— ์ €์žฅํ•œ๋‹ค.

Stage โ“

  • commit์‹œํ‚ค๊ธฐ ์ „ ํŒŒ์ผ๋“ค์—๊ฒŒ ๋งˆ์Œ์˜ ์ค€๋น„๋ฅผ ์‹œ์ผœ์ฃผ๋Š” ์žฅ์†Œ์ž„.. ๐Ÿ™
  • Stage์— ์˜ฌ๋ผ๊ฐ„ ํŒŒ์ผ๋“ค์€ commit๋Œ€๊ธฐ์ค‘์ธ ํŒŒ์ผ๋“ค์ธ ๊ฒƒ.


โŒจ๏ธ ๋ช…๋ น์–ด


๐Ÿ›  git ์„ค์ •, ์ดˆ๊ธฐํ™”

# git version ํ™•์ธ !

$ git --version
# ๐ŸŒฑ git ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™”. ์ดˆ๊ธฐํ™” ํ•˜๋ฉด [ .git ] ์ด๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ๊ธฐ๋ฉฐ version๊ด€๋ฆฌ ์‹œ์ž‘๊ฐ€๋Šฅ !

$ git init

note. --global ์˜ต์…˜์„ ๋นผ๊ณ  ์ž…๋ ฅํ•˜๊ฒŒ๋˜๋ฉด Repository๋‹จ์œ„๋กœ ์„ค์ •ํ•˜๋Š”๊ฒƒ ์ž…๋‹ˆ๋‹ค.

# ๐ŸŒ git ๊ธ€๋กœ๋ฒŒ ์„ค์ • ๋ชฉ๋ก ์กฐํšŒ 

$ git config --global --list
# ๊ธ€๋กœ๋ฒŒ ์‚ฌ์šฉ์ž ์„ค์ •

$ git config --global user.name "User name"
# ๊ธ€๋กœ๋ฒŒ ์ด๋ฉ”์ผ ์„ค์ •

$ git config --global user.email "git@gmail.com"
# ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋ฅผ main์œผ๋กœ ์„ค์ •

$ git config --global init.defaultBranch main


โ˜๏ธ ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ

# ๐Ÿš€ local git๊ณผ ์›๊ฒฉ ์ €์žฅ์†Œ(GitHub)์˜ repository์™€ ์—ฐ๊ฒฐํ•œ๋‹ค. 

$ git remote add origin https://github.com/github-user/github-repository.git

note. ์—ฌ๊ธฐ์„œ origin์€ ์›๊ฒฉ repository์˜ ๋ณ„์นญ์ด๋‹ค.

# ๐Ÿ’Ž github-user์˜ github-repository ์ €์žฅ์†Œ ๋ณต์ œํ•˜๊ธฐ

$ git clone https://github.com/github-user/github-repository.git
# ๐Ÿ‘€ ํ˜„์žฌ local ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋œ ์›๊ฒฉ ์ €์žฅ์†Œ url ํ™•์ธ

$ git remote -v


๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ํŒŒ์ผ ์ƒํƒœ ๋‹ค๋ฃจ๊ธฐ,์ƒํƒœ ํ™•์ธํ•˜๊ธฐ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ๊ธฐ

# ๐Ÿ‘€ ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ commitํ•  ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ addํ•  ํŒŒ์ผ์ด ์žˆ๋Š”์ง€

$ git status
# ๐Ÿ‘† ์ „์ฒด ํŒŒ์ผ stage์— ์˜ฌ๋ฆฌ๊ธฐ dot, --all option ๋Œ€์‹ ์— ํŒŒ์ผ๋ช…์„ ์“ฐ๋ฉด ํ•ด๋‹น ํŒŒ์ผ๋งŒ ์˜ฌ๋ผ๊ฐ
$ git add .

$ git add --all
# ๐Ÿ‘‡ ์ „์ฒด ํŒŒ์ผ unstage. ์Šคํ…Œ์ด์ง€์—์„œ ๋‚ด๋ฆฌ๊ธฐ. dot ๋Œ€์‹ ์— ํŠน์ • ํŒŒ์ผ๋งŒ ๋‚ด๋ฆด์ˆ˜๋„ ์žˆ์Œ.
$ git reset HEAD .
# ๐Ÿ“ธ stage์— ์˜ฌ๋ผ๊ฐ„ ํŒŒ์ผ,๋””๋ ‰ํ† ๋ฆฌ commitํ•˜๊ธฐ. ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•œ๋‹ค. (ํ˜„์žฌ ์‹œ์ ์„ ์‚ฌ์ง„ ์ฐ๋Š”๊ฒƒ๊ณผ ๊ฐ™์€ ๋Š๋‚Œ.)

$ git commit -m "commit message"
# ๐Ÿ‘€ commit log ํ™•์ธํ•˜๊ธฐ

$ git log
# $ git log ๋ฅผ ํ†ตํ•ด commit hash code๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ํ•ด๋‹น ๐Ÿ“ธ ์‹œ์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ.
# hash code๋งŒ ์žˆ์œผ๋ฉด ์•ž, ๋’ค๋กœ ์›ํ•˜๋Š” ์‹œ์ ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Œ.
# --hard option ๋ง๊ณ  ๋‹ค๋ฅธ option๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

$ git reset --hard 91f61e82b0175d49c4fceda57d8b9133432f124f
# stage์— ์˜ฌ๋ฆฌ์ง€ ์•Š์€ ํŒŒ์ผ ์ค‘, ๋ณ€๊ฒฝ์‚ฌํ•ญ ํŠน์ • ํŒŒ์ผ์˜ ๋˜๋Œ๋ฆฌ๊ธฐ
$ git checkout -- test.java
# ๐Ÿš€ commitํ•œ ๋‚ด์šฉ๋“ค์„ ์›๊ฒฉ ์ €์žฅ์†Œ main branch์— ๋ฐ€์–ด๋„ฃ๊ธฐ.

$ git push origin main
# ์›๊ฒฉ ์ €์žฅ์†Œ main branch์˜ ์ฝ”๋“œ๋“ค์„ local repository์— ๋™๊ธฐํ™”ํ•œ๋‹ค. 

$ git pull origin main


๐ŸŒฑ Branch

# ๐ŸŒฑ branch ์ƒ์„ฑํ•˜๊ธฐ
# ํ˜„์žฌ ์ปค๋ฐ‹ ์ƒํƒœ๋ถ€ํ„ฐ branch๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ์ƒ์„ฑ ์ดํ›„๋กœ๋Š” ํ•˜๋‚˜์˜ ํฐ ์ค„๊ธฐ์—์„œ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ๊ฐ€์ง€์ฒ˜๋Ÿผ ๊ฐˆ๋ผ์ง„๋‹ค.
# ๊ฐˆ๋ผ์ง„ ๊ฐ€์ง€๋“ค, branch๋“ค์€ ๊ฐ์ž์˜ ์‚ถ์„ ์‚ด๋‹ค๊ฐ€ pull request๋ฅผ ํ†ตํ•ด mergeํ•˜๋ฉด ๋‹ค์‹œ ํ•ฉ์น  ์ˆ˜ ์žˆ์Œ !

$ git branch branchname
# ๐Ÿ‘€ ํ˜„์žฌ branch ํ™•์ธํ•˜๊ธฐ

$ git branch


๐Ÿ‘‰ branch ์ด๋™ํ•˜๊ธฐ !


$ git checkout branch002
# branch ์‚ญ์ œํ•˜๊ธฐ

$ git branch -d branch002


๐Ÿท tag

# git tag ์ƒ์„ฑํ•˜๊ธฐ
$ git tag <tag-name>
# ํŠน์ • ์ปค๋ฐ‹์— ํƒœ๊ทธ ์ƒ์„ฑํ•˜๊ธฐ (์ถ”๊ฐ€ํ•˜๊ธฐ)
$ git tag <tag-name> <commit-identifier>
# local tag๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•˜๊ธฐ
$ git push origin <tag-name>
# local์— ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์ „์ฒด ํƒœ๊ทธ ํ‘ธ์‹œํ•˜๊ธฐ.
$ git push origin --tags
# origin tag ์‚ญ์ œํ•˜๊ธฐ
$ git push origin :<tag-name>
profile
๊ธฐ๋ก์ด๋ž€ ๊ณผ๊ฑฐ ๋‚ด๊ฐ€ ํ–ˆ๋˜ ์ƒ๊ฐ์ด๋‚˜ ์‚ฌ๊ณ ๋ฐฉ์‹์„ ์—ฟ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

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