Git - f-lab-edu/myinsta GitHub Wiki

Git

์ •์˜

  • ์›๊ฒฉ ์„œ๋ฒ„(remote server)์˜ ์ €์žฅ์†Œ(repository)์— ๋กœ์ปฌ ์†Œ์Šค๋“ค์„ ์ €์žฅํ•˜๋ฉฐ ๋ฒ„์ „์„ ๊ด€๋ฆฌ ํ•˜๋Š” ์‹œ์Šคํ…œ

์›๊ฒฉ ์ €์žฅ์†Œ(repository)

  • ๋กœ์ปฌํŒŒ์ผ๋“ค์„ ์—…๋กœ๋“œ ํ•˜์—ฌ ๋ณด๊ด€์‹œํ‚ค๋Š” ์ €์žฅ์†Œ
  • ํ”„๋กœ์ ํŠธ ํ•œ๊ฐœ๋‹น ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ณดํŽธ์ 
  • ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ ํ•œ๊ฐœ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ๋Š” URL๋กœ ํ‘œํ˜„๋œ๋‹ค
  • https://github.com/user/repository.git

์›๊ฒฉ ์ €์žฅ์†Œ ์ œ๊ณต ํ•ด์ฃผ๋Š”๊ณณ(์›๊ฒฉ ์„œ๋ฒ„)

  • GitHub
  • Bitbucket
  • GitLab

์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„

  • ์›๊ฒฉ ์ €์žฅ์†Œ์— ๊นƒ์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ์‹œ ์ด๋ฆ„์„ ์ •ํ•ด์ค˜์•ผํ•œ๋‹ค
  • ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด origin
  • ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋ฒ„ ์ž์ฒด๋ฅผ remote๋ผ๊ณ  ๋ช…๋ช…ํ•œ๋‹ค

๋กœ์ปฌ ํŒŒ์ผ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ ๋กœ์ปฌ์ปดํ“จํ„ฐ์˜ ํŒŒ์ผ

์ž‘๋™์›๋ฆฌ

  • ๋กœ์ปฌ ํ™˜๊ฒฝ์˜ ํŒŒ์ผ์„ ์ถ”์ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ณ€๊ฒฝ์„ ๊ฐ์ง€, ์ˆ˜์ • ๋‚ด์šฉ๋“ค์ค‘ ์ €์žฅ ์ค‘์ธ ์›๊ฒฉ ์„œ๋ฒ„์— ๋ฐ˜์˜ ํ•˜๊ณ  ์‹ถ์€ ํŒŒ์ผ์„ ๊ณจ๋ผ์„œ ๋ฐ˜์˜

๊นƒ 3๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ

push

  • ๋ณ€๊ฒฝ๋œ ๋กœ์ปฌ ํŒŒ์ผ์„ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ๋ฐ€์–ด ์˜ฌ๋ฆฌ๋Š” ๊ธฐ๋Šฅ

pull, fetch

  • ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ํŒŒ์ผ์„ ๋กœ์ปฌ ์ปดํ“จํ„ฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ

๋ธŒ๋žœ์น˜

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

๋ช…๋ น์–ด

clone

  • ์›๊ฒฉ ์„œ๋ฒ„์— ์กด์žฌํ•˜๋Š” ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ์ปดํ“จํ„ฐ๋กœ ์นดํ”ผ ํ•˜๋Š” ๋ช…๋ น์–ด
  • ๋กœ์ปฌ ์‹œ์Šคํ…œ์—์„œ ์นดํ”ผํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋”๋กœ ์ด๋™ํ›„์—
  • git clone repositoryURL ์‚ฌ์šฉ

pull

  • ํด๋ก  ํ›„์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ์›๊ฒฉ์„œ๋ฒ„์— ์ƒ๊ธฐ๋ฉด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋กœ์ปฌ๋กœ ๋ฐ˜์˜ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด
  • git pull //ํ˜„์žฌ ๋‚ด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์™€ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฆฌ๋ชจํŠธ ์„œ๋ฒ„ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉ
  • git pull origin master //origin๋ฆฌ๋ชจํŠธ ์„œ๋ฒ„์˜ master ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉ

