2011-04-14 15 views
8

SCM'nin kullanılmadığı bazı kodları kullanıyorum + ve yalnızca bazı dosyaları değiştirilmiş olsa da tüm proje dosyaları şeklinde zaman zaman güncelleştirmeler alıyorsunuz. Şimdiye kadar kendi değişikliklerini bir git-repo'ya koyup, bu "güncellemeleri", kendi değişikliklerin miktarıyla (henüz yayınlanmaya kararlı olmayanlar) artan bir şekilde daha fazla sinir bozucu olan bir manüel git add -p oturumuyla çözdüm. ve Neyse ki yukarıda bahsedilen "yamalar" için git commit --author "the others" yaptım beri, bilmek istiyorum: Nasıl hepsi tek bir yazar tarafından yapılan taahhüt eder yapabilirsiniz git: Belirli bir yazarın tüm hesaplarını ayrı bir şubeye nasıl yeniden yazılır?

yeni şube ayrılabilir?

ideal çözüm sonraki her 'yama' madene başkalarının şube birleştirme içerecektir (I repo sadece benim tarafımdan kullanılan bu durumda tarihinin yeniden umursamıyorum), ama şimdilik sondaki birleştirme yeterli olabilir.

git checkout -b other_work <sha1_of_where_to_rebase> 
git log --reverse --author=others --format=%H <sha1_range> | xargs -n 1 git cherry-pick 

Umut bu ben değilim

+0

Sadece birkaç not bu haftaya cevap vermeye çalışacağım şeylerle: 'git log --reverse --pretty = format:"% H% bir " HEAD | nl' –

+1

a 'git rev-list 'bir komut çözümüne daha uygun hale getirilebilirken, sağ komutları (burada, yazar tarafından) yalıtmanıza yardımcı olacak sıralama ve sınırlama seçenekleri sunabilir. http://www.kernel.org/pub/software/scm/git/docs/git-rev-list.html – VonC

+0

Teşekkürler @VonC, tatil sonrası ona bakacağım –

cevap

6

Geçenlerde birisi için bu orada yaptığımız yaltaklanmak hissettin Ne yaptığınızı tam olarak anlamak, ancak üçüncü taraf bir codebase ile tanımladığınız sorun, "satıcı br denir anch". İşte bu şekilde nasıl ele alacağım: üçüncü taraf versiyonu için bir şube yapın, ör. vendor. Şubenizin master olduğunu varsayalım. Yeni bir sürümü yayınladıklarında, aşağıdakileri yapabilirsiniz:

ps. git add -p yerine git gui kullanmıştım. Başlamak için bir gui kullanma konusunda şüpheliydim, ancak şimdi git gui ve gitk olmadan yaşayamıyorum (veya bir mac üzerinde gitx).

+0

Ekleme - yeterli değerler –

+0

aralığından herhangi birine sahipseniz, günlük komutu komut için 'git günlüğü' kullanmıyorsa, 'git rev-list' yerine – knittl

+0

' u kullanın, son birleştirme için onu orijinal dalı rebasing yaparak takip ediyorum (iyi, bir 'other_work' üzerine kopyalayın, ardından tüm bu rebased taahhütleri yeni bir şubeye 'den kirazla toplayıp sonunda birleştirin. Belki bunu bir senaryoda tatilimden sonra genişleteceğim ... –

2

yardımcı olur:


+ evet Jedi Eğer

+0

Bu gerçekten şimdi prosedür.Bazı nedenlerden ötürü, diğerlerinin değişikliklerini benim ana dalıma dayandırdığımı gerçekten hatırlayamıyorum, bu yüzden benim sorum, bu tek dalı nasıl tanımladığınıza benziyormuş gibi görünen bir tarihe nasıl ayırmak gerektiğiydi. –

+0

Bu yanıtı verdiğimde, geçen ay Nisan ayından ziyade, geçen yılın Nisan ayında yazıldığı fark edilmemişti :-) – rjmunro

İlgili konular