"tarih" git'te biraz gevşek bir kavram. Bir commit, birisi kaydı kendi havuzuna gerçekten çekmeden / tamamlamadan önce bir süre geçmişte olabilecek bir yazar tarihine sahip olacaktır, ayrıca commit, görünüşte daha yeni bir commit üzerine olacak şekilde yeniden oluşturulabilir ve güncellenebilir.
Bir taahhüdün ayrıca, bir taahhüt yeniden onaylanırsa veya herhangi bir şekilde değiştirilirse güncellenen bir taahhüt tarihi vardır. Bu işlemlerin bir tür kronolojik sırada olma olasılığı daha yüksektir, ancak yine de bilgisayarında doğru zaman ayarına sahip olan işlemcinin insafına kalabilirsiniz ve bu durumda bile, değiştirilmemiş bir işlem, daha önce süresiz olarak uzak bir depodaki bir özellik dalında oturabilir. merkezi bir deponun ana dalına birleştiriliyor.
Muhtemelen amaçlarınız için en yararlı olan şey, söz konusu arşivdeki yeniden günlüğe kaydetme tarihidir. Dal başına yeniden günlükleri etkinleştirdiyseniz (bakın git config core.logAllRefUpdates
), o zaman ref@{date}
bir dalın belirli bir zamanda nerede olduğuna başvurmak için sözdizimini kullanabilirsiniz .
Örneğin
git log -p master@{2009-07-01}..master@{now}
Ayrıca aşağıdaki gibi 'belirsiz' açıklamaları da kullanabilirsiniz:
git log -p "master@{1 month ago}..master@{yesterday}"
Bu komutlar, yazara ve teslim tarihlerine göre gerçekte ne kadar "eski" olduklarına bakılmaksızın, deponun belirli dalında "görünen" tüm işlemleri gösterecektir.
Dallara göre yeniden günlüğün bir depoya özgü olduğunu unutmayın; bu nedenle, günlük komutunu bir klon üzerinde çalıştırıyorsanız ve (örneğin) bir ay boyunca çekmezseniz, son ayın tüm değişiklikleri bir kerede alın, daha sonra geçen ayın tüm değişiklikleri bir @{1 hour ago}..@{now}
aralıkta görünecektir . Eğer insanların zorladığı 'merkezi' depoda log komutunu çalıştırabilirseniz, o zaman istediğinizi yapabilir.