0

리베이스 중에 병합 충돌이 발생했고, 힘내는 패치를 해결할 것을 요구하고 있습니다. 두 변경 사항이 모두 수용 가능한 경우, 파일을 직접 수정하지 않고 Git이 두 변경 사항을 모두 수락하도록하려면 어떻게해야합니까?리베이스 중에 충돌을 해결할 때 두 변경 내용을 모두 받아들이 기위한 기본 명령이 있습니까?

예. 모두 변경이 허용되는 경우 :

<<<<<<< HEAD 
const foo = require('./foo'); 
======= 
const bar = require('./bar'); 
>>>>>>> some commit message 

git: can I accept both changes in a merge conflict without editing files? 힘내를 사용하지 않고 매우 구체적인 경우에이 작업을 수행 할 수있는 방법을 제안한다, 그러나 나는 기본 망할 놈의 명령으로이 일을 찾고 있어요. A comment은 통합 병합을 언급하지만이 시나리오에서이 작업을 수행하는 방법에 대한 문서를 찾을 수 없습니다.

+1

Git이 그런 명령을 제공하더라도 시각적으로 각 충돌을 검사하고 변경 사항을 결합하는 방법을 결정해야합니다. 어쩌면 그들 중 일부는 * 전에 * 자신 *이 필요하지만 나머지는 * 자신 * 전에 * 필요합니다. 두 방법 모두 게시 된 충돌에 대해 유효하지만 대부분의 경우 그렇게 간단하지 않습니다. – axiac

답변

1

노조 병합을 수행하려면, 먼저 입력을 추출해야합니다

git show :1:$path > base 
git show :2:$path > ours 
git show :3:$path > theirs 

가 (이 파일 이름은 대부분의 고유 한 임시 파일 이름을 생성해야합니다 그림-에서 연습 순전히)이 파일의 다음 git merge-file을 실행

git merge-file --union ours base theirs 

병합 결과가 ours라는 이름의 파일에 지금있다; basetheirs은 삭제 될 수 있습니다.

(아마도 3 개의 추출을 수행하고 git merge-file을 ours, theirs 또는 union 옵션과 함께 실행하고 검사를 위해 결과를 작업 트리에 넣어야합니다.)

항상 은 결과가 엉망이더라도으로 성공 했으므로 병합에 매우주의해야합니다.

+0

이': N : path/to/a/file' 표기법은 ['gitrevisions (7)'매뉴얼 페이지 (https://www.kernel.org/pub/software/scm/)에 설명되어 있습니다. git/docs/gitrevisions.html) - @neverendingqs, 그것을 읽으려면'git help revisions'를 실행하십시오. – kostix