SORU
21 ŞUBAT 2011, PAZARTESİ


git: yeni bir şube açıkladı ama basılmamış) değişiklikleri hareket

İş adil biraz yaptım ("şube önünde 'origin/master' 37" taahhüt). gerçekten master içine kendi şubesine girerek yerine gitti. Bu taahhüt sadece var benim yerel makine ve yok oldu itti origin ama durum karışık biraz o diğer geliştiriciler olmuştur bastırıyor origin/master verdim çekti bu değişiklikleri.

Ne kadar geriye dönük olarak yeni bir şube üzerine benim 37 yerel tamamlar taşırım? Doktorlara göre, git rebase --onto my-new-branch master ...origin/master bunu yapmak, ama her ikisi de bana hata vermesi gerektiği anlaşılıyor "önemli: tek bir Gözden Geçirme". man git-rebase rebase ve örnekler için bir revizyon sunma konusunda hiçbir şey bu hatanın nasıl düzeltileceği hakkında hiçbir fikrim yok bu yüzden bunu yapmayın diyor.

(Bu olduğunu unutmayındeğilyinelenen Git: How to move existing work to new branch? Git: how to merge my local, working changes into another branch bu sorular yerel çalışma ağacında kaydedilmemiş değişiklikler ile anlaşma olarak değil, yerel olarak kaydedilmiş olan değişiklikler. a)

CEVAP
21 ŞUBAT 2011, PAZARTESİ


Bu senin başka bir yerde tamamlar henüz zorlamadığını beri iyi olmalı, ve origin/master sonra şube tarihi yeniden yazmak için özgürsünüz. İlk git fetch origin origin/master güncel olduğundan emin olmak için çalışır. Şu anda master yapmak gerekir olduğunu varsayarsak:

git rebase origin/master

... tüm işleyen origin/master üzerine origin/master değil. Varsayılan eylem rebase olduğu için görmezden birleştirme kaydeder (örneğin; O O git pulls muhtemelen tanıttı ve sadece denemek için apply patch yürürlüğe giren her bir taahhüt üzerine origin/master. (Yol boyunca bazı çatışmaları çözmek için olabilir.) Daha sonra yeni şube sonuca göre oluşturabilirsiniz:

git branch new-work

... ve sonra master origin/master sıfırlama:

# Use with care - make sure "git status" is clean and you're still on master:
git reset --hard origin/master

git branch, git reset, vb dalları manipüle bu tür yapıyor. Yararlı sık sık bu gitk --all ile grafik veya benzeri bir alet tamamlama, farklı referans işaret olduğu anladığımı kontrol etmek için sadece bakmak buluyorum.

Alternatif olarak, sadece ana ilk etapta (git branch new-work-including-merges) nerede dayalı konu bir şube oluşturduk ve master yukarıdaki gibi sıfırlayın. Konu şube origin/master birleştirir yer alacak ve henüz değişiklikleri zorladın değil beri ancak, tarihi daha düzenli bir rebase yaparak öneririm. Eninde sonunda konu şube yöneticisine geri birleştirme (ayrıca, bu değişiklikler daha belirgin olacaktır.)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • MrOctopi

    MrOctopi

    6 Aralık 2010
  • Truc Minh

    Truc Minh

    23 Ocak 2011