2012-09-07 14 views
271

İş arkadaşım tarafından oluşturulmuş bir .diff dosyası var ve bu diff dosyasında listelenen değişiklikleri tam olarak aynı havuzun yerel şubesine uygulamak istiyorum. Bu işçinin bilgisayarına ya da bu fark dosyasını oluşturmak için kullanılan şubeye erişimim yok.Bir git diff dosyasını nasıl alıp aynı depodaki bir kopyanın yerel şubesine nasıl uygularsınız?

Tabii ki, hatta çizgiye gidebilir ve her şeyi yeniden yazabilirim, ancak sistemi insan hatalarına maruz bırakmamayı tercih ederim. Bunu yapmanın en kolay yolu nedir? Sonra

cevap

406

kopyalayın depo köküne fark dosyası ve yapın: apply komutu hakkında

git apply yourcoworkers.diff 

fazla bilgi its man page mevcuttur.

Bu arada: Tüm taahhütleri dosyaya göre değiştirmenin daha iyi bir yolu, göndericideki git format-patch komutlarının ve alıcıda git am'un birleşimidir, çünkü aynı zamanda yazarlık bilgisini ve taahhüt mesajını da aktarır.

Yama uygulaması başarısız olursa ve fark oluşturulduğu taktirde repoda gerçekten varsa, değişiklikleri birleştirmeye çalışan -3 seçeneğini apply kullanabilirsiniz. aşağıdaki gibi

Ayrıca Unix boru çalışır: cevap için

git diff d892531 815a3b5 | git apply 
+1

Teşekkür yine de söylemeden bir hataya neden, yama başarısız oldu: filename.php: 202 hatası: filename.php: yama geçerli değildir. İyi haber şu ki, dosyadaki ilk dosya adı değil, en azından dosyanın bir kısmını işleyebilecekti. Düşüncesi olan var mı? –

+1

Ayrıca, yamanın çalışmasını durduran dosya üzerinde de değişiklikler yapmış gibi görünüyorsunuz. Bunu çözmek için değişikliklerinizi gerçekleştirebilir, yeni bir şube oluşturabilir, siz ve iş arkadaşınız arasındaki ayrıştırma işlemine sıfırlayabilir, yamayı uygulayabilir, taahhüt edebilir ve ardından iki şubeyi birleştirebilirsiniz. – Philipp

+0

Dosya, bu durumda var olandan farklıydı, diff dosyasını kullanmak. Devam ettim ve el ile yaptım, ama doğru komut için +1 ve bunun doğru cevap olması gerektiğini kabul edeceğim. –