簡體   English   中英

在 git log 中顯示提交大小

[英]Show commit size in git log

如何在git log的輸出中顯示提交大小?

你可以理解犯下大小,告訴你有多大的承諾是其父母和自己,或任何合理之間的差異。

git log有一個--log-size選項,但它是日志消息的大小,而不是提交本身。

提交的“大小”可能意味着不同的東西。 如果你的意思是它需要多少磁盤存儲空間......在Git中告訴它非常棘手並且可能沒有效果。 而像SVN存儲之類的東西提交為增量,當你在Git中更改文件時,它會將文件的新副本存儲為圖形數據庫中的對象。 一個對象可以在許多提交中共享。 雖然這可能聽起來效率低下,但Git有許多聰明的方法可以有效地使用磁盤空間。

如果你的意思是它改變了多少行,那很容易。 您可以使用各種標志來獲取更改的文件和行數,其中大多數都包含“stat”一詞。 例如, git log --shortstat將告訴您更改了多少文件,以及插入和刪除了多少行。 這是一個例子。

commit e3d1909c875ea0c1a64246d735affa039ad11aa0 (origin/master, origin/HEAD)
Author: Michael G. Schwern <schwern@pobox.com>
Date:   Thu Aug 11 13:04:24 2016 -0700

    Add default Travis and AppVeyor configs.

    The AppVeyor one is set up for Dist::Zilla, the hardest of the bunch.

 2 files changed, 60 insertions(+)

如果您想了解提交所代表的磁盤存儲,您需要獲取提交創建的新文件(blob對象)的ID,然后檢查它們的大小。 你可以在git log -p看到它們。

commit 0f28d9a96bc92d802b57900ce4a06db71cbaef6d
Author: Michael G. Schwern <schwern@pobox.com>
Date:   Wed Aug 10 09:13:40 2016 -0700

    Remove my name from the gitconfig.

    Now it can be used by anyone. Git will prompt for the user info.

diff --git a/.gitconfig b/.gitconfig
index 1d539bd..538440f 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -1,18 +1,10 @@
-# If you use this file, remember to change the [user] and [sendemail] sections.
-
...and so on...

index 1d539bd..538440f 100644表示此替換的blob對象(文件)1d539bd與538440f並使用權限0644.如果運行git cat-file -s 538440f它告訴我該對象是4356字節。 這是未壓縮的大小。 在磁盤上它只有1849字節。

$ ls -l .git/objects/53/8440f84014584432fa5bf09d761926b3d70dbe 
-r--r--r-- 1 schwern staff 1849 Aug 10 09:14 .git/objects/53/8440f84014584432fa5bf09d761926b3d70dbe

在我git gc即使對象文件也不見了。 現在一切都在使用不到10K的包文件中。

$ tree -h .git/objects/
.git/objects/
├── [ 102]  info
│   └── [  54]  packs
└── [ 136]  pack
    ├── [1.9K]  pack-d5b7110001ed35cce1aa0a380db762f39505b1c0.idx
    └── [7.8K]  pack-d5b7110001ed35cce1aa0a380db762f39505b1c0.pack

這個答案顯示了如何以更自動化的方式從提交中獲取blob。

這是一個非常簡單/蠻力的方法來做到這一點:

git format-patch --stdout ref1..ref2 | wc -c

  • format-patch為您提供了ref1ref2之間的區別
  • 對於ref1 / ref2 ,您可以使用任何有效的 git 引用名稱,例如a0b1c2d3HEADHEAD~1等。
  • wc -c以字節為單位為您提供補丁的大小

注意:git commit 元數據也將計入字節大小。 這可能是此方法的功能或錯誤,具體取決於您想要的確切信息。 更多的git format-patch和/或 unix pipeline/ grep可能會給你更多的控制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM