-
[협업] git 작업브랜치 main (마스터) branch 기준으로 최신화 하기성장과정(dev)/Git (feat. github, bitbucket) 2025. 1. 7. 23:02
Git Pull vs Git Rebase
https://www.atlassian.com/git/tutorials/merging-vs-rebasing
문서 내용 정리해보자면
git pull 은 git fetch & git merge 을 연이어 실행하는 것이다.
그래서 git rebase 와 git merge 를 비교해보기로 하자.
[[참고]]
ex) $ git fetch origin
git fetch는 **원격 저장소(remote)**의 변경 사항을 로컬 저장소로 가져오지만, 로컬 브랜치에는 병합하지 않는 명령어입니다.
git 브랜치 상황 예시
main 으로부터 새로운 나의 feature branch A 에서 작업중이다.
main 에 새로운 커밋이 들어왔고, 내가 작업중인 내용과 관련이 있기 때문에 이 커밋을 가져와야한다.
이 때, 커밋을 A 브랜치로 가져오는 두가지 방법 merging or rebasing가 있다.
1. merging 사용하기 (main 의 최신 내용을 feature 브랜치로 가져오기)
git checkout feature git merge main
2. rebasing
이건 내가 자주 사용하던 방법인데, 뭐가 문젠가 했다.
rebase 는 커밋 히스토리 를 다시 작성한다. 커밋 번호가 바뀐다는 뜻이다.
문제상황 ex
- 협업 중 충돌 가능성
다른 개발자와 협업할 때, 이미 공유된 커밋을 Rebase하면 커밋 번호가 바뀌어 다른 개발자들의 작업 내역과 충돌이 발생할 수 있습니다. - 커밋 히스토리 추적 어려움
Rebase를 하면 커밋 히스토리가 깔끔하게 정리되지만, 기존 커밋 번호가 바뀌기 때문에 과거의 작업 히스토리를 추적하기 어려워질 수 있습니다.
그래서 협업 중 공유된 브랜치에서는 절대!절대! rebase 하지 말 것
git update
마지막으로, intellij 에서 git Update Project 는 merge 와 rebase 중 선택할 수 있는 기능임
'성장과정(dev) > Git (feat. github, bitbucket)' 카테고리의 다른 글
git remote 연동 시 failed to push some refs to {git url} 에러 (0) 2024.11.20 git 을 이용해서 협업하는 법 (git 방법론) (0) 2024.01.24 github token Support for password authentication was removed on August 13, 2021. (0) 2023.05.15 git reset 으로 특정 파일 unstage 로 변경하기 (0) 2023.04.24 git branch base 변경하기 (0) 2022.12.27 - 협업 중 충돌 가능성