fetch

  • ๋ณ€๊ฒฝ๋‚ด์šฉ์„ ๋ฐ›์•„๋Š” ์˜ค๋˜ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ๋ฐ˜์˜์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ณดํ†ต fetch๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธํ›„ pull๋กœ ๋ฐ˜์˜์‹œํ‚จ๋‹ค
  • git fetch

add

  • ์ปค๋ฐ‹์ „์— ๋กœ์ปฌ์—์„œ ๋ณ€๊ฒฝ๋˜์–ด ์›๊ฒฉ ์„œ๋ฒ„์— ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ์€ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์–ด
  • git add <๊ฒฝ๋กœ> ํ•˜๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์ถ”๊ฐ€ ํ•œ๋‹ค
  • ์œ„๋ฅผ ์Šคํ…Œ์ด์ง• ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค

commit

  • add๋ช…๋ น์–ด ์ดํ›„์— ํ•ด๋‹น ํŒŒ์ผ๋“ค์„ ์Šคํ…Œ์ด์ง• ํ•œ ์ดํ›„์— ์ปค๋ฐ‹์„ ์‚ฌ์šฉ
  • ์ปค๋ฐ‹์„ ๊ธฐ์ค€์œผ๋กœ ๋ฒ„์ „์„ ๋‚˜๋ˆˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ๊ฐ๊ฐ์˜ ์ปค๋ฐ‹์€ ๊ณ ์œ ํ•œ ํ•ด์‰ฌ๊ฐ’์„ ๊ฐ€์ง„๋‹ค
  • ์ด ํ•ด์‰ฌ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„์ „๋ณ„๋กœ ์ด๋™์„ ํ• ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ์ปค๋ฐ‹ ํ• ๋•Œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ• ์ˆ˜์žˆ๋‹ค
  • add๋กœ ์ถ”๊ฐ€๋œ ๋ณ€๊ฒฝ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ๋ฒ„์ „์œผ๋กœ ํฌ์žฅํ•˜๋Š” ์ž‘์—…์ด๋ผ๊ณ  ์ƒ๊ฐ ํ•˜๋ฉด๋œ๋‹ค.

push

  • add, commit์ดํ›„ ํ•ด๋‹น ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์›๊ฒฉ ์„œ๋ฒ„์— ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น์–ด
  • ์ด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ์ง์ ‘์ ์œผ๋กœ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋œ๋‹ค.
  • git push origin master // origin ๋ฆฌ๋ชจํŠธ ์„œ๋ฒ„์˜ master ๋ธŒ๋žœ์น˜๋กœ ๋ฐ˜์˜

git ์ฐธ๊ณ 

GitFlow

Merge Conflict

  • ์›๊ฒฉ ์ €์žฅ์†Œ ์‚ฌ์šฉ์‹œ ๋ฐœ์ƒํ• ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ
  • ๋™์‹œ์— ๊ฐ™์€ ํŒŒ์ผ์˜ ๊ฐ™์€ ๋ถ€๋ถ„์— ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ •์ด ์ด๋ฃจ์–ด์ง„ ์ƒํ™ฉ
  • ๋‘˜์ค‘ ํ•˜๋‚˜๋งŒ ๋ฐ˜์˜, ์•„๋‹ˆ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์„์ง€ ์„ ํƒํ• ์ˆ˜์žˆ๋‹ค.

๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์œ„์˜ ํ•ฉ๋ณ‘ ์ถฉ๋Œ์˜ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ ํ•˜๊ธฐ์œ„ํ•ด ๊ฐ์ž ๋งก์€ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์—์„œ ๊ฐ์ž ๊ฐœ๋ฐœ

