Git&Github

30. [Git] 협업에서 rebase 이용하기

drizzle0925 2021. 9. 3. 13:06
728x90

왼쪽, 오른쪽에서 각각 다른 사람이 협업하고 가정하겠습니다.

 

우선 왼쪽에서 파일을 만들어서 원격저장소에 push 합니다.

 

왼쪽에 2개의 버전을 만들어 L1까지만 원격 저장소에 저장된 상태입니다.

오른쪽에서 pull 해서 버전을 가져와 보도록 하겠습니다.

원격 저장소에 저장된 L1까지 받아온 게 보입니다.

 

이 상태에서 왼쪽은 push를 하고 오른쪽은 right.txt라는 파일 만들어서 commit 하겠습니다.

 

로그를 확인해보면 왼쪽은 L2까지 원격 저장소에 push 하였고 오른쪽에는 아직 L2에 대한 정보가 없습니다.

오른쪽에서 fetch를 해서 로그 이력을 최신화하겠습니다.

 

오른쪽 작업자의 로그를 확인해보면 L1브랜치에서 L2와 R1으로 분리된 것을 확인할 수 있습니다.

이대로 merge를 해서 L2 내용을 받아보겠습니다.

 

merge 하면 커밋 메시지 창이 열리는데 이대로 닫겠습니다.

 

그러고 나서 로그를 확인해보면 R1 커밋, L2 커밋, 그리고 merge 한 커밋 이력이 남아 있습니다.

이 merge커밋 이력을 rebase를 써서 깔끔하게 정리해보겠습니다.

 

현재 로그는 아래와 같습니다.

왼쪽은 L3 버전을 만들고 push까지 합니다.

오른쪽은 R2 버전을 만들고 commit까지 합니다.

 

왼쪽에서는 L3버전을 생성 후 push, 오른쪽은 R2 버전을 만들기만 했습니다.

 

로그는 아래와 같습니다.

이번에는 오른쪽에서 fetch를 하고 rebase를 통해 log를 깔끔하게 정리해 보겠습니다.

 

오른쪽에서 fetch를 실행합니다.

 

로그는 아래와 같습니다.

origin/rebase로 rebase를 실행합니다.

 

conflict(충돌)이 없기 때문에 자동으로 rebase 되었습니다.

 

log를 확인해 보겠습니다.

merge commit 없이 깨끗하게 처리되었습니다.

이대로 push 하고 왼쪽에서 pull 해서 양쪽 로그를 확인해 보겠습니다.

 

이렇게 하면 군더더기 없는 commit 이력을 관리할 수 있습니다.

 

주의점으로는 rebase는 이미 배포된 버전에서는 하시면 안 됩니다.

원격 저장소에 올라가진 않은 커밋 버전을 rebase 하는 걸 추천합니다.

협업 주에 원격 저장소에 업로드된 버전을 rebase 하다가 프로젝트가 엉망진창이 될 수 있습니다.

728x90