Gv ලොග් පෙන්වන ආකාරය svn log -v වැනි ගොනු නාම පෙන්වයි


1012

SVN හි ලොගයෙහි "-v" මාදිලියක් ඇති අතර එය එක් එක් කැපවීම තුළ වෙනස් කරන ලද ගොනු වල ගොනු නාමයන් ප්‍රතිදානය කරයි.

jes5199 $ svn log -v
-------------------------------------------------- ----------------------
r1 | jes5199 | 2007-01-03 14:39:41 -0800 (බදාදා, 03 ජනවාරි 2007) | 1 පේළිය
වෙනස් කළ මාර්ග:
   A / AUTHORS
   A / COPYING
   A / ChangeLog
   A / EVOLUTION
   A / INSTALL
   A / MacOSX

එක් එක් කැපවීම තුළ වෙනස් කළ ලිපිගොනු ලැයිස්තුවක් ලබා ගැනීමට ඉක්මන් ක්‍රමයක් තිබේද?


16
බොහෝ දෙනෙක් බලාපොරොත්තු වන / අවශ්‍ය git logකරන -vස්විචයකට සහය නොදක්වන්නේ මන්දැයි සිතන්න. </
gripe

Answers:


1562

වෙනස් කළ ලිපිගොනු වල සම්පූර්ණ මාර්ග නම් සඳහා:

git log --name-only

වෙනස් කළ ලිපිගොනු වල සම්පූර්ණ මාර්ග නාම සහ තත්වය සඳහා:

git log --name-status

සංක්ෂිප්ත මාර්ග නාම සහ වෙනස් කළ ලිපිගොනු සඳහා:

git log --stat

තවත් බොහෝ විකල්ප ඇත, ලියකියවිලි බලන්න .


18
මම පාවිච්චි කරනවා git log --numstat. git help logතවත් විකල්ප සඳහා බලන්න .
ma11hew28

33
git log --name-only --onelineකැපවීම සඳහා එක් වර්ණ රේඛාවක් සහ එක් පේළියකට එක් ගොනුවක්. stackoverflow.com/a/14227496/1995714
cp.engr

4
Git 2.7.3 සමඟ, git log --name-status --find-renamesඑකතු කිරීම + මකා දැමීම වෙනුවට නැවත නම් කරන ලද ගොනු පෙන්වීමට මට එය භාවිතා කිරීමට සිදුවිය.
සුසෑන් ඩුපෙරොන්

1
--statදිගු මාර්ග කෙටි කරන බව සලකන්න ; පළල වින්‍යාසගත කළ හැකි නමුත් ඔතා ඇති හිස්ටෝග්‍රෑම් කියවීමට අපහසුය. වෙනත් ආකෘති --numstatසෑම විටම සම්පූර්ණ මාර්ග මුද්‍රණය කරයි.
බෙනී චර්නියාව්ස්කි-පැස්කින්

@ ma11hew28 ස්තූතියි. --numstatgit 2.22.00 අනුව එම මෑන් පිටුවේ 946 වන පේළියේ ඇත. ඒක තියෙන්නේ ගොඩක් බොහෝ මිනිසුන් අවශ්ය ප්රමාණයටත් වඩා විකල්ප.
මාටින් ෂ්‍රෝඩර්

139

සටහන: අතහැර දමා ඇත, ඒ වෙනුවට භාවිතා කරන්න git whatchangedgit log

නව පරිශීලකයින් ඒ වෙනුවට git-log [1] භාවිතා කිරීමට උනන්දු කරනු ලැබේ. මෙම whatchangedවිධානය අවශ්යයෙන් ම ය GIT-ලඝු-සටහන [1] නමුත් පැහැර හැරීම් අමු ආකෘතිය වෙනස ප්රතිදානය පෙන්වීමට හා සමනල අඩවියෙන් නොයෑමට.

ආ command ාව මූලික වශයෙන් historical තිහාසික හේතූන් මත තබා ඇත; git logලිනක්ස් කර්නල් තැපැල් ලැයිස්තුව කියවීමෙන් බොහෝ කලකට පෙර Git ඉගෙන ගත් බොහෝ දෙනාගේ ඇඟිලි එය ටයිප් කිරීමට පුහුණු කරනු ලැබේ.


git whatchanged --statඑක් එක් බැඳීමෙහි වෙනස් වූ ගොනු ලැයිස්තුවක් ලබා ගැනීමට ඔබට විධානය භාවිතා කළ හැකිය (බැඳීම් පණිවිඩය සමඟ).

