2010-09-12 19 views
80

Bunu bir komut dosyası için yapabilmek istiyorum. Git'te bazı kodların tüm sürüm geçmişini yeniden oluşturuyorum - şu anda farklı bir sürüm kontrol sistemi kullanıyor. Yapımın orijinal yazarını (ve tarihini) korurken, Komitelerin Git'e eklenebilmesi için betiğe ihtiyacım var.Kodu nasıl farklı bir kullanıcı olarak kullanıyorsunuz?

bana bunu sağlayan bir Git komutu var, ben yazar ve değişikliğin yapıldığı tarih/zaman taahhüt biliyor varsayarsak? Varsayacağım, çünkü git-p4 benzer bir şey yapıyor. Sadece bunu yapmanın en iyi yolunu soruyorum.

+1

hızlı-ithalat kullanarak denediniz mi? – alternative

+0

Kabul ediyorum, [hızlı ithal] (http://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html) muhtemelen en iyi yoldur. * Git commit * 'i (ya da daha doğrusu altta yatan sıhhi tesisat: * hash-object *, * update-index *, * write-tree *, * commit-tree *, * update-ref *, vs.) kullanabilirsiniz. * hızlı ithalat *, daha hızlı, daha iyi olurdu. –

+0

ben hızlı ithalat düşündün ama oldukça git kendim acemi olduğum gibi ben temel komutları kullanmaya karar verdi. Tamamen dürüst olmak gerekirse, hızlı ithalatın ne kadar çalıştığını tam olarak anlayamıyorum ve bu yüzden onu daha iyi anlayana kadar kullanmakta biraz tereddüt ediyorum. Evet, taahhüt kullanarak çok daha yavaş olacak, ama en azından ne bekleyeceğimi bileceğim - özellikle hata ayıklama yaparken. – Carl

cevap

113

Kontrol dışarı git commit için --author seçeneği: man page itibaren

:

--author=<author>

Geçersiz Kıl taahhüt yazar. Standart A U Thor <[email protected]> biçimini kullanarak açık bir yazar belirtin. Aksi takdirde <author> bir desen olduğu varsayılır ve mevcut aramak için kullanılan bu yazar (yani rev-list --all -i --author=<author>) ile işlemek; İşlemi yapan yazar daha sonra bu tür bir taahhüt bulunan 'dan kopyalanır.

+12

"msg işlemek". –

+0

Belirli bir örnek verebilir misiniz? Her şeyi denedim – studgeek

+0

@Tim Henigan: Dokümantasyon artık [Github] (http://schacon.github.com/git/git-commit.html) üzerinde barındırılıyor. yayınladığınız sayfa * bağlantısı kesildi. Yeni sayfanın aynı şey olduğunu doğrulayabilir misiniz (bağlantıların güncellenmesi gereken başka cevaplar varsa)? – R0MANARMY

58

Sadece bu eklemek: Kabul cevapta belirtildiği --author seçenek yalnızca yazar, taahhüt değil committer bilgilerini geçersiz kılar. çoğu durumda doğru bir davranıştır, ama nedense el de committer bilgisini geçersiz gerekiyorsa, GIT_COMMITTER_NAME ve GIT_COMMITTER_EMAIL Çevre değerlerini kullanmak

(a GIT_COMMITTER_DATE yanı yoktur). o ve belirtilen kullanıcı tarafından işlenen yönetilmiyor gibi bu taahhüt göz yapacak Git-Internals-Environment-Variables

$ GIT_COMMITTER_NAME="New Name" GIT_COMMITTER_EMAIL="[email protected]" git commit --author="New Name <[email protected]>" 

bakınız.

+8

... ve farkı görmek için: 'git log --pretty = fuller' – bluenote10

+0

Mükemmel. İstediğim şey buydu ve git internals man sayfasını asla bulamadım. – ksp

İlgili konular