Bir git diff dosyasını nasıl alıp aynı deponun kopyası olan yerel bir şubeye nasıl uygularsınız?


491

Bir iş arkadaşınız tarafından oluşturulan bir .diff dosyası var ve bu farklı dosyada listelenen değişiklikleri tam olarak aynı deponun yerel şubesine uygulamak istiyorum. Bu işçinin pc veya bu diff dosyası oluşturmak için kullanılan şubesine erişimim yok.

Açıkçası satır satır gidip her şeyi yeniden yazabilirdim, ama sistemi insan hatasına maruz bırakmamayı tercih ederim. Bunu yapmanın en kolay yolu nedir?

Yanıtlar:


746

Diff dosyasını deponuzun kök dizinine kopyalayın ve aşağıdakileri yapın:

git apply yourcoworkers.diff

applyKomut hakkında daha fazla bilgiyi kılavuz sayfasında bulabilirsiniz .

Bu arada: Tüm taahhütleri dosya ile değiştirmenin daha iyi bir yolu git format-patch, gönderen ve daha sonra git amalıcıdaki komutların birleşimidir , çünkü aynı zamanda yazarlık bilgisini ve tamamlama mesajını da aktarır.

Düzeltme eki uygulaması başarısız olursa ve farkın oluşturulduğu taahhütler gerçekte deponuzda ise , değişikliklerde birleştirmeye çalışan -3seçeneği kullanabilirsiniz apply.

Ayrıca Unix boru ile aşağıdaki gibi çalışır:

git diff d892531 815a3b5 | git apply

3
Cevabınız için teşekkür ederiz, ancak bu bir hataya neden oldu, yama başarısız oldu: dosyaadı.php: 202 hata: dosyaadı.php: yama geçerli değil. İyi haber şu ki, dosyadaki ilk dosya adı değil, bu yüzden en azından dosyanın bazılarını işleyebilecekti. Düşüncesi olan var mı?
Mike_K

4
Ayrıca bu dosyada düzeltme ekinin çalışmasını engelleyen değişiklikler var gibi görünüyor. Bunu çözmek için değişikliklerinizi yerine getirebilir, yeni bir şube oluşturabilir, sizin ve iş arkadaşınızın ayrıldığı yere sıfırlayabilir, yamayı uygulayabilir, uygulayabilir ve ardından iki dalı birleştirebilirsiniz.
Philipp

3
@orlybg Henüz yapmadığınız zaman git reset --hard, çalışma ağacınızı son işleme geri döndürün . Zaten taahhütte bulunduğunuzda, geri dönmek istediğiniz düzeltmeyi ekleyin.
Philipp

5
@orlybg Üzgünüm, ama sonra mahvoldun. Git, yalnızca taahhütte bulunduğunuzda dönebileceğiniz bir kontrol noktası oluşturur. Bu yüzden birçok git kılavuzu erken ve sık sık taahhüt edilmesini önerir .
Philipp

4
@orlybg en azından git stashtersine çevirmek isteyebileceğiniz bir eylem gerçekleştirmeden önce çalıştırın . Sonra her iki durumda da, saklamanızı geri getirebilir ve daha sonraki bir noktada taahhüt edebilirsiniz.
maurice
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.