Skip to content

Latest commit

Β 

History

History
59 lines (50 loc) Β· 3.25 KB

undoing-a-commit.ko.md

File metadata and controls

59 lines (50 loc) Β· 3.25 KB

둜컬 컀밋 되돌리기

λ‘œμ»¬μ—μ„œ 컀밋을 μœ„ν•΄ μŠ€ν…Œμ΄μ§• μ˜μ—­μ— μΆ”κ°€ν•œ μž‘μ—… λ‚΄μš©μ„ 되돌리기 μœ„ν•΄μ„œλŠ” λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€.

git reset

μœ„ λͺ…λ Ήμ–΄λŠ” μˆ˜μ •ν•œ μ½”λ“œκ°€ 반영된 μŠ€ν…Œμ΄μ§• μ˜μ—­μ„ κ°€μž₯ μ΅œκ·Όμ— λ°˜μ˜ν•œ μ»€λ°‹μƒνƒœλ‘œ λ˜λŒλ¦½λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ—¬λŸ¬λΆ„μ˜ μž‘μ—… 디렉토리에 μˆ˜μ •ν•œ λ‚΄μš©λ“€μ€ λ³€κ²½λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ—¬λŸ¬λΆ„μ΄ μˆ˜μ •ν•œ μ†ŒμŠ€λ₯Ό λ‹€μ‹œ 컀밋할 수 μžˆμŠ΅λ‹ˆλ‹€. 만일 이미 μŠ€ν…Œμ΄μ§• μ˜μ—­μ— 반영된 μˆ˜μ •ν•œ νŒŒμΌλ“€ μ€‘μ—μ„œ ν•˜λ‚˜μ˜ 파일만 μ»€λ°‹μ—μ„œ μ œκ±°ν•˜κΈ°λ₯Ό 원할 경우, μ•„λž˜ λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€.

git reset <file>

이 λͺ…λ Ήμ–΄λŠ” μŠ€ν…Œμ΄μ§• μ˜μ—­μ—μ„œ ν•΄λ‹Ή 파일만 μ œκ±°ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μž‘μ—… λ””λ ‰ν† λ¦¬μ—λŠ” λ³€κ²½λœ 파일 μƒνƒœ κ·ΈλŒ€λ‘œ 남아 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ git reset μ‚¬μš©λ²•μ— κ΄€ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.

# λ¨Όμ € index.php 와 tutorial.php νŒŒμΌμ„ μˆ˜μ •ν•©λ‹ˆλ‹€.
# μŠ€ν…Œμ΄μ§• μ˜μ—­μ— νŒŒμΌμ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
$ git add .
# 두 νŒŒμΌμ„ 각각 μ»€λ°‹ν•΄μ•Όν•˜λ―€λ‘œ
# tutorial.php νŒŒμΌμ„ μŠ€ν…Œμ΄μ§• μ˜μ—­μ—μ„œ μ œκ±°ν•©λ‹ˆλ‹€.
$ git reset tutorial.php
# index.php νŒŒμΌμ„ λ¨Όμ € μ»€λ°‹ν•©λ‹ˆλ‹€.
$ git commit -m "Changed index.php"
# λ‹€μŒμœΌλ‘œ tutorial.php νŒŒμΌμ„ μ»€λ°‹ν•©λ‹ˆλ‹€.
$ git add tutorial.php
$ git commit -m "Changed tutorial.php"

둜컬 μ €μž₯μ†Œμ— λ¬Έμ œκ°€ 생겨 μ—¬λŸ¬λΆ„μ˜ μ½”λ“œλ₯Ό λ§ˆμ§€λ§‰ 컀밋 μƒνƒœλ‘œ λͺ¨λ‘ 되돌리고 μ‹Άλ‹€λ©΄ μ•„λž˜ λͺ…령을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

git reset --hard 

이 λͺ…λ Ήμ–΄λŠ” μŠ€ν…Œμ΄μ§• μ˜μ—­μ„ λ§ˆμ§€λ§‰ 컀밋 μƒνƒœλ‘œ λ˜λŒλ¦¬λŠ” 것 뿐만 μ•„λ‹ˆλΌ μ—¬λŸ¬λΆ„μ˜ λ‘œμ»¬μ— λ³€κ²½λœ νŒŒμΌλ„ 되돌릴 수 μžˆμŠ΅λ‹ˆλ‹€. --hard λͺ¨λ“œλŠ” Git으둜 ν•˜μ—¬κΈˆ μž‘μ—… 디렉토리에 λŒ€ν•œ 변경듀도 되돌릴 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ‘œμ»¬μ—μ„œ κ°œλ°œν•œ λͺ¨λ“  개발 λ‚΄μš©μ„ μ΄ˆκΈ°ν™”ν•΄λ„ λ˜λŠ”μ§€ λ°˜λ“œμ‹œ 확인 ν›„ μ‹€ν–‰ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€.

λ‹€μŒμ€ git reset --hard μ‚¬μš©μ— κ΄€ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.

# μ—‰λš±ν•œ μ‹€ν—˜μ„ μ‹œμž‘ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.
# λ¨Όμ € 'crazy.php' νŒŒμΌμ„ λ§Œλ“€κ³  μ½”λ“œλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
# 그리고 crazy.php νŒŒμΌμ„ μ»€λ°‹ν•©λ‹ˆλ‹€.
$ git add crazy.php 
$ git commit -m "Started a crazy dev"
# crazy.php νŒŒμΌμ„ λ‹€μ‹œ μˆ˜μ •ν•˜κ³  기타 μ—¬λŸ¬ νŒŒμΌλ“€μ„ μƒμ„±ν•˜κ³  μˆ˜μ •ν•©λ‹ˆλ‹€.
# 그리고 μˆ˜μ •ν•œ λͺ¨λ“  νŒŒμΌμ„ μŠ€ν…Œμ΄μ§• μ˜μ—­μ— μΆ”κ°€ν•˜κ³  μ»€λ°‹ν•©λ‹ˆλ‹€.
$ git add .
$ git commit -m "Continued dev"
# ν…ŒμŠ€νŠΈν•˜κ³  λ§ˆμΉ©λ‹ˆλ‹€.
# μ‹€ν—˜ν•˜κΈ° μ „ μƒνƒœλ‘œ 되돌리기 μœ„ν•΄ λͺ¨λ“  μˆ˜μ •μ‚¬ν•­μ„ μ œκ±°ν•©λ‹ˆλ‹€.
$ git reset --hard HEAD~2

git reset --hard HEAD~2 λͺ…λ Ήμ–΄λŠ” ν˜„μž¬ λΈŒλžœμΉ˜μ—μ„œ μ—¬λŸ¬λΆ„μ΄ μˆ˜μ •ν•œ μ΄μ „μ˜ 컀밋듀 쀑에 2번째 컀밋 포인트 μƒνƒœλ‘œ 이동함과 λ™μ‹œμ— ν•΄λ‹Ή 컀밋듀에 λŒ€ν•œ 변경사항듀이 이전 μƒνƒœλ‘œ λ³΅κ΅¬λ©λ‹ˆλ‹€. 그리고 ν”„λ‘œμ νŠΈ νžˆμŠ€ν† λ¦¬μ—μ„œ 이전에 μΆ”κ°€λœ 2개의 μŠ€λƒ…μƒ·μ΄ μ œκ±°λ©λ‹ˆλ‹€.

P.s. 만일 μ—¬λŸ¬λΆ„μ˜ 곡유 μ €μž₯μ†Œλ‘œ 이미 pushλ₯Ό μ™„λ£Œν•œ μƒνƒœμ—μ„œ git reset --hard λͺ…령을 μ‹€ν–‰ν•  경우, ν•΄λ‹Ή μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ‚¬λžŒλ“€μ—κ²Œ 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆμœΌλ―€λ‘œ μ ˆλŒ€ μ‹€ν–‰ν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€.