๋ธŒ๋žœ์น˜ ์ „๋žต

  • Git์‚ฌ์šฉ์‹œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌ ํ• ์ˆ˜์žˆ์„๊นŒํ•˜๋Š” ๊ด€์ ์—์„œ ์„ธ์šฐ๋Š” ์ „๋žต
  • ๋Œ€ํฌ์ ์œผ๋กœ GitFlow๊ฐ€ ์žˆ๋‹ค

GitFlow ์ „๋žต ์„ค๋ช…

  • master์™€ develop ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์‹œ์ž‘ํ•˜๋Š” ์ „๋žต
  • master๋กœ๋Š” ์ ˆ๋Œ€ ์ง์ ‘ ์ปค๋ฐ‹์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • develop์€ ํ˜„์žฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜.
  • develop์œผ๋กœ ๋ถ€ํ„ฐ feature๋ณ„๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ๋Šฅ๋ณ„ ๋ธŒ๋žœ์น˜๋ฅผ ์ถ”๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰.

  • ์ถœ์ฒ˜ https://evan-moon.github.io/2019/07/28/git-tutorial-advanced/
  • ์œ„ ์ด๋ฏธ์ง€๋Š” ํŒŒ๋ž‘(master)์—์„œ ๋นจ๊ฐ•(develop)์„ ์ƒ์„ฑํ•˜์—ฌ ์ดˆ๋ก(AddTypeScript) ๋ถ„ํ™(kakaoLogin)๋“ฑ์˜ feature ๋ณ„๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์™„๋ฃŒ ์ดํ›„ develop์œผ๋กœ merge์‹œํ‚ค๋Š” ํ”„๋กœ์ ํŠธ ์ง„ํ–‰์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์ด๋‹ค.
  • ์ถœ์ฒ˜ https://evan-moon.github.io/2019/07/28/git-tutorial-advanced/
  • ์ดํ›„ ๊ฐœ๋ฐœ์™„๋ฃŒ ์‹œ์ ์ด ์˜ค๋ฉด master๋กœ๋ถ€ํ„ฐ release๋ฅผ ์ƒ์„ฑ ๋ชจ๋“  develop์˜ ๋‚ด์šฉ์„ ๋ฐ˜์˜ ์‹œํ‚จ๋‹ค realease๋Š” ๋ฐฐํฌ๋งŒ๋“ค ์œ„ํ•œ ๋ธŒ๋žœ์น˜ ์ด๋ฏ€๋กœ ๋ฐฐํฌ๊ฐ€ ๋๋‚˜๋ฉด ๋ฒ„๋ ค์ง„๋‹ค
  • ์œ„ ์ด๋ฏธ์ง€๋Š” realease๋ฅผ ์ƒ์„ฑํ›„ develop์„ mergeํ•˜๊ณ  ์™„๋ฃŒ๊ฐ€ ๋˜์–ด master๋กœ merge๋˜๋Š” ํ๋ฆ„์„ ๋ณด์—ฌ์ค€๋‹ค
  • ์ถœ์ฒ˜ https://evan-moon.github.io/2019/07/28/git-tutorial-advanced/
  • ์ฆ๊ฐ„์— Hotfix๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ
  • ๊ฐœ๋ฐœ ๋„์ค‘ ๊ธด๊ธ‰ํ•œ ๋ฒ„๊ทธ ํ”ฝ์Šค๊ฐ€ ์ด๋ฃจ์–ด ์ ธ์•ผ ํ•˜๋Š”๊ฒฝ์šฐ develop์—์„œ hotfix๋ถ„๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ง€๊ธˆ ์ง„ํ–‰์ค‘์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„์ „ํžˆ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์€ ๊ธฐ๋Šฅ๋“ค๋„ ํฌํ•จ๋ ์ˆ˜๊ฐ€ ์žˆ์–ด ์ด๊ฒฝ์šฐ์—๋Š” master๋กœ๋ถ€ํ„ฐ hotfix๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ ๊ณ ์นœํ›„ master๋กœ ํ•ฉ๋ณ‘ ์‹œํ‚จ๋‹ค
  • ์œ„ ๊ทธ๋ฆผ์—์„œ ์ž˜ ๋ณด๋ฉด hotfix๊ฐ€ master๋กœ ํ•ฉ๋ณ‘๋œ์ดํ›„ develop์— ์—†๋Š” ๊ธฐ๋Šฅ์ธhotfix๋‚ด์šฉ์„ ๋ฐ˜์˜ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•ฉ๋ณ‘ ์‹œํ‚ค๋Š” ๋ชจ์Šด์„ ๋ณผ์ˆ˜์žˆ๋‹ค.

