Eclipse에서 Git Merge/Commit 취소하기

Eclipse에서 Git 작업 중 잘못된 Merge나 Commit을 취소하는 방법입니다. EGit 플러그인을 사용하여 안전하게 이전 상태로 되돌릴 수 있습니다.

언제 사용하나요?

  • 잘못된 브랜치와 Merge한 경우
  • Commit 메시지 수정이 필요한 경우
  • Merge 충돌 해결이 복잡해진 경우
  • 실수로 잘못된 파일을 Commit한 경우

Commit 취소 (Reset)

1. Git Repositories 뷰 열기
   - Window > Show View > Git > Git Repositories

2. 로컬 브랜치 확장 > 현재 브랜치 확인

3. History 뷰에서 Reset
   - 프로젝트 우클릭 > Team > Show in History
   - 되돌리고 싶은 커밋 우클릭
   - Reset 선택

Reset 옵션:
- Soft: 커밋만 취소 (변경사항 Staged 상태 유지)
- Mixed: 커밋 + Staging 취소 (변경사항 유지)
- Hard: 모든 변경사항 삭제 (주의!)

마지막 Commit 수정 (Amend)

1. Team > Commit
2. "Amend Previous Commit" 체크
3. 메시지 수정 또는 파일 추가
4. Commit

주의: Push 이후에는 Amend 사용 금지!

Merge 취소

Merge 전으로 돌아가기:

1. Git Repositories 뷰
2. 현재 브랜치 우클릭
3. Reset > Hard
4. Merge 이전 커밋 선택

또는 History에서:
1. Team > Show in History
2. Merge 커밋 바로 이전 커밋 우클릭
3. Reset > Hard

충돌 중 Merge 취소:
1. Team > Reset > Hard
   또는
1. Team > Abort

Revert (안전한 취소)

이미 Push된 커밋 취소:

1. History에서 취소할 커밋 선택
2. 우클릭 > Revert Commit
3. 새로운 취소 커밋 생성됨

Revert는 새 커밋을 만들어 변경을 되돌리므로
Push된 커밋에도 안전하게 사용 가능

특정 파일만 되돌리기

1. 파일 우클릭 > Replace With
2. 옵션 선택:
   - HEAD Revision: 마지막 커밋 상태
   - Commit: 특정 커밋 선택
   - Branch or Tag: 다른 브랜치에서
   
또는:
1. 파일 우클릭 > Team > Discard Changes
   (마지막 커밋 상태로)

Stash 활용

작업 중인 변경사항 임시 저장:

1. 프로젝트 우클릭 > Team > Stash Changes
2. 설명 입력 후 OK
3. 작업 디렉토리가 깨끗해짐

Stash 복원:
1. Git Repositories > Stashed Commits
2. Stash 우클릭 > Apply Stashed Changes

Stash 삭제:
1. Stash 우클릭 > Delete Stashed Commit

Reflog로 복구

실수로 Hard Reset 한 경우:

1. Git Bash 또는 터미널에서:
   git reflog
   
2. 복구할 커밋 해시 확인
   abc1234 HEAD@{1}: reset: moving to HEAD~1
   def5678 HEAD@{2}: commit: 원래 커밋
   
3. Eclipse에서:
   Team > Reset > def5678 (커밋 해시 입력)

충돌 해결 중 취소

Merge 충돌 상태에서 취소:

1. Team > Reset > Hard > HEAD
   (Merge 시작 전 상태로)
   
또는:
1. Team > Abort (Merge/Rebase)

Pull 충돌 취소:
1. 같은 방법으로 Reset Hard

브랜치 삭제 복구

1. Reflog에서 브랜치 마지막 커밋 확인
   git reflog | grep "브랜치명"
   
2. 브랜치 재생성
   git branch 브랜치명 해시값
   
3. Eclipse에서 Refresh

주의사항

  • Hard Reset은 변경사항 영구 삭제됨
  • Push된 커밋은 Reset 대신 Revert 사용
  • 팀 작업 시 Force Push 금지
  • 중요 작업 전 Stash 또는 브랜치 생성