0

明らかな方法はわかりませんが、gitは私が想定していたよりもはるかに柔軟であることが何度も証明されているので、...

大きなコード変更を導入したコミットを見つけたいので、挿入または削除された行数(一緒にまたは別々に)によってそれらを制限したいと思います。それを行う方法はありますか?

4

1 に答える 1

3

git log --stat

commit e2b97c53727bd66c143713d13399ff4242e4ff06
Author: John Hobbs 
Date:   Thu Nov 4 17:01:14 2010 -0500
    Switched to jQuery Mobile. It's awesome.
 application/classes/controller/item.php    |   77 +++++++++++++---------------
 application/classes/controller/project.php |    4 +-
 application/classes/controller/site.php    |    2 +
 application/classes/controller/user.php    |    5 +-
 application/classes/form.php               |    2 +-
 application/views/item/add.php             |   27 +++-------
 application/views/item/index.php           |   19 ++-----
 application/views/item/view.php            |   11 +++--
 application/views/message/basic.php        |   13 +++++
 application/views/mobile.php               |   64 ++++++++++++++++++-----
 application/views/project/add.php          |    5 +--
 application/views/project/index.php        |   28 ++++------
 application/views/project/view.php         |   19 ++-----
 application/views/user/index.php           |   25 +--------
 application/views/user/login.php           |   14 +++--
 application/views/user/register.php        |   20 ++++---
 16 files changed, 165 insertions(+), 170 deletions(-)

(ここからのサンプル出力)

次に、長い +/- 記号を視覚的に探すか--numstat、別のコマンドにパイプしてフィルター処理します。

man git log


視覚的に行う代わりにフィルタリングする必要がある場合(--shortstatAntoineが推奨するように):

$ git log --pretty=oneline --shortstat 

これにより、次のような出力が得られます。

$ git log --pretty=oneline --shortstat
19791900f886e7a5f92b7cf3536053c863bec067 fix tab title, system menu, and a focus
 2 files changed, 108 insertions(+), 65 deletions(-)
b52941150046cdb455c38e3f9bc133d6ba8f721f give tab a wndproc, change time to be
 1 files changed, 65 insertions(+), 20 deletions(-)
ae5c18524b4a02b264fe26319ce2c9cf7dbff6b2 Fix window style of parent window
 1 files changed, 1 insertions(+), 1 deletions(-)
8f94ad9bbbb2fec42feccda43374b13eda55c018 Add .gitignore to ignore some MSVC file
 1 files changed, 10 insertions(+), 0 deletions(-)

それを awk にパイプし、「ファイルが変更されました」を検索し、挿入数が 50 を超える場合は一致する行と前の行を出力します。

$ git log --pretty=oneline --shortstat | awk '/files changed, / && $4 > 50 {print x; print};{x=$0}'

19791900f886e7a5f92b7cf3536053c863bec067 fix tab title, system menu, and a focus
 2 files changed, 108 insertions(+), 65 deletions(-)
b52941150046cdb455c38e3f9bc133d6ba8f721f give tab a wndproc, change timer
 1 files changed, 65 insertions(+), 20 deletions(-)

一部の awk 引数のソース: http://unstableme.blogspot.com/2008/05/print-currentnextprevious-line-using.html

于 2012-07-04T18:56:40.530 に答える