Git birleştirme aracı istenmeyen .orig dosyaları oluşturur


486

Kdiff3 (ve denedim diğer birleştirme aracı) ile birleştirme çakışması çözümü yaptığımda, çözüm üzerinde bir *.origdosya oluşturulduğunu fark ettim . Bu fazladan dosyayı oluşturmamasının bir yolu var mı?

Yanıtlar:


771

Aşağıdakilerden olası bir çözüm git config:

git config --global mergetool.keepBackup false

Birleştirme işlemi gerçekleştirildikten sonra çakışma işaretli orijinal dosya, .origuzantılı bir dosya olarak kaydedilebilir .
Bu değişken olarak ayarlanırsa, falsebu dosya korunmaz.
Varsayılan olarak true(yani yedek dosyaları sakla).

Alternatif, bu gitguru makalesinde önerildiği gibi, bu dosyaları eklememek veya yoksaymak ,

git mergetooldosyanın birleştirme çakışması sürümünü “ .orig” sonekiyle kaydeder .
Birleştirmeyi eklemeden ve taahhütte bulunmadan ya da üzerine eklemeden önce silmeyi *.origunutmayın .gitignore.

Berik yorumlarda şunları önermektedir :

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

Charles Bailey cevabında git ayarları ne olursa olsun, bu yedekleme dosyalarını da oluşturabilecek dahili fark aracı ayarlarının farkında olmasını tavsiye ediyor .

  • kdiff3'ün kendi ayarları vardır ( kılavuzundaki " Dizin birleştirme " bölümüne bakın ).
  • WinMerge gibi diğer araçların kendi yedekleme dosya uzantıları olabilir (WinMerge: kılavuzunda.bak belirtildiği gibi ).

Bu yüzden bu ayarları da sıfırlamanız gerekiyor.


7
@Sophistifunk: iyi bir nokta. Cevabı doğru işareti kullanmak için düzenledim.
VonC

10
Kdiff'deki ayarları düzenlemek benim için çalıştı: Ayarlar> Kdiff3'ü Yapılandır> Dizin. "Yedekleme dosyaları (.orig)" etiketli kutunun işaretini kaldırın
kmgdev

2
git config --global mergetool.keepBackup false, Mavericks 10.9.2'de P4Merge için çözüldü. Teşekkürler :)
kpsfoo

1
@Sander Teşekkürler. Bağlantıyı geri yükledim.
VonC

5
.Gitconfig dosyanızı el ile düzenliyorsanız, keepBackup = falsealtında [mergetool]değil [mergetool "BeyondCompare4"], yapılandırdığınız görsel birleştirme aracının olmasını istediğinizi unutmayın.
TrueWill

85

Sen kullanarak biraz dikkatli olmak zorunda kdiff3iken olarak git mergetoolbir tasarruf yapılandırılabilir .origbirleştirilmesi sırasında dosyayı için varsayılan davranış kdiff3aynı zamanda bir tasarruf etmektir .origyedekleme dosyası bağımsız git mergetool.

mergetoolYedeklemenin kapalı olduğundan emin olmalısınız :

git config --global mergetool.keepBackup false

ve ayrıca kdiff3'ün ayarları yedek oluşturmayacak şekilde ayarlanmıştır:

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

4
Configure/Options => Directory Merge => Backup Files (*.orig)gerçekten garip io-slave, klauncher «» bilinmeyen protokol kurtulmak yardımcı oldu ve .orig hataları oluşturamadı. teşekkür ederim
Geremia

2
Neden git config --global mergetool.keepBackup falseayarlanması gerekiyor?
Geremia

1
ilk satır düzeltmek istiyorum "kdiff3 kullanmak için biraz deli olmak zorunda" - orada :-)
Tim Jarvis

@TimJarvis Her zaman kdiff3 kullanıyorum ve beğendim. Acaba "kdiff3'ü kullanmak için biraz çılgınca" demenin bir nedeni olup olmadığını ya da şaka yapıyorsa (gülen yüzü görüyorum, her iki şekilde rahatsız olmayacağım, ciddiyetle soruyorum)
Quinn Wilson

35

Açıkça söylemek gerekirse, doğru git komutu:

git config --global mergetool.keepBackup false

Diğer yanıtların her ikisi de komut satırında başarısız olmasına veya düzgün çalışmamasına neden olacak yazım hatalarına sahiptir.


32

.Orig dosyasını kaydetme seçeneği KDiff3 yapılandırılarak devre dışı bırakılabilir

KDiff3 Yedekleme dosyası .orig seçeneği


2
Gerçek çözüm bu olmalı.
Gondy

Benim için çalışıyor. @ Richard-pierre
Andrew

Zaten global git config düzgün ayarlanmıştı ama yine de rebase / merge vb. Bu .orig dosyaları vardı. Kdiff3 ayarları nihayet hile yaptı.
Cécile Fecherolle

25

Bunu ".orig" ile biten tüm dosyaları temizlemek için kullanıyorum:

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

Eğer korkak bir kediyseniz :) onları listelemek için son kısmı kapalı bırakabilirsiniz (ya da -rher bir silme işlemini onaylamak istiyorsanız kapalı bırakabilirsiniz ):

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

1
Tamamlanmaya hazır olana kadar yedekleri hala istiyorsanız tamamen kullanışlıdır.
Kelly

5
Ayrıca, birleştirme yedeklerini saklarsanız, üst düzeydeki .gitignore içine * .orig ekleyebilirsiniz.
Ville

11

Sadece komutu kullanıyorum

git clean -n *.orig

yalnızca kaldırmak istediğim dosyanın listelendiğinden emin olun

git clean -f *.orig

1
İyi bir ipucu! Gitconfig ayarlarıyla ilgili diğer yanıtları da eklemeniz iyi olur (diğer yanıtlardan).
AzP

10

Uzun vadeli çözümler olarak sunulan doğru cevapların yanı sıra, git clean -fkomutu kullanarak sizin için tüm gereksiz dosyaları bir kez kaldırmak için git'i kullanabilirsiniz, ancak git clean --dry-runilk önce istenmeyen hiçbir şeyin olmamasını sağlamak için kullanın .

Bu, dosyaları kaldırmak için OS / kabuğunuza özgü komut dosyaları üzerinden Git'in yerleşik işlevselliğini test etmenin yararına sahiptir.


4
Evet, ancak bu komut .orig dosyalarını kaldırmaktan çok daha fazlasını yaptığı için çok dikkatli olun.
kghastie


3
git config --global mergetool.keepBackup false

Bu, Beyond Compare (birleştirme aracı olarak) için de çalışmalıdır


0

Pencereler:

  1. Dosya Win/Users/HOME/.gitconfigkümesindemergetool.keepTemporaries=false
  2. Dosya'da git/libexec/git-core/git-mergetool, fonksiyonda else bloğu içine cleanup_temp_files()ekleyin rm -rf -- "$MERGED.orig".

1
Kabul edilen cevaba bakınız. Bu, temel araçları değiştirir ve ölçeklenebilir değildir.
oligofren
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.