๋ธŒ๋žœ์น˜ ํ•ฉ๋ณ‘ Merge

์ •์˜

  • ์„œ๋กœ๋‹ค๋ฅธ ๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์„œ๋กœ ํ•ฉ์น˜๋Š” ๊ธฐ๋Šฅ

๋ช…๋ น์–ด

Merge

  • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ•ฉ๋ณ‘, merge commit์„ ๋‚จ๊ธด๋‹ค
  • git checkout master
  • git merge feature

Merge and squash

  • git checkout master
  • git merge โ€“squash feature
  • ์ผ๋ฐ˜ ํ•ฉ๋ณ‘์€ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜์˜ ๋ชจ๋“  ์ปค๋ฐ‹์„ ๊ทธ๋Œ€๋กœ ํƒ€๊ฒŸ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜ํ•˜์ง€๋งŒ squash์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€์ƒ ๋ธŒ๋žœ์น˜์˜ ๋ชจ๋“  ์ปค๋ฐ‹์„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ํ•ฉ์น˜๊ณ  ํƒ€๊ฒŸ ๋ธŒ๋žœ์น˜์— ํ•ฉ๋ณ‘ ์‹œํ‚จ๋‹ค

Rebase

  • git checkout feature
  • git rebase master
  • ํ•ฉ๋ณ‘ ์ดํ›„feature๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์ด master์˜ ๋‚ด์šฉ์ธ๊ฒƒ์ฒ˜๋Ÿผ ๋œ๋‹ค feature์˜ ๊ธฐ์ ์ด master์˜€๋˜๊ฒƒ์ฒ˜๋Ÿผ๋œ๋‹ค.
  • ๋ฌธ์ œ์ 
  • ๋‹ค๋ฅธ ํŒ€์›๋“ค์—๊ฒŒ๋„ ๋ฐ˜์˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์›๊ฒฉ ์„œ๋ฒ„์˜ master์™€ ๋กœ์ปฌ์˜ master๋ฅผ ๊ฐ•์ œ๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ
  • ์ถœ์ฒ˜ https://dzone.com/articles/merging-vs-rebasing
  • ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋˜๋ฉด ๋ชจ๋“  ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๊ผฌ์ด๊ฒŒ ๋ ์ˆ˜์žˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋ฆฌ๋ฒ ์ด์Šค ์ „์— ํ•ญ์ƒ squash๋ฅผ ์‚ฌ์šฉํ•œ๋’ค ํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

cherry pick

  • git checkout master
  • git cherry-pick #์ปค๋ฐ‹ํ•ด์‹œ๋„˜๋ฒ„
  • ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ์–ด๋–ค ํ•˜๋‚˜์˜ ์ปค๋ฐ‹๋งŒ ๋‚ด ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ
  • ๋ณ‘ํ•ฉ๋ณด๋‹จ ํ•ด๋‹น ์ปค๋ฐ‹์ด ๋‚ด ๋ธŒ๋žœ์น˜์— ์ปค๋ฐ‹๋˜๋Š” ํ˜•์‹์œผ๋กœ ๋ฐ˜์˜ ๋œ๋‹ค

