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

Charles Bailey彼の回答 gitの設定に関係なく、これらのバックアップファイルも生成する可能性のある内部のdiffツールの設定に注意することを勧めています。

  • kdiff3には独自の設定があります(そのマニュアルの「Directory merge」を参照してください)。
  • WinMergeのような他のツールには、独自のバックアップファイル拡張子を付けることができます(WinMerge:、そのマニュアルに.bak記載されています)。

したがって、これらの設定もリセットする必要があります。


7
@Sophistifunk:良い点。適切な記号を使用するように回答を編集しました。
VonC、2010

10
kdiff自体の設定の編集は私にとってはうまくいきました:設定> Kdiff3の構成>ディレクトリ。「バックアップファイル(.orig)」というラベルの付いたボックスをオフにします
kmgdev

2
git config --global mergetool.keepBackup false、Mavericks 10.9.2のP4Mergeで解決されました。ありがとう:)
kpsfoo 14

1
@サンダーありがとうございます。リンクを元に戻しました。
VonC、2015年

5
.gitconfigを手動で編集している場合は、設定したビジュアルマージツールの下keepBackup = false[mergetool]はなく、下にしたいことに注意してください[mergetool "BeyondCompare4"]
TrueWill

85

あなたは使用して少し注意する必要がkdiff3しばらくとして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スレーブ、klauncher«»不明なプロトコルをすべて取り除くのに役立ち、.origエラーを作成できませんでした。ありがとう
ジェレミア

2
なぜgit config --global mergetool.keepBackup false設定する必要があるのですか?
ジェレミア2016年

1
最初の行を修正しましょう "kdiff3を使用するには少しクレイジーである必要があります"-そこで:-)
Tim Jarvis

@TimJarvisいつもkdiff3を使用していて、気に入っています。それを「kdiff3を使うのはちょっとおかしい」と呼ぶ理由があるのか​​、それとも冗談なのかと思います(スマイリーフェイスが表示されます。どちらの方法でも気分を害することはありません。私はひたすら尋ねています)
Quinn Wilson

35

明確にするために、正しいgitコマンドは次のとおりです。

git config --global mergetool.keepBackup false

他の両方の回答では、コマンドラインにタイプミスがあり、失敗するか正しく機能しません。


32

.origファイルを保存するオプションは、KDiff3を構成することで無効にできます。

KDiff3バックアップファイルの.origオプション


2
これが本当の解決策になるはずです。
Gondy

私のために働く。本当にありがとう@ richard-pierre
Andrew

私はすでにグローバルgit構成を適切に設定していましたが、それらの.origファイルをリベース/マージなどでまだ持っていました。Kdiff3設定がついにうまくいきました。
セシルフェシュロル2018年

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
コミットの準備ができるまでバックアップが必要な場合に非常に役立ちます。
ケリー

5
マージバックアップを保持している場合は、最上位の.gitignoreに* .origを追加することもできます。
Ville

11

私は単にコマンドを使用します

git clean -n *.orig

削除したいファイルのみがリストされていることを確認してください

git clean -f *.orig

1
良いヒントです!(他の回答から)gitconfig設定に関する他の回答も追加するとよいでしょう。
AzP 2019

10

長期的な解決策として提供される正しい答えに加えて、gitを使用してgit clean -fコマンドですべての不要なファイルを一度に削除できますが、git clean --dry-run最初に使用して意図しないことが起こらないようにします。

これには、OS /シェルに固有のスクリプトよりもGitのテスト済み組み込み機能を使用してファイルを削除するという利点があります。


4
はい。ただし、このコマンドは.origファイルを削除するだけではないため、十分に注意してください。
kghastie 2013年

4

または単に追加

* .orig

あなたのグローバルgitignoreに


3
git config --global mergetool.keepBackup false

これはBeyond Compare(mergetoolとして)でも機能するはずです。


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
受け入れられた答えを見てください。これはコアツールを変更し、スケーラブルではありません。
オリゴフレン16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.