කොමිස් දෙකක් අතර වෙනස් වූ ගොනු නාම පමණක් ලැයිස්තුගත කරන්නේ කෙසේද?


1973

මට රෙපෝ එකේ කොමිස් පොකුරක් තියෙනවා. මට කාරක සභා දෙකක් අතර වෙනස් වූ ගොනු ලැයිස්තුවක් දැකීමට අවශ්‍යයි - SHA1 සිට SHA2 දක්වා.

මා භාවිතා කළ යුතු විධානය කුමක්ද?


Answers:


2688
git diff --name-only SHA1 SHA2

එහිදී ඔබට අවශ්‍ය වන්නේ කමිටු හඳුනා ගැනීම සඳහා ප්‍රමාණවත් තරම් SHA ඇතුළත් කිරීම පමණි. උදාහරණයක් ලෙස ඔබට ද කළ හැකිය

git diff --name-only HEAD~10 HEAD~5

දහවන නවතම බැඳීම සහ පස්වන නවතම (හෝ එසේ) අතර වෙනස්කම් බැලීමට.


154
මෙය git show සඳහාද ක්‍රියා කරයි. git show --name-only SHA1.
අගෝස්තු ලිලියාස්

79
git diff --name-status [TAG|SHA1]ගොනු කිරීමට ද මෙහෙයුම් සිදු කරන ලදී දේ දර්ශන
reconbot

2
ඔබට ද කළ හැකිය: git diff --name-only HEAD @ {3} HEAD @ {0 you ඔබට සැසඳීමට අවශ්‍ය නිශ්චිත කොමිස් සඳහා.
b01

7
Ug අගෝස්තුස්ට්ලීස් ඇත්ත වශයෙන්ම ප්‍රදර්ශනය භාවිතා කරන්නේ පෙන්වන්නේ නිශ්චිත කොමිස් 2 ක් පමණි, ඔබට එම 2 අතර
කොමිස් තිබේ නම් ඒවා අත්හරිනු

4
පහත සඳහන් පරිදි, git diff --name-statusඑකතු කළ ගොනු පෙන්වීමට අවශ්‍ය නොවන බව පෙනේ. chschuberth පෙන්වා දුන් පරිදි git show, එය මට නිසි ලෙස ක්‍රියාත්මක වන බව පෙනේ : git show --pretty=format: --name-status. එසේ කිරීමෙන් git show --name-statusතව ටිකක් තොරතුරු ලැබේ, නමුත් තවමත් ලස්සන හා
ense නයි

420
git diff --name-status [SHA1 [SHA2]]

--name-only වැනි ය, ගොනුවට සිදුවූයේ කුමක්දැයි ඔබට සරල උපසර්ගයක් ලබා ගැනීම හැර (වෙනස් කරන ලද, මකා දැමූ, එකතු කරන ලද ...)

git log --name-status --oneline [SHA1..SHA2]

සමාන වේ, නමුත් බැඳීම් පණිවිඩයෙන් පසුව කොමිස් ලැයිස්තුගත කර ඇත, එබැවින් ගොනුවක් වෙනස් කළ විට ඔබට දැක ගත හැකිය.

  • ඔබ, සමහර ගොනු / ෆෝල්ඩර ඔබ ඇතුලත් කළ හැකි සිදු දේ ගැන උනන්දු කරන්නේ නම්, -- <filename> [<filename>...]කිරීමට git logඅනුවාදය.

  • තනි කැපවීමකට සිදුවූයේ කුමක්දැයි බැලීමට ඔබට අවශ්‍ය නම්, එය SHA1 ලෙස අමතන්න, ඉන්පසු කරන්න
    git log --name-status --oneline [SHA1^..SHA1]

ගොනුව තත්ත්වය කොඩි:
එම් විකරණය - ගොනු විකරණය කොට තිබේ නම්,
සී පිටපතක්-සංස්කරණ-- ගොනු පිටපත් කර විකරණය කොට තිබේ නම්,
ආර් ප්රතිනම්කෙරුම්-සංස්කරණ-- ගොනු නැවත නම් සහ විකරණය කොට තිබේ නම්,
ඒ එක් - ගොනු එකතු කර ඇත,
ඩී මකා දමන ලදී - ගොනු මකා දමා ඇත
U unmerged - ඒකාබද්ධ කිරීමෙන් පසු ගොනුවට ගැටුම් ඇත


මට කියන්නට ඇත්තේ git diff --name-status වන අතර එය 'එකතු කළ ගොනුව' ලබා දුන්නේය.
aartist

1
Git ලොග් සඳහා, SHA1..SHA2 වැනි SHA අතර තිත් දෙකක් තිබිය යුතු අතර දෙවන SHA විකල්ප නොවේ, එබැවින් එය මේ ආකාරයට විය යුතුය: git log --name-status --oneline [SHA1 .. SHA2]
twasbrillig

සමහර ගොනු / ඇතැම් ගොනු වර්ග බැහැර කිරීමට ක්‍රමයක් තිබේද?
aug

3
මෙම --relative[=<path>]විකල්පය මට විශ්වාස නෑ, ඔබට උදව් කරන්න පුළුවන්. නැතිනම් සෑම විටම පවතී | erep -v '(.tmp|.foo|.dontwant)$'...
artfulrobot

83

ස්විචය කිසිවෙකු සඳහන් කර නැති බව පෙනේ --stat:

$ git diff --stat HEAD~5 HEAD
 .../java/org/apache/calcite/rex/RexSimplify.java   | 50 +++++++++++++++++-----
 .../apache/calcite/sql/fun/SqlTrimFunction.java    |  2 +-
 .../apache/calcite/sql2rel/SqlToRelConverter.java  | 16 +++++++
 .../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
 .../org/apache/calcite/test/RexProgramTest.java    | 24 +++++++++++
 .../apache/calcite/test/SqlToRelConverterTest.java |  8 ++++
 .../apache/calcite/test/SqlToRelConverterTest.xml  | 15 +++++++
 pom.xml                                            |  2 +-
 .../apache/calcite/adapter/spark/SparkRules.java   |  7 +--
 9 files changed, 117 insertions(+), 26 deletions(-)

ද තිබේ --numstat

$ git diff --numstat HEAD~5 HEAD
40      10      core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1       1       core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16      0       core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8       11      core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24      0       core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8       0       core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15      0       core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1       1       pom.xml
4       3       spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java

සහ --shortstat

$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)

