programing

Git 병합 충돌 시 생성되는 BACKUP, BASE, LOCAL 및 REMOTE 파일은 무엇입니까?

skycolor 2023. 6. 21. 22:28
반응형

Git 병합 충돌 시 생성되는 BACKUP, BASE, LOCAL 및 REMOTE 파일은 무엇입니까?

LOCAL 및 REMOTE 파일은 이름 그대로일 것입니다. BASE 및 BACKUP은 무엇을 위한 것입니까?

Git는 3방향 병합을 수행하여 병합할 두 분기의 공통 조상(" 병합 기준")을 찾습니다.호출할 때git mergetool충돌 시 일반적인 3방향 병합 도구에 공급하기에 적합한 파일을 생성합니다.따라서:

  • foo.LOCAL분쟁의 "우리의" 측면 - 즉, 당신의 가지 (HEAD병합의 결과를 포함할 것입니다.
  • foo.REMOTE충돌의 "심각한" 측면 - 당신이 병합하고 있는 분기.HEAD
  • foo.BASE공통 조상3방향 병합 도구에 삽입하는 데 유용한
  • foo.BACKUP병합 도구를 호출하기 전에 파일의 내용은 다음과 같은 경우 파일 시스템에 유지됩니다.mergetool.keepBackup = true.

온라인 저장소에서 로컬 복사본으로 변경 내용을 가져오는 경우(합병) REMOTE, LOCAL 및 BASE를 다음과 같이 이해할 수 있습니다.

  • REMOTE 자신의 수정 사항을 포함한 로컬 파일('파일 시스템의 경우'
  • LOCAL 온라인 저장소 내부의 원격 파일('다른 사용자가 변경한 내용')
  • BASE 두 파일의 원본('수정 없음')

enter image description here

용어들은 온라인 저장소관점에서, 즉 '로컬'이 가리키는 것입니다.3방향 병합에 대한 위키백과 기사도 참조하십시오.

https://git-scm.com/docs/git-mergetool 에 따르면

이 도구를 사용하여 gitmerge 도구를 호출하는 경우( -t 또는 --tool 옵션 또는 병합을 통해).도구 구성 변수) 병합에 대한 공통 기준을 포함하는 임시 파일의 이름으로 $BASE를 설정하여 구성된 명령줄이 호출됩니다.사용 가능한 경우, $LOCAL은 현재 분기에 있는 파일의 내용을 포함하는 임시 파일의 이름으로 설정되고, $REMOTE는 병합할 파일의 내용을 포함하는 임시 파일의 이름으로 설정되며, $MERGED는 병합 확인 결과의 결과를 기록해야 하는 파일의 이름으로 설정됩니다.

하지만 rebase 명령어와 merge 명령어는 차이가 있는 것 같습니다.

병합은 로컬 분기를 LOCAL로 사용하고 병합할 분기를 REMOTE로 사용합니다.

기본 재배치는 로컬 분기를 REMOTE로 사용하고 기본 재배치할 분기를 LOCAL로 사용합니다.

저는 @Shanakor의 의견에 동의합니다, 답 중 하나가 틀렸습니다. 위소.local or remote으로 "branch 일을 , A에 , "branch/switch branch"를 하면 git가 하는 일을 알 수 있습니다. 만약 당신이 현재 A 지점에 있다면, 그리고 실행한다면.git merge BGit은 다음 기간 동안 A 지점에 남습니다.merge즉입니다. A에 령명을 하면 로은입 A다니입니다. 현재 지점 A에 있고 실행 중인 경우git rebase B, (or rebase --onto B) / to B, git checkout /switch to B;

참조: https://git-scm.com/docs/git-rebase

인용문: 지정된 경우 gitrebase는 다른 작업을 수행하기 전에 자동 git 스위치를 수행합니다.그렇지 않으면 현재 분기에 남아 있습니다.

언급URL : https://stackoverflow.com/questions/20381677/in-a-git-merge-conflict-what-are-the-backup-base-local-and-remote-files-that

반응형