Linux birleştirme komutu

0
13

Linux birleştirme komutu

Unix benzeri işletim sistemlerinde birleştirme komutu, üç yönlü bir dosya birleştirme gerçekleştirir.

Birleştirme işlemi üç dosyayı analiz eder: bir temel sürüm ve iki çakışan değiştirilmiş sürüm. Paylaşılan temel sürüme dayalı olarak her iki değişiklik grubunu otomatik olarak tek bir birleştirilmiş dosyada birleştirmeye çalışır. Otomatik birleştirme mümkün değilse, manuel birleştirmeyi kolaylaştırır.

Bu sayfa, birleştirmenin GNU/Linux sürümünü açıklar.

Açıklama

birleştirme, RCS sürüm kontrol paketinin bir parçasıdır. Üç yönlü dosya birleştirme gerçekleştirmek için kullanılır.

birleştirme üç dosyayı analiz eder – orijinal bir dosya ve orijinalin iki değiştirilmiş versiyonu – ve bunları satır satır karşılaştırır, her ikisini de temsil eden tek, birleşik bir dosya oluşturmak için iki değişiklik grubu arasındaki farkları çözmeye çalışır. değişiklik kümeleri.

İki değişiklik grubu arasındaki farklılıklara bağlı olarak, bu otomatik bir süreç olabilir veya kullanıcı girişi gerektirebilir.

Her iki değişiklik de diğeriyle çelişmiyorsa, birleştirme genellikle ne yapacağını kendi başına bulabilir. Ancak, iki değişiklik kümesi çakışıyorsa – örneğin, aynı metin satırı her iki değiştirilmiş dosyada farklı şekilde ifade edilmişse – birleştirme, sonuçta ortaya çıkan birleştirilmiş dosyadaki çakışmayı gösterir.

Birleştirme nasıl çalışır?

birleştirme, dosya2’den dosya3’e giden tüm değişiklikleri dosya1’e dahil eder. Sonuç normalde dosya1’e gider.

Dosya2’nin orijinal olduğunu ve hem dosya1 hem de dosya3’ün dosya2’nin modifikasyonları olduğunu varsayalım. Sonra birleştirme her iki değişikliği birleştirir.

Hem dosya1 hem de dosya3’ün ortak bir satır segmentinde değişiklik olması durumunda bir çakışma oluşur. Bir çakışma bulunursa, birleştirme normalde bir uyarı verir ve çakışmayı “<<<<<<<" ve ">>>>>>>” satırlarıyla parantez içine alır. Örneğin, tipik bir çatışma şöyle görünür:

<<<<<<< file A
lines in file A
=======
lines in file B
>>>>>>> file B

Çakışma varsa, kullanıcı sonucu düzenlemeli ve alternatiflerden birini silmelidir.

Sözdizimi

merge [options] file1 file2 file3

Seçenekler

-A Diff3(1)’in -A stilini kullanarak çıktı çakışmaları (diff3 tarafından destekleniyorsa). Bu, dosya2’den dosya3’e giden tüm değişiklikleri dosya1’de birleştirir ve en ayrıntılı çıktıyı oluşturur.

-E, -e

Bu seçenekler, -A’dan daha az bilgi üreten çakışma stillerini belirtir. Ayrıntılar için diff3(1)’e bakın. Varsayılan -E’dir. -e ile birleştirme, çatışmalar hakkında uyarmaz.

-L etiketi

Bu seçenek en fazla üç kez verilebilir ve çakışma raporlarında ilgili dosya adları yerine kullanılacak etiketleri belirtir. Yani, merge -L x -L y -L zabc, a, b ve c dosyalarından değil, x, y ve z dosyalarından gelmiş gibi görünen çıktılar üretir.
-P Sonuçları dosya1 üzerine yazmak yerine standart çıktıya gönderin.
-Q Sessiz mod. Çatışmalar hakkında uyarmayın.
-V RCS’nin sürüm numarasını yazdırın.

Örnekler

Diyelim ki aşağıdaki içeriklere sahip orig.txt adında bir dosyamız var.

Apples are red.
Oranges are orange.
Blueberries are delicious.

… ve orig.txt’nin değiştirilmiş bir sürümü olan mod1.txt adlı bir dosya:

Apples are obviously red.
Oranges are blue.
Blueberries are delicious.

… ve aynı zamanda orig.txt’nin değiştirilmiş bir sürümü olan mod2.txt adlı bir dosya:

Apples are obviously red.
Oranges are NOT blue.
Blueberries are delicious.

… ve birleştirme işlemini aşağıdaki gibi çalıştırıyoruz:

merge mod1.txt orig.txt mod2.txt

Üç dosyayı da analiz eder, mod1.txt’ye yazar ve aşağıdaki uyarıyı görüntüler:

merge: warning: conflicts during merge

Bu, birleştirmenin başarılı olduğu anlamına gelir, ancak bir çakışma olduğunun farkında olmamız gerekir. Varsayılan olarak birleştirmenin yazıldığı dosya olan mod1.txt dosyasını açarsak, şimdi aşağıdaki metni içerdiğini görürüz:

<<<<<<< mod1.txt
Apples are obviously red.
Oranges are blue.
=======
Apples are obviously red.
Oranges are NOT blue.
>>>>>>> mod2.txt
Blueberries are delicious.

Hangi “Portakallar…” satırını tutacağımıza (veya kendi yöntemimizle birleştireceğimize) karar vermek ve dosyadaki düzenlemeyi manuel olarak yapmak bize kalmıştır.

diff — İki dosya arasındaki farkları belirleyin.

LEAVE A REPLY

Please enter your comment!
Please enter your name here