යොමුව


50

git show විශාල ආ .ාවක් ද වේ.

එය එක්තරා ආකාරයක ය svn diff, නමුත් ඔබට එය කැපවීමේ මාර්ගෝපදේශයක් පසු කර එම වෙනස දැක ගත හැකිය.


46

ඔබට ගොනුවේ නම් ලබා ගැනීමට අවශ්‍ය වන්නේ ඉතිරි බැඳීම් පණිවිඩයකින් තොරව පමණි:

git log --name-only --pretty=format: <branch name>

ගොනුවේ නම අඩංගු විවිධ විකල්ප භාවිතා කිරීම සඳහා මෙය දිගු කළ හැකිය:

git log --name-status --pretty=format: <branch name>

git log --stat --pretty=format: <branch name>

මෙම ක්‍රමය භාවිතා කරන විට සැලකිල්ලට ගත යුතු එක් කරුණක් නම් ප්‍රතිදානයේ හිස් රේඛා කිහිපයක් නොසලකා හැරීමට සිදුවීමයි. ප්‍රාදේශීය ශාඛාවක වෙනස් කර ඇති නමුත් දුරස්ථ ශාඛාවකට තල්ලු කර නොමැති අතර දුරස්ථයේ නවතම දේ දැනටමත් ඇදගෙන ගොස් ඇති බවට කිසිදු සහතිකයක් නොමැති නම් මෙය භාවිතා කිරීම ප්‍රයෝජනවත් වේ. :

git log --name-only --pretty=format: my_local_branch --not origin/master

ප්‍රාදේශීය ශාඛාවේ වෙනස් කර ඇති නමුත් දුරස්ථයේ ඇති ප්‍රධාන ශාඛාවට තවමත් ඒකාබද්ධ කර නොමැති සියලුම ලිපිගොනු පෙන්වනු ඇත.


1
ඉහත උදාහරණ වල සුදු අවකාශය පිළිබඳ සටහන - එය හරියට , git log --stat --pretty="format:" $branchName. උදාහරණයක් ලෙස , git log --stat --pretty="format:" $(git rev-parse --abbrev-ref HEAD). මම එහි සිටින අතරතුර, මගේ අරමුණට අදාළ වන නිශ්චිත git log --name-only --pretty="format: " master..$(git rev-parse --abbrev-ref HEAD)
ආයාචනය මෙන්න

43

වෙනස් වූ ලිපිගොනු සමඟ ඉතිහාසය පෙන්වීමට මම මෙය දිනපතා භාවිතා කරමි:

git log --stat --pretty=short --graph

එය කෙටියෙන් තබා ගැනීමට, කිරීමෙන් අන්වර්ථයක් එක් කරන්න .gitconfig:

git config --global alias.ls 'log --stat --pretty=short --graph'

පතල ඊට ඉතා ආසන්නය, git log --pretty = oneline --graph --name-status. වෙනස් වූ ලිපිගොනු ලැයිස්තුව පෙන්වමින් මම එය වඩාත් සංක්ෂිප්තව දකිමි.
පීටර් සුවරා

15

මම මෙය භාවිතා කරමි:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort | uniq

එය ගොනු ලැයිස්තුවක් පමණක් ප්‍රතිදානය කරයි සහ ඒවායේ තත්වය (එකතු කරන ලද, වෙනස් කළ, මකා දැමූ):

A   sites/api/branding/__init__.py
M   sites/api/branding/wtv/mod.py
...

7

git diff --stat HEAD^!අවසාන කැපවීම ( HEAD) සඳහා වෙනස් කළ ලිපිගොනු සහ එකතු කළ / ඉවත් කළ රේඛා ගණන් පෙන්වයි .

ගොනු නාම වලින් පමණක් සමන්විත සංක්ෂිප්ත ප්‍රතිදානයක් ලබා ගැනීමට එක වරම විධානයක් නොමැති බව මට පෙනේ, එකවර කොමිස් කිහිපයක් සඳහා රේඛා ගණන් එකතු කර ඉවත් කර ඇත, එබැවින් මම ඒ සඳහා මගේම බාෂ් ස්ක්‍රිප්ට් එකක් නිර්මාණය කළෙමි:

#!/bin/bash
for ((i=0; i<=$1; i++))
do
    sha1=`git log -1 --skip=$i --pretty=format:%H`
    echo "HEAD~$i $sha1"
    git diff --stat HEAD~$(($i+1)) HEAD~$i 
done