5
පිළිගත් පිළිතුර නිවැරදි ය, නමුත් මෙය ඉතා ප්‍රයෝජනවත් වන අතර ඔබට අමතර තොරතුරු ටිකක් ලබා දෙයි. ස්තූතියි!
kontur

2
වෙනස සංඛ්‍යාලේඛන අඩංගු බැවින් මෙය වඩාත් ප්‍රයෝජනවත් පිළිතුරක් බව එකඟ විය.
internetross

53

නමුත් ඔබේ ශාඛාව සහ එහි පොදු මුතුන් මිත්තෙකු අතර වෙනත් ශාඛාවක් සමඟ ගොනු වෙනස් වී ඇති බව දැකීම සඳහා (සම්භවය / ස්වාමියා කියන්න):

git diff --name-only `git merge-base origin/master HEAD`

1
මෙය ඇත්තෙන්ම ප්‍රයෝජනවත් විය! git diffstatus masterඉහත කාරණා අවුලුවන සරලව හෝ ඒ හා සමාන යැයි මට කිව හැකිය .
oma

3
නැත්නම් git show --pretty=format: --name-only origin/master...
sschuberth

ඔබට එය අන්වර්ථ නාමයක් බවට පත් කිරීමට නොහැකි විය හැක, නමුත් ඔබට එය අනිවාර්යයෙන්ම ඔබේ .bashrc තුළට දැමිය හැකිය.
ෆ්‍රෙඩ්

3
හෝ ඊටත් වඩා සරලයි: git diff --name-only HEAD...master(තිත් තුන සටහන් කරන්න). සවිස්තරාත්මක පැහැදිලි කිරීමක් සඳහා, මෙහි බලන්න .
ostrokach

1
බොහෝ දුරට නිවැරදි පිළිතුර ලෙස පෙනේ! සරල git diff --name-only master..branchgithub PR ලැයිස්තුවට අනුරූප නොවේ. මේ ආකාරයෙන් වඩාත් නිවැරදි ය. නමුත් කෙසේ හෝ මා සතුව ගිතුබ් පීආර් හි චැනල් ගොනු 173 එදිරිව 171 ඇත. ( merge-baseමා නොමැතිව 228 එදිරිව 171)
x'ES

