프로그래밍

Git 헷갈리는 명령어 정리- 기본편 ( + merge vs rebase )

ohlee52 2025. 3. 13. 11:15
반응형


Git을 사용할 때, 한두 번 써본 적은 있지만 매번 헷갈려서 다시 검색하는 명령어들이 있다.

 이번 포스팅에서는 자주 헷갈리는 Git 명령어들을 정리해보았다.

그리고 merge 와 rebase , reset 와 revert 중 언제 뭘 쓰면 좋을지도 간단히 비교해봤다.

---

1.   git rebase   vs   git merge

 🔹 git merge


- 현재 브랜치에 다른 브랜치의 변경 사항을 **새로운 병합 커밋(Merge Commit)** 으로 통합
- 기록이 남아 히스토리가 복잡해질 수 있음

git checkout feature-branch
git merge main


🔹 git rebase


- 다른 브랜치의 변경 사항을 현재 브랜치의 **기본(Base)으로 삼아 변경사항을 적용**
- 히스토리가 깔끔하게 유지됨

git checkout feature-branch
git rebase main


**❓ 언제 사용해야 할까?**
- 히스토리를 깔끔하게 유지하고 싶다면 **`rebase`**
- 협업 중이고, 기존 커밋 히스토리를 유지해야 한다면 **`merge`**


2. git reset  vs  git revert

🔹 git reset


- 특정 커밋 이전으로 **되돌리는 명령어**
- `--soft`, `--mixed`, `--hard` 옵션이 있음

git reset --soft HEAD~1   # 마지막 커밋만 되돌리지만 변경 사항은 유지
git reset --hard HEAD~1   # 마지막 커밋 삭제 + 변경 사항도 모두 제거


🔹 git revert


- 특정 커밋을 **취소하는 새로운 커밋을 생성**
- 협업 시 안전하게 사용 가능

git revert HEAD  # 가장 최근 커밋을 취소


**❓ 언제 사용해야 할까?**
- **혼자 작업 중이라면** `reset`
- **팀 프로젝트라면** `revert`

3. 이미 `push`한 커밋 수정하기 (`git commit --amend`)

🔹 가장 최근 커밋 메시지 수정

git commit --amend -m "수정된 커밋 메시지"


🔹 최근 커밋에 변경 사항 추가

git add .
git commit --amend --no-edit


🚨 **이미 원격 저장소에 `push`한 경우, 강제 푸시 필요** 🚨

git push --force


**⚠️ 주의:** 협업 중인 브랜치에서는 `--force` 사용 시 다른 사람의 작업이 날아갈 수 있음!

 4. `git cherry-pick` – 특정 커밋만 가져오기

(특정 브랜치의 커밋 하나만 현재 브랜치로 가져오고 싶을 때 사용)

git checkout main
git cherry-pick <커밋해시>


 5. `git stash` – 작업 중 변경사항 임시 저장

(작업 도중 브랜치를 변경해야 할 때, 변경 사항을 임시 저장할 수 있음)

🔹 변경 사항 저장하기

git stash


🔹 저장된 변경 사항 적용하기

git stash pop


🔹 여러 개의 stash 중 특정 stash 적용하기

git stash list
git stash apply stash@{1}



## 마무리
이 외에도 자주 헷갈리는 Git 명령어들이 많지만, 위에서 정리한 것들이 특히 많이 찾아보게 되는 명령어들이다.
Git을 더 편하게 사용하려면, 주기적으로 연습해보거나 **Alias(단축 명령어)** 를 만들어두는 것도 좋은 방법이다.

궁금한 점이나 추가로 정리했으면 하는 명령어가 있다면 댓글로 남겨주세요! 🚀

반응형