Git mergetool은 원치 않는 .orig 파일을 생성합니다


486

Kdiff3 (및 다른 병합 도구)을 사용하여 병합 충돌 해결을 수행하면 해상도에서 *.orig파일이 생성 되는 것을 알았 습니다. 추가 파일을 만들지 않는 방법이 있습니까?

답변:


771

가능한 해결책 git config:

git config --global mergetool.keepBackup false

병합을 수행 한 후 충돌 표식이있는 원본 파일을 .orig확장자가 있는 파일로 저장할 수 있습니다 .
이 변수가로 설정되면 false이 파일은 유지되지 않습니다.
기본값 true은 백업 파일을 유지하는 것입니다.

이에 제안 대안의 존재는, 추가하거나 해당 파일을 무시하지 gitguru 기사 ,

git mergetool병합 충돌 버전의 파일을 " .orig"접미사로 저장합니다.
병합을 추가 및 커밋하거나에 추가하기 전에 삭제해야 *.orig합니다 .gitignore.

Berik의견에서 다음 을 사용하도록 제안 합니다.

find . -name \*.orig 
find . -name \*.orig -delete

찰스 베일리 에서 조언 그의 대답 을 알고 있어야 내부은 diff 도구 설정 도 그 백업 파일, 자식 설정이 무엇인지에 상관없이 생성 할 수 있습니다.

  • kdiff3에는 자체 설정이 있습니다 ( 설명서의 " 디렉토리 병합 " 참조 ).
  • WinMerge와 같은 다른 도구는 자체 백업 파일 확장자를 가질 수 있습니다 ( 설명서.bak 에서 언급 한대로 WinMerge :) .

따라서 해당 설정도 재설정해야합니다.


7
@Sophistifunk : 좋은 지적입니다. 올바른 부호를 사용하도록 답변을 편집했습니다.
VonC

10
kdiff 자체에서 설정을 편집하면 설정> Kdiff3 구성> 디렉토리를 사용할 수있었습니다. 선택을 취소 상자 표시 "백업 파일 (어 .orig)"
kmgdev

2
git config --global mergetool.keepBackup false, Mavericks 10.9.2의 P4Merge로 해결되었습니다. 감사합니다 :)
kpsfoo

1
@ 샌더 감사합니다. 링크를 복원했습니다.
VonC

5
수동으로 .gitconfig을 편집하는 경우, 당신이 원하는 것에주의 keepBackup = false아래를 [mergetool]하지 하에서, [mergetool "BeyondCompare4"]또는 사용자가 설정 한 비주얼 어떤 병합 도구입니다.
TrueWill

85

병합 하는 동안 파일 을 저장하도록 구성 할 수있는 kdiff3것처럼 as를 사용하는 데 약간의주의가 git mergetool필요합니다 .orig. 기본 동작 kdiff3.orig백업 파일을 독립적으로 저장하는 것 입니다 git mergetool.

mergetool백업이 꺼져 있는지 확인해야합니다 .

git config --global mergetool.keepBackup false

또한 kdiff3의 설정이 백업을 생성하지 않도록 설정되어 있습니다.

Configure/Options => Directory Merge => Backup Files (*.orig)

4
Configure/Options => Directory Merge => Backup Files (*.orig)정말 모든 이상한 io-slave, klauncher«»알 수없는 프로토콜을 제거하고 .orig 오류를 만들 수 없었습니다. 감사합니다
Geremia

2
git config --global mergetool.keepBackup false설정해야합니까?
Geremia

1
첫 번째 줄을 고치도록하겠습니다. "kdiff3를 사용하려면 약간 미쳐야합니다"-there :-)
Tim Jarvis

@ TimJarvis 나는 항상 kdiff3을 사용하고 그것을 좋아합니다. 나는 "조금 미친 kdiff3을 사용하는"또는 그냥 농담 경우 (내가 간절히 부탁 해요, 웃는 얼굴, 나는 어느 쪽이든의 기분을 상하게하지 않습니다 참조)를 호출하기위한 이유가 궁금
퀸 윌슨

35

분명한 git 명령은 다음과 같습니다.

git config --global mergetool.keepBackup false

다른 답변 모두 명령 줄에 오타가있어 실패하거나 올바르게 작동하지 않습니다.


32

KDiff3을 구성하여 .orig 파일을 저장하는 옵션을 비활성화 할 수 있습니다

KDiff3 백업 파일 .orig 옵션


2
이것이 실제 솔루션이어야합니다.
Gondy

나를 위해 작동합니다. 대단히 감사합니다 @ richard-pierre
Andrew

이미 전역 git 설정을 올바르게 설정했지만 rebase / merge 등에 해당 .orig 파일이 있습니다. Kdiff3 설정은 마침내 트릭을 수행했습니다.
Cécile Fecherolle

25

이것을 사용하여 ".orig"로 끝나는 모든 파일을 정리합니다.

function git-clean-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r
}

무서운 고양이 인 경우 :) 마지막 부분을 나열하여 목록을 표시 할 수 있습니다 (또는 -r각 삭제를 승인하려는 경우 제외).

function git-show-orig {
    git status -su | grep -e"\.orig$" | cut -f2 -d" "
}

1
커밋 할 준비가 될 때까지 백업을 원하는 경우에 매우 유용합니다.
Kelly

5
병합 백업을 유지하는 경우 최상위 레벨의 .gitignore에 * .orig를 추가 할 수도 있습니다.
Ville

11

나는 단순히 명령을 사용

git clean -n *.orig

제거하려는 파일 만 나열되는지 확인하십시오.

git clean -f *.orig

1
좋은 팁! gitconfig 설정과 관련된 다른 답변도 추가하면 좋습니다 (다른 답변에서).
AzP

10

장기 솔루션으로 제공되는 정답 외에도 git을 사용하여 git clean -f명령으로 불필요한 모든 파일을 한 번 제거 할 수 있지만 git clean --dry-run의도하지 않은 일이 발생하지 않도록 먼저 사용하십시오 .

이는 파일을 제거하기 위해 OS / 쉘에 특정한 스크립트를 통해 Git의 내장 된 기능을 사용하는 이점이 있습니다.


4
예. 그러나이 명령은 .orig 파일을 제거하는 것보다 훨씬 많은 작업을 수행하므로 매우주의하십시오.
kghastie

4

아니면 그냥 추가

* .orig

전 세계의 gitignore에게


3
git config --global mergetool.keepBackup false

이것은 (비 통합 도구로) Beyond Compare에서도 작동합니다.


0

윈도우 :

  1. 파일 Win/Users/HOME/.gitconfig세트에서mergetool.keepTemporaries=false
  2. File git/libexec/git-core/git-mergetool의 함수 에서 else 블록 내에 cleanup_temp_files()추가하십시오 rm -rf -- "$MERGED.orig".

1
허용 된 답변을 참조하십시오. 이것은 핵심 도구를 수정하며 확장 할 수 없습니다.
oligofren
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.