%%{
init: {
"gitGraph": {
"mainBranchName": "origin/main",
"rotateCommitLabel": false
},
"themeVariables": {
"commitLabelColor": '#000000',
"commitLabelBackground": '#ffffff',
"commitLabelFontSize": '15px'
}
}}%%
gitGraph
commit id:"c0"
branch "main"
checkout "main"
commit id:"c1"
checkout "origin/main"
commit id:"c2"
원격 발산 상태
원격 발산 상태 (remote diverged)
- 같은 브랜치의 로컬 버전과 원격 버전에 서로 다른 커밋이 들어가서 달라진 상태
- 원격 브랜치에 다른 사람이 커밋 또는 머지를 했는데 이를 로컬에 반영하지 않은 상태에서 커밋을 해 버려서 발생
원격 발산 상태의 예방
- 로컬 브랜치에 커밋하기 전에 원격 브랜치를 로컬에 반영하는 작업을 하면 발생 확률을 줄일 수 있음
원격 발산 상태의 해결
- 해결 방법
- 로컬 브랜치의 작업을 백업한 후 로컬 브랜치에서 없애고 원격 브랜치 내용을 그대로 반영
- 로컬 브랜치에서 원격 브랜치를 머지하여 다시 원격 브랜치에 반영
- 로컬 브랜치에서 원격 브랜치를 리베이스하여 다시 원격 브랜치에 반영
- 재분기
- 어떤 해결 방법을 사용하더라도 해결 작업을 하는 사이에 원격 브랜치에 새 커밋이 들어오면 다시 해야 함
발산 상태 재발생
- 어떤 예방 또는 해결 방법을 사용해도 발산 상태는 재발생할 수 있음
- 예방 또는 해결 작업을 하는 그 짧은 시간동안 다른 사람이 원격 브랜치에 다시 새 커밋을 하면 다시 발산 상태가 됨
- 근본적으로는 개발자간 커뮤니케이션을 통해 해결해야 함