2013-02-08 11 views
12

git filter-branch'u çalıştırdıktan sonra, eski bağlı SHA'larının bir listesini, yeni ilgili taahhüt SHA'larına filtre dalı tarafından yeniden yazılır nasıl alabilirim? Örneğin'Git filtre-şubesinden' eski yeniden yazılmış yeni SHA'lerin listesini nasıl alabilirim?

, benzer bir şey: Sol sütun orijinal Şas listesidir

b19fd985746c1f060f761d42d353e387bec243fb -> c8ab40ef9bae3b58642a8d1e5b90720d093a60b5 
c5ebba1eeb92ca76c0effa32de14178ec7f07db6 -> 4d5a9958b98dbcfa47ce1354bb2af4cc77904639 
705f71543235b872ca3e1067538e36d14044429d -> d2aafbd6e5b91955b62dee34f4a0abf0171ba016 

ve sağ sütun filtresi-şube tarafından şu şekilde yeniden edildikten sonra yeni Şas vardır.

Filtre dalı için man page işlevinin bir map işlevinden bahsedildiğini görüyorum, ancak burada yararlı olup olmadığını veya nasıl kullanılacağını anlayamıyorum.

Yardımlarınız için teşekkürler!

cevap

18

Bunu yapmak için git-filter-branch kaynağını bulmaya çalıştım. Belgeli değil (anlayabildiğim kadarıyla), ancak eski taahhüt kimliği açıkça $GIT_COMMIT olarak dışa aktarılıyor. Bu benim için çalıştı:

$ git filter-branch --your-filters-here --commit-filter 'echo -n "${GIT_COMMIT}," >>/tmp/log; git commit-tree "[email protected]" | tee -a /tmp/log' your-branch-here 
[...] 
$ cat /tmp/log 
70d609ba7bc58bb196a2351ba26afc5db0964ca6,d9071b49743701c7be971f76ddc84e76554516c7 
0d1146dcabc00c45fb9be7fe923c955f7b6deb50,cb6813f9aca5e5f26fcc85007c5bb71552b91017 
[...] 

(Bu dosya, tabii ki, biçimi <original commit hash>,<new commit hash> yoktur.)

ben tür meraklı senin niyetinin ne bu olsa kullanarak birlikteyim. Filtre dalını "doğru" şekilde kullanıp kullanmadığınızı (yani mevcut yayınlanmış geçmişi manipüle etmediğinizi) bilmeniz gerekecek bilgiler gibi görünmüyor.

+0

Harika, çok teşekkür ederim! -N bir sebepten dolayı yazdırılıyordu, ben de çıkardım. Çıkışın alternatif çizgilerde olduğunu umursamıyorum. Endişelenme, bu * bir kamu repo değildir. :-) –

+0

Oh, ve $ GIT_COMMIT belgelendi: "$ GIT_COMMIT ortam değişkeni yeniden yazılan tahakkukun kimliğini içerecek şekilde ayarlanacak" –

+0

Ah, iyi. Bu güven verici - bu, bir sonraki Git sürümü ile birlikte çalışmayı geçici olarak durduracaktır. :-) – impl

İlgili konular