උදා. ./changed_files 99සිට සංක්ෂිප්ත ස්වරූපයෙන් වෙනස්කම් ලබා HEADගැනීමට HEAD~99. පයිප්ප දැමිය හැකිය. වෙත less.


git diff --stat HEAD..masterහෙඩ් සහ මාස්ටර් අතර වෙනස පෙන්වීමට ඔබට කළ නොහැකිද , නැතහොත් 2012 දී ඔබ ඔබේ පිළිතුර නැවත පළ කළ විට මෙය පැවතියේ නැද්ද?
ෆෙරිබිග්

1
@Ferrybig විශ්රාම වැටුප් ප්රශ්නයට ආකාරය ගැන "එක් එක් සිදු වෙනස් ගොනු ලැයිස්තුවක් ලබා ගැනීමට" ගැන නොව, වෙනස අතර HEADහා master. ඒවා වෙනස් කරුණු දෙකකි.
nrz

4

සංක්ෂිප්ත ආකෘතියකින් එක් කැපවීමකට වෙනස් කළ ගොනු ලැයිස්තුගත කිරීම සඳහා කදිම සංදර්ශකය පහත දැක්වේ:

git log --pretty=oneline --graph --name-status

3

උදාහරණ ප්‍රතිදානය සමඟ පිළිතුරු වල සාරාංශය

මෙය සරල කොමිස් පහක් සහිත දේශීය ගබඩාවක් භාවිතා කරයි.

‣ git log --name-only
commit ed080bc88b7bf0c5125e093a26549f3755f7ae74 (HEAD -> master)
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:46:04 2019 -0700

    mv file4 to file5

file5

commit 5c4e8cfbe3554fe3d7d99b5ae4ba381fa1cdb328
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:36:32 2019 -0700

    foo file1

    really important to foo before the bar

file1

commit 1b6413400b5a6a96d062a7c13109e6325e081c85
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:34:37 2019 -0700

    foobar file2, rm file3

file2
file3

commit e0dd02ce23977c782987a206236da5ab784543cc
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:33:05 2019 -0700

    Add file4

file4

commit b58e85692f711d402bae4ca606d3d2262bb76cf1
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:32:41 2019 -0700

    Added files

file1
file2
file3


‣ git log --name-status
commit ed080bc88b7bf0c5125e093a26549f3755f7ae74 (HEAD -> master)
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:46:04 2019 -0700

    mv file4 to file5

R100    file4   file5

commit 5c4e8cfbe3554fe3d7d99b5ae4ba381fa1cdb328
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:36:32 2019 -0700

    foo file1

    really important to foo before the bar

M       file1

commit 1b6413400b5a6a96d062a7c13109e6325e081c85
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:34:37 2019 -0700

    foobar file2, rm file3

M       file2
D       file3

commit e0dd02ce23977c782987a206236da5ab784543cc
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:33:05 2019 -0700

    Add file4

A       file4

commit b58e85692f711d402bae4ca606d3d2262bb76cf1
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:32:41 2019 -0700

    Added files

A       file1
A       file2
A       file3


‣ git log --stat
commit ed080bc88b7bf0c5125e093a26549f3755f7ae74 (HEAD -> master)
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:46:04 2019 -0700

    mv file4 to file5

 file4 => file5 | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit 5c4e8cfbe3554fe3d7d99b5ae4ba381fa1cdb328
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:36:32 2019 -0700

    foo file1

    really important to foo before the bar

 file1 | 3 +++
 1 file changed, 3 insertions(+)

commit 1b6413400b5a6a96d062a7c13109e6325e081c85
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:34:37 2019 -0700

    foobar file2, rm file3

 file2 | 1 +
 file3 | 0
 2 files changed, 1 insertion(+)

commit e0dd02ce23977c782987a206236da5ab784543cc
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:33:05 2019 -0700

    Add file4

 file4 | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit b58e85692f711d402bae4ca606d3d2262bb76cf1
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:32:41 2019 -0700

    Added files

 file1 | 0
 file2 | 0
 file3 | 0
 3 files changed, 0 insertions(+), 0 deletions(-)


‣ git log --name-only --oneline
ed080bc (HEAD -> master) mv file4 to file5
file5
5c4e8cf foo file1
file1
1b64134 foobar file2, rm file3
file2
file3
e0dd02c Add file4
file4
b58e856 Added files
file1
file2
file3


