git rebase를 쓰긴 쓰는데, 원리나 그 작용을 잘 몰랐음.


그래서 푸시한 커밋에 git rebase 하지 말라라는 것도 관습적인 지침 정도로 받아들였음.


그런데, 문득 궁금해서 찾아보고 차분하게 다시 보니까, 왜 그런지 알겠더라.


git rebase를 하면 현재 브랜치를 다른 브랜치를 기반으로 재구성하는 것임.


예를 들어, 내 브랜치의 커밋이 A<-B<-C이고, rebase할 브랜치의 커밋이 D<-E<-F라면,


내 브랜치에서 "git rebase 목표브랜치" 커맨드를 실행하면, 내 브랜치의 커밋이 D<-E<-F<-A<-B<-C가 되는거지.


즉,  현재 브랜치의 히스토리가 바뀌게 됨. 


따라서, 만약 rebase이전의 브랜치를 따서 작업중인 사람이 있는 상황에서 내가 rebase한 브랜치를 올려버리면 대충돌이 발생하는것.