stash

  • ์ž„์‹œ๋กœ ์ž‘์—… ๋‚ด์šฉ์„ ์ €์žฅ
  • git stash // ํ˜„์žฌ ๋ณ€๊ฒฝ๋‚ด์šฉ ์Šคํƒ์— ์ €์žฅ
  • git stash list // ์Šคํƒœ์‰ฌ ๋ชฉ๋ก์„ ํ™•์ธ
  • git stash apply //๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์Šคํƒœ์‰ฌ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ด
  • git stash brach-name // ์Šคํƒœ์‰ฌ ์ด๋ฆ„์„ branch-name์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ์Šคํƒ์— ์ €์žฅ
  • git stash apply branch-name // ์Šคํƒ์— ์ €์žฅ๋œ branch-name์„ ๊ฐ€์ ธ์˜ด
  • ์Šคํƒ์€ FIFO์ด๋ฏ€๋กœ ์ด๋ฆ„ ๋ถ™์—ฌ ์‚ฌ์šฉ ํ•˜๋Š”๊ฒƒ์„ ๊ถŒ์žฅ

Reset

  • ์ง€์ •ํ•œ ์ปค๋ฐ‹ ๋‹น์‹œ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ, ์ง€์ • ์ปค๋ฐ‹ ์ดํ›„์˜ ๋ชจ๋“  ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋Š” ์‚ญ์ œ๋จ
  • git reset โ€“hard #์ปค๋ฐ‹ํ•ด์‹œ์ฝ”๋“œ
  • hard soft mixed 3๊ฐœ์˜ ์˜ต์…˜
  • hard ์ง€์ •ํ•œ ์ปค๋ฐ‹ ์ดํ›„์˜ ํžˆ์Šคํ† ๋ฆฌ ์‚ญ์ œ, ์‚ญ์ œ๋œ ๋‚ด์šฉ์€ ๊ทธ๋Œ€๋กœ ์‚ฌ๋ผ์ง
  • soft ์ง€์ •ํ•œ ์ปค๋ฐ‹ ์ดํ›„์˜ ํžˆ์Šคํ† ๋ฆฌ ์‚ญ์ œ ์‚ญ์ œ๋œ ๋‚ด์šฉ๋“ค์€ ์Šคํ…Œ์ด์ง€(add)์ƒํƒœ๋กœ ๋Œ์•„๊ฐ
  • mixed ์ง€์ •ํ•œ ์ปค๋ฐ‹ ์ดํ›„์˜ ํžˆ์Šคํ† ๋ฆฌ ์‚ญ์ œ, ์‚ญ์ œ๋œ ๋‚ด์šฉ์€ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์€ ์ƒํƒœ
  • ๊ธฐ๋ณธ์€ mixed์ด๋‹ค

revert

  • ์ปค๋ฐ‹์„ ๋ฐ˜์ „, ์ถ”๊ฐ€ ๋œ ์ปค๋ฐ‹์ด๋ฉด ์‚ญ์ œ, ์‚ญ์ œ๋œ ์ปค๋ฐ‹์ด๋ฉด ์ถ”๊ฐ€, ๊ฒฐ๊ณผ๋Š” ์ปค๋ฐ‹์œผ๋กœ ๋ฐ˜์˜๋จ
  • git revert #์ปค๋ฐ‹ํ•ด์‹œ์ฝ”๋“œ
  • git revert #์ปค๋ฐ‹ํ•ด์‹œ์ฝ”๋“œโ€ฆ#์ปค๋ฐ‹ํ•ด์‹œ์ฝ”๋“œ // ๋ฒ”์œ„์˜ ์ปค๋ฐ‹์„ ๋ชจ๋“œ ๋˜๋Œ๋ฆผ
  • git revert HEAD // ํ˜„์žฌ ํ—ค๋“œ๊ฐ€ ์œ„์น˜ํ•œ ์ปค๋ฐ‹์„ ๋˜๋Œ๋ฆฐ๋‹ค.

GitFlow ์ฐธ๊ณ