‣ git log --pretty=oneline --graph --name-status
* ed080bc88b7bf0c5125e093a26549f3755f7ae74 (HEAD -> master) mv file4 to file5
| R100  file4   file5
* 5c4e8cfbe3554fe3d7d99b5ae4ba381fa1cdb328 foo file1
| M     file1
* 1b6413400b5a6a96d062a7c13109e6325e081c85 foobar file2, rm file3
| M     file2
| D     file3
* e0dd02ce23977c782987a206236da5ab784543cc Add file4
| A     file4
* b58e85692f711d402bae4ca606d3d2262bb76cf1 Added files
  A     file1
  A     file2
  A     file3


‣ git diff-tree HEAD
ed080bc88b7bf0c5125e093a26549f3755f7ae74
:100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D  file4
:000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A  file5


‣ git log --stat --pretty=short --graph
* commit ed080bc88b7bf0c5125e093a26549f3755f7ae74 (HEAD -> master)
| Author: My Name <user@email.com>
| 
|     mv file4 to file5
| 
|  file4 => file5 | 0
|  1 file changed, 0 insertions(+), 0 deletions(-)
| 
* commit 5c4e8cfbe3554fe3d7d99b5ae4ba381fa1cdb328
| Author: My Name <user@email.com>
| 
|     foo file1
| 
|  file1 | 3 +++
|  1 file changed, 3 insertions(+)
| 
* commit 1b6413400b5a6a96d062a7c13109e6325e081c85
| Author: My Name <user@email.com>
| 
|     foobar file2, rm file3
| 
|  file2 | 1 +
|  file3 | 0
|  2 files changed, 1 insertion(+)
| 
* commit e0dd02ce23977c782987a206236da5ab784543cc
| Author: My Name <user@email.com>
| 
|     Add file4
| 
|  file4 | 0
|  1 file changed, 0 insertions(+), 0 deletions(-)
| 
* commit b58e85692f711d402bae4ca606d3d2262bb76cf1
  Author: My Name <user@email.com>

      Added files

   file1 | 0
   file2 | 0
   file3 | 0
   3 files changed, 0 insertions(+), 0 deletions(-)


‣ git log --name-only --pretty=format:
file5

file1

file2
file3

file4

file1
file2
file3


‣ git log --name-status --pretty=format:
R100    file4   file5

M       file1

M       file2
D       file3

A       file4

A       file1
A       file2
A       file3


‣ git diff --stat 'HEAD^!'
 file4 => file5 | 0
 1 file changed, 0 insertions(+), 0 deletions(-)


‣ git show
commit ed080bc88b7bf0c5125e093a26549f3755f7ae74 (HEAD -> master)
Author: My Name <user@email.com>
Date:   Mon Oct 21 15:46:04 2019 -0700

    mv file4 to file5

diff --git a/file4 b/file5
similarity index 100%
rename from file4
rename to file5


@ සීබී-බේලි @ පීටර්-සුවරා au ගෞරව් @ ඔමර්-ඩගන් @xsor @ හසොක් rnrz @ptc


0

තවත් ප්‍රයෝජනවත් විධානයක් වනුයේ git diff-tree <hash>හෑෂ් ද හැෂ් පරාසයක් විය හැකි (අංකනය මඟින් දැක්වේ <old>..<new>). ප්‍රතිදාන උදාහරණයක්:

$ git diff-tree  HEAD
:040000 040000 8e09a be406 M myfile

ක්ෂේත්‍ර:

source mode, dest mode, source hash, dest hash, status, filename

තත්වයන් යනු ඔබ අපේක්ෂා කරන ඒවා ය: ඩී (මකාදැමූ), (එකතු කරන ලද), එම් (වෙනස් කරන ලද) යනාදිය. සම්පූර්ණ විස්තරය සඳහා මෑන් පිටුව බලන්න.


0

ල logs ු-සටහන් ලබා ගැනීම සඳහා මම සාමාන්‍යයෙන් මේවා භාවිතා කරමි:

$ git log --name-status --author='<Name of author>' --grep="<text from Commit message>"

$ git log --name-status --grep="<text from Commit message>"

1
මෙම විකල්පයන් ගැන මා දැන සිටියේ නැත, නමුත් එය ලොගය පෙරහන් කරන බව පැහැදිලි කළහොත් මෙම ලිපිය වඩාත් ප්‍රයෝජනවත් වනු ඇත. එහි මොහොතකට, මම සිතුවේ එය ප්‍රතිදානයේ කතුවරුන් ලැයිස්තුගත කර ඇති ආකාරය වෙනස් කිරීමේ ක්‍රමයක් බවයි.
ස්ටේන්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.