21

ශාඛා දෙකක් අතර වෙනස් කළ ලිපිගොනු පෙන්වීමට ඔබට අවශ්‍ය නම් @ artfulrobot ගේ පිළිතුරට අතිරේකව:

git diff --name-status mybranch..myotherbranch

පූර්වාදර්ශය ගැන සැලකිලිමත් වන්න. ඔබ පළමුව නව ශාඛාව තැබුවහොත් එය එකතු කිරීමට වඩා මකාදැමූ බව පෙන්වයි.

ඒ එකතු grepකිරීමෙන් තව දුරටත් දේවල් පිරිපහදු කළ හැකිය:

git diff --name-status mybranch..myotherbranch | grep "A\t"

එවිට පෙන්වනුයේ ඇතුළත් කළ ගොනු පමණි myotherbranch.


4
Regexes හොඳයි, ඇත්තෙන්ම ඕනෑම දෙයක් කළ හැකිය. මෙම අවස්ථාවෙහිදී, --diff-filterමෙම ක්‍රියාකාරිත්වය ස්වදේශීයව ලබා දෙන අතර, එයින් අදහස් කරන්නේ වැරදි ප්‍රති results ල ලැබීමට ඇති ඉඩකඩ අඩු බවයි (උදා: ව්‍යාජ ධනාත්මක)
ජැස්පර්

8

ඔබේ අන්වර්ථයට පහළින් එකතු කරන්න ~/.bash_profile, පසුව ධාවනය කරන්න source ~/.bash_profile; දැන් ඔබට ඕනෑම වේලාවක යාවත්කාලීන කරන ලද ලිපිගොනු ඔබගේ අවසාන ගබඩාවෙන් බැලීමට අවශ්‍ය වේ showfiles.

alias showfiles='git show --pretty="format:" --name-only'

2
නැත්නම් git config --global alias.showfiles 'show --pretty="format:" --name-only'හදන්න git showfiles.
cgmb


7

අවසාන කැපවීම සහ ඊට පෙර ඇති ගොනුව අතර වෙනස් වූ ලිපිගොනු බැලීමට ඔබට අවශ්‍ය නම් මතක තබා ගන්න. මෙය හොඳින් ක්‍රියාත්මක වේ:git show --name-only


3

Git log --pretty = oneline> C: \ filename.log භාවිතා කරන්න

එය ලොග් වනුයේ වෙනස් කළ ගොනුවේ නම වන ඔන්ලයින් (--pretty = ඔන්ලයින්) පමණි. සියලු විස්තර ඔබගේ ප්‍රතිදාන ගොනුවට ලොග් කරනු ඇත.


git log --pretty=onelineමට ලබා දෙන්නේ SHA සහ
කැපවීමේ

3

Artfulrobot ඔහුගේ පිළිතුරෙන් පැවසූ පරිදි:

git diff --name-status [SHA1 [SHA2]]

මගේ උදාහරණය:

git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997 
4b95d595812211553070046bf2ebd807c0862cca
M       views/layouts/default.ctp
M       webroot/css/theme.css
A       webroot/img/theme/logo.png

3

ජාවා ලිපිගොනු කෙරෙහි පමණක් අවධානය යොමු කළ යුතු කෙනෙකුට, මෙය මගේ විසඳුමයි:

 git diff --name-status SHA1 SHA2 | grep '\.java$'

1

පහත සඳහන් දෑ මට හොඳින් ක්‍රියාත්මක වේ:

$ git show --name-only --format=tformat: SHA1..SHA2

එය තනි කැපවීමකින් ද භාවිතා කළ හැකිය:

git show --name-only --format=tformat: SHA1

ඔබට ජෙන්කින්ස් හි භාවිතයට පහසු වන අතර එහිදී ඔබට වෙනස් කිරීම් ලැයිස්තුවක් ලබා දී ඇති අතර, කුමන ගොනු වෙනස් කර ඇත්දැයි බැලීමට ඒවා නැවත කියවීමට අවශ්‍යය.

මෙය ඉහත පිළිතුරු කිහිපයකට සමාන ය, නමුත් භාවිතා tformat:කිරීම format:කොමිස් අතර බෙදුම්කරුගේ ඉඩ ඉවත් කරයි.


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.