Git에서 모든 파일을 수동으로 병합하는 방법은 무엇입니까?
meld 또는 다른 diff 도구 를 사용하여 모든 파일을 수동으로 병합하고 싶습니다. Git으로 어떻게 할 수 있습니까?
내가 실행 git mergetool하면 no files need merging. 그래서 갈등이있을 때만 할 수 있다고 생각합니다.
훨씬 더 간단한 방법이 있습니다.
git merge --no-commit merge_branch
남자가 말했듯이 :
함께
--no-commit병합을 수행하지만, 척 실패 병합 및 자동 커밋하지 않는 사용자에게 검사 및 추가 커밋하기 전에 병합 결과를 조정할 수있는 기회를 제공합니다.
다음과 같은 시나리오가 있습니다.
git merge --no-commit merge_branch
빨리 감기를 일으켰습니다.
이 경우 다음을 사용할 수 있습니다.
git merge --no-commit --no-ff merge_branch
그러면 변경 사항을 검토 할 수 있습니다.
비슷한 질문은 git을 사용하여 자동 병합을 방지하는 방법입니다.
FractalSpace는 내가 유용하다고 생각하는 답변을 제공했습니다.
$ git checkout master
$ git difftool -t kdiff3 local-branch HEAD
아이디어는 자동 병합 도구 대신 difftools를 사용하여 필요한 것을 수동으로 선택하고 새 파일을 만드는 것입니다.
수동으로 병합해야하는 경우 (아마도 특정 파일 클래스에 대해) 병합 드라이버를 정의 할 수 있습니다 .
" Git-선택한 파일에 병합 충돌 및 수동 병합을 강제하는 방법 "에 구체적인 예가 있습니다.
이렇게하면 병합 드라이버 스크립트가 원하는 병합 도구를 호출 할 수 있습니다.
여기에 와서 사용 git difftool하는 @True 의 답변 과 사용 하는 다른 답변 의 차이점에 대해 궁금해하는 사람 git merge은 Git mergetool 대 difftool을 참조하십시오 .
간단히 말해서, diff.toolkdiff3, meld 또는 vimdiff와 같은 최신 버전을 사용하도록 git을 구성한 경우 diff 도구 자체를 사용하여 다른 파일을 수동으로 병합 할 수 있으며 명령 줄은 간단 할 수 있습니다.
git difftool other_branch
... 이렇게하면 현재 브랜치와 other_branch (에서 $ LOCAL 및 $ REMOTE로 설명 됨)간에 양방향 수동 병합을 수행 할 수 있습니다 man git-config.
다른 답변이 논의하는 "올바른"방법은 대신 kdiff3 또는 vimdiff를 사용하도록 git을 구성 merge.tool하고 다음을 사용하는 것입니다.
git merge --no-commit --no-ff other_branch
git mergetool
...이 명령은 $ BASE, $ LOCAL 및 $ REMOTE 간의 N-way 수동 병합을 $ MERGED로 수행 할 수 있습니다. git 구성 방법에 대한 한 가지 예는 https://stackoverflow.com/a/2235841/1264797 을 참조 하십시오 . mergetool.*.cmdgit이 이미 알고있는 도구 중 하나를 사용하는 경우 항목을 전혀 구성 할 필요가 없습니다 . (Meld는 3 개의 창만 표시 할 수 있으므로 기본 설정으로 meld를 사용하면 $ BASE가 표시되지 않습니다.)
누군가 나를 바로 잡기 위해 뛰어들 수도 있지만 N-way 병합 능력 외에는 두 가지 방법이 동일한 결과를 생성하는 것처럼 보입니다. 둘 다 other_branch를 새 커밋의 부모로 추가 difftool하지도 mergetool않으므로 두 경우 모두 병합은 예를 들어 gitk에서 명확하지 않으며 커밋 메시지에서 설명 (그리고 나중에 주목해야 함)해야합니다.
나는 전략 선택 우리를 당신이 가져-에있는 수동으로 원하는 변경 수동 DIFF을 수행 한 후, (이 TortoiseGit의 선택으로도 존재한다).
출처 : https://git-scm.com/docs/merge-strategies
병합 메커니즘 (git merge 및 git pull 명령)을 사용하면 -s 옵션으로 백엔드 '병합 전략'을 선택할 수 있습니다. 일부 전략은 자체 옵션을 취할 수도 있으며, git merge 및 / 또는 git pull에 -X 인수를 제공하여 전달할 수 있습니다.
우리 것
이것은 수에 관계없이 헤드를 해결하지만 병합의 결과 트리는 항상 현재 분기 헤드의 트리이며 다른 모든 분기의 모든 변경 사항을 효과적으로 무시합니다. 사이드 브랜치의 오래된 개발 역사를 대체하는 데 사용됩니다. 이것은 '재귀 적'병합 전략에 대한 -Xours 옵션과 다릅니다.
그러나 Bitbucket이 나중에 보는 것은 나에게 미스테리입니다. 커밋을 병합으로 인식하지만 실제로 분기를 병합하지 못합니다 (풀 요청을 해결하지 않음). 아마도 Bitbucket 전문가가이 문제에 대해 도움을 줄 수있을 것입니다. 그 가시성이 없기 때문에 로그 / 오류 메시지-git / TortoiseGit은 전혀 불평하지 않습니다.
참고 URL : https://stackoverflow.com/questions/4657009/how-to-merge-all-files-manually-in-git
'Nice programing' 카테고리의 다른 글
| Python 2.7의 분할 (0) | 2020.11.29 |
|---|---|
| 스파크 실행기 번호, 코어 및 실행기 메모리를 조정하는 방법은 무엇입니까? (0) | 2020.11.29 |
| XPath로 Java의 네임 스페이스를 사용하여 XML을 쿼리하는 방법은 무엇입니까? (0) | 2020.11.29 |
| 디버깅하는 동안 iOS 애플리케이션 샌드 박스에서 파일의 내용을 볼 수 있습니까? (0) | 2020.11.29 |
| 주어진 달의 첫날과 마지막 날을 얻는 방법 (0) | 2020.11.29 |