원격 발산 상태

원격 발산 상태 (remote diverged)

  • 같은 브랜치의 로컬 버전과 원격 버전에 서로 다른 커밋이 들어가서 달라진 상태
  • 원격 브랜치에 다른 사람이 커밋 또는 머지를 했는데 이를 로컬에 반영하지 않은 상태에서 커밋을 해 버려서 발생

%%{
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"

원격 발산 상태의 예방

  • 로컬 브랜치에 커밋하기 전에 원격 브랜치를 로컬에 반영하는 작업을 하면 발생 확률을 줄일 수 있음

원격 발산 상태의 해결

  • 해결 방법
    1. 로컬 브랜치의 작업을 백업한 후 로컬 브랜치에서 없애고 원격 브랜치 내용을 그대로 반영
    2. 로컬 브랜치에서 원격 브랜치를 머지하여 다시 원격 브랜치에 반영
    3. 로컬 브랜치에서 원격 브랜치를 리베이스하여 다시 원격 브랜치에 반영
  • 재분기
    • 어떤 해결 방법을 사용하더라도 해결 작업을 하는 사이에 원격 브랜치에 새 커밋이 들어오면 다시 해야 함

발산 상태 재발생

  • 어떤 예방 또는 해결 방법을 사용해도 발산 상태는 재발생할 수 있음
    • 예방 또는 해결 작업을 하는 그 짧은 시간동안 다른 사람이 원격 브랜치에 다시 새 커밋을 하면 다시 발산 상태가 됨
    • 근본적으로는 개발자간 커뮤니케이션을 통해 해결해야 함