[Git/Github] git checkout, reset, revert

soyiยท2021๋…„ 3์›” 15์ผ
0

Git / Github

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

๐Ÿ’ป ์ž‘์—… ๋˜๋Œ๋ฆฌ๊ธฐ

๐Ÿ“Œ git commit --amend : commit ์ˆ˜์ •ํ•˜๊ธฐ

git commit์˜ --ament ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๊ทผ์˜ ์ปค๋ฐ‹์„ ์žฌ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋งˆ์ง€๋ง‰ commit ํ›„ ์ˆ˜์ •์‚ฌํ•ญ์ด ์—†๋Š” ๊ฒฝ์šฐ, ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋งŒ ์ˆ˜์ •ํ•œ๋‹ค.
  • ๋น ํŠธ๋ฆฐ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, git add <file>๋กœ ๋น ํŠธ๋ฆฐ ํŒŒ์ผ์„ staging ํ•˜๊ณ , git commit --amend ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹๊ณผ ๋ฐฉ๊ธˆ ์ž…๋ ฅํ•œ ์ปค๋ฐ‹(--amend ์˜ต์…˜์„ ์ค€ ์ปค๋ฐ‹)์€ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ๊ธฐ๋ก๋œ๋‹ค.

๐Ÿ“Œ git checkout : modified ํŒŒ์ผ ๋˜๋Œ๋ฆฌ๊ธฐ

git checkout -- <file> ๋ช…๋ น์€ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์—์„œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ด๋‹ค. ์ฆ‰ modified ํŒŒ์ผ์—์„œ unmodified ํŒŒ์ผ๋กœ ๋ณต๊ตฌํ•œ๋‹ค.

  • checkout์œผ๋กœ ์ง€์›Œ๋ฒ„๋ฆฐ ๋‚ด์šฉ์€, commitํ•˜์ง€ ์•Š๊ณ  ์ง€์šด ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ“Œ git reset HEAD : staged ํŒŒ์ผ์„ unstaged๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ

git reset HEAD <file> ๋ช…๋ น์€ Staging Area์— ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ, staged ํŒŒ์ผ์„ stage์—์„œ ๋‚ด๋ ค unstaged ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
git reset HEAD ๊ณผ ๊ฐ™์ด ํŒŒ์ผ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์Šคํ…Œ์ด์ง€์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ๋˜๋Œ๋ฆฐ๋‹ค.

  • HEAD : ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

๐Ÿ“Œ git reset HEAD^ ๋˜๋Š” HEAD~(n) : ์ตœ๊ทผ ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ

git reset HEAD^ ๋ช…๋ น์€ ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹์„ ๋˜๋Œ๋ฆฐ๋‹ค. (์ทจ์†Œํ•œ๋‹ค.)

  • HEAD^ : ํ˜„์žฌ HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธŒ๋žœ์น˜์˜ ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹. ๋ถ€๋ชจ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • HEAD~(n) : ํ˜„์žฌ HEAD๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” n๋ฒˆ์งธ ์ตœ์‹  ์ปค๋ฐ‹. (HEAD~๊ณผ HEAD^๋Š” ๊ฐ™๋‹ค.) ์ตœ๊ทผ 3๊ฐœ์˜ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•˜๋ ค๋ฉด git reset HEAD~3 ์‚ฌ์šฉ

๐Ÿ’ก reset ์˜ต์…˜

  • --soft HEAD^ : ์ตœ๊ทผ ์ปค๋ฐ‹์„ ํ•˜๊ธฐ ์ „ ์ƒํƒœ๋กœ ์ž‘์—…ํŠธ๋ฆฌ ๋˜๋Œ๋ฆผ
  • --mixed HEAD^ : ์ตœ๊ทผ ์ปค๋ฐ‹๊ณผ ์Šคํ…Œ์ด์ง• ์ „ ์ƒํƒœ๋กœ ์ž‘์—… ํŠธ๋ฆฌ ๋˜๋Œ๋ฆผ. ์˜ต์…˜ ์—†๋Š” ๊ฒฝ์šฐ์˜ default ์ž‘๋™
  • --hard HEAD^ : ์ตœ๊ทผ ์ปค๋ฐ‹๊ณผ ์Šคํ…Œ์ด์ง•, ํŒŒ์ผ ์ˆ˜์ • ์ „์œผ๋กœ ์ž‘์—… ํŠธ๋ฆฌ ๋˜๋Œ๋ฆผ. ๋˜๋Œ๋ฆฐ ๋‚ด์šฉ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์Œ.

๐Ÿ“Œ git reset ์ปค๋ฐ‹ ํ•ด์‹œ : ํŠน์ • ์ปค๋ฐ‹์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ

git reset --hard <commit hash> ๋ช…๋ น์€ ํ•ด์‹œ์— ํ•ด๋‹นํ•˜๋Š” ์ปค๋ฐ‹ ์ดํ›„์— ๋งŒ๋“ค์—ˆ๋˜ ์ปค๋ฐ‹์€ ๋ชจ๋‘ ์‚ญ์ œ/์ทจ์†Œํ•˜๊ณ , ํ•ด๋‹น ์ปค๋ฐ‹์œผ๋กœ ์ด๋™ํ•œ๋‹ค. (ํ•ด๋‹น ์ปค๋ฐ‹์ด ์ตœ์‹  ์ปค๋ฐ‹์ด ๋œ๋‹ค.) ๋˜๋Œ์•„๊ฐˆ commit์˜ hash๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  • ์ปค๋ฐ‹ ํ•ด์‹œ๋Š” git log ๊ฒฐ๊ณผ ํ™”๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ git revert : ์ปค๋ฐ‹ ์ทจ์†Œํ•˜์ง€ ์•Š๊ณ  ๋˜๋Œ๋ฆฌ๊ธฐ

git revert <commit hash> ๋ช…๋ น์€ ํ•ด์‹œ์— ํ•ด๋‹นํ•˜๋Š” ์ปค๋ฐ‹์—์„œ ๋ณ€๊ฒฝํ–ˆ๋˜ ์ด๋ ฅ์„ ์ทจ์†Œํ•œ ์ƒํƒœ์˜, ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ๋งŒ๋“ ๋‹ค. ์ƒˆ ์ปค๋ฐ‹์„ ๊ธฐ๋กํ•˜์—ฌ, ์ด์ „ ์ปค๋ฐ‹์˜ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ทจ์†Œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ž„. hash์—๋Š” ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ทจ์†Œํ•˜๋ ค๋Š” commit์˜ hash๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  • ๋˜๋Œ๋ฆด ์ปค๋ฐ‹์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ, <hash1>..<hash2>์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฒ”์œ„๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.



References

Git-scm : Git์˜ ๊ธฐ์ดˆ ๋˜๋Œ๋ฆฌ๊ธฐ
Git-scm : Reset ๋ช…ํ™•ํžˆ ์•Œ๊ณ  ๊ฐ€๊ธฐ
์ฑ… <์ง€์˜ฅ์—์„œ ์˜จ ๋ฌธ์„œ ๊ด€๋ฆฌ์ž ๊นƒ&๊นƒํ—ˆ๋ธŒ ์ž…๋ฌธ>

profile
ใƒพ(^โ–ฝ^*)))

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