SORU
16 Mart 2010, Salı


ve 'origin/master', nasıl ayrışmış 'undiverge' dalları ana dal'?

Nedense Ustam ve origin/master benim şube ayrılmaktadır. Ben aslında onları birbirinden kopuk olmak istemiyorum. Nasıl bu farklılıklar görebilirim ve'? 'birleştirme

CEVAP
16 Mart 2010, Salı


19 ** bir:

git log HEAD..origin/master

önce pulling it (getirme, birleştirme) (ayrıca 21**)


Gibi bir mesaj varsa:

"Şube ve 'origin/master' ayrışmış, # ve(s) her biri, sırasıyla işlemek zorunda 1 ve 1 farklı."

eğer 22 ** olmadığını kontrol edin. Eğer origin güncel ise, o zaman biraz kendi tamamlar yerel olarak yaptığınız sırada başka bir repo origin itti edilmiştir tamamlar.

... o ---- o ---- A ---- B  origin/master (upstream work)
                   \
                    C  master (your work)

O anda Yukarı taraftan bir ihtimal vardı en son iş çünkü tamamlama C işlemek için Bir temel.

Geri kökeni için zorlamaya çalıştı ancak, önce başka biri B. işlemeye itti
Kalkınma planları ayrı yollara gelişti.

Sonra birleştirme veya rebase. Ayrıntılar için Pro Git: Git Branching - Rebasing bkz.

Birleştirme

Gıt Birleştir komutunu kullanın:

$ git merge origin/master

Bu Git işine origin/master değişiklikleri entegre etmek için söyler ve birleştirme tamamlama oluşturun.
Geçmişi grafik şimdi bu gibi görünüyor:

... o ---- o ---- A ---- B  origin/master (upstream work)
                   \      \
                    C ---- M  master (your work)

Yeni M iki ebeveyn, içerik içinde saklı yol açan her gelişme bir yol gösteren vardır işlemek işlemek birleştirme.

M arkasında geçmişi şimdi doğrusal olmayan olduğunu unutmayın.

Rebase

Git rebase komutu kullanın:

$ git rebase origin/master

Bu ise A yerine tamamlama üzerinde temel B gibi tekrar Git commit C (iş) söyler
CVS ve Subversion kullanıcılar önce güncelleme tamamlama rutin memba iş üstünde kendi yerel değişiklikler rebase.
Git sadece taahhüt ve rebase adımlar arasında açık bir ayrım ekler.

Geçmişi grafik şimdi bu gibi görünüyor:

... o ---- o ---- A ---- B  origin/master (upstream work)
                          \
                           C'  master (your work)

C' gıt yarattığı taahhüt rebase yeni bir komut. taahhüt
İki şekilde C farklıdır:

  1. Farklı bir geçmişi vardır: A . yerine B
  2. Hem B ve C, değişiklikler için içerik hesapları: M örnek birleştirme aynıdır.

C' hala doğrusal. arkasında geçmişi unutmayın
Seçtik (şimdilik) cmake.org/cmake.git yalnızca doğrusal tarih izin vermek için.
Bu yaklaşım daha önce CVS tabanlı iş akışı kullanılan koruyan ve geçişi kolaylaştırmak olabilir.
İtmek için bir girişim C' bizim depo içine çalışacaktır (izinleri var ve kimse rebasing iken itti varsayarak).

Git pull komutu kökenli getirme ve yerel iş rebase için kestirme bir yol sağlar:

$ git pull --rebase

Bu yukarıdaki ve bir komut haline getirme adımları rebase birleştirir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007