Git

Git : rebase, merge, 그리고 stash

코샵 2023. 9. 9. 10:54
반응형

Git은 다양한 고급 기능을 제공하여 복잡한 작업 흐름에 대응할 수 있게 해줍니다. 이 글에서는 Git의 rebase, merge, 그리고 stash에 대해 알아보겠습니다.

rebase vs merge

두 명령어 모두 브랜치 간의 변경사항을 통합하는 데 사용되지만, 사용 방식과 결과가 다릅니다.

merge

merge는 두 브랜치를 합칠 때, 두 브랜치의 공통 조상과 각 브랜치의 최신 커밋을 사용하여 새로운 커밋을 생성합니다.

$ git checkout main
$ git merge feature-branch

 

이렇게 하면 feature-branch의 모든 변경사항이 main 브랜치에 통합됩니다.

장점 : 원래의 브랜치 히스토리가 유지됩니다.
단점 : 복잡한 브랜치 히스토리가 생성될 수 있습니다.

 

rebase

rebase는 현재 브랜치의 커밋을 임시로 저장하고, 대상 브랜치의 커밋으로 현재 브랜치를 업데이트한 후, 임시로 저장한 커밋을 다시 적용합니다.

$ git checkout feature-branch
$ git rebase main

 

장점 : 선형적인 커밋 히스토리를 생성합니다.
단점 : 과거의 커밋 히스토리를 변경하므로 협업 중인 경우 다른 사용자와 충돌이 발생할 수 있습니다.


stash : 변경사항 임시 저장 및 복구

현재의 작업을 임시로 저장하고, 나중에 다시 불러와 계속 진행할 수 있게 해주는 기능입니다.

임시 저장하기

$ git stash save "임시 저장 메시지"


임시 저장된 목록 보기

$ git stash list

 

임시 저장된 변경사항 복구하기

$ git stash apply stash@{0}   # 가장 최근의 stash 적용

 

 

임시 저장된 변경사항 제거하기

$ git stash drop stash@{0}

 

Tip: git stash pop은 apply와 drop을 동시에 수행합니다.

 

마치며

Git은 다양한 고급 기능을 제공하여 개발자의 다양한 요구사항을 충족시켜줍니다. 이러한 고급 기능들을 잘 활용하면 보다 효율적인 개발 및 협업이 가능합니다. 이 글을 통해 rebase, merge, stash에 대한 기본적인 이해를 얻었기를 바랍니다.