Git ඉතිහාසයේ කැපවූ කේතය ග්‍රහණය කරගන්නේ කෙසේද?


1454

මම අතීතයේ යම් කාලයකදී ගොනුවක ගොනුවක් හෝ කේතයක් මකා දැමුවෙමි. මට අන්තර්ගතය (බැඳීම් පණිවිඩවල නොවේ) ග්‍රහණය කර ගත හැකිද?

ඉතා දුර්වල විසඳුමක් වන්නේ ලොගය අතුගා දැමීමයි:

git log -p | grep <pattern>

කෙසේ වෙතත්, මෙය බැඳීම් හැෂ් එකවරම ආපසු නොඑයි. මම git grepකිසිම ප්‍රයෝජනයක් නැතිව සෙල්ලම් කළා .


2
ජූනියෝ සී හමානෝ (ජිට් නඩත්තු කරන්නා) විසින් කරන ලද මෙම බ්ලොග් සටහන් ඔබට සිත්ගන්නාසුළු විය හැකිය: * ලිනස්ගේ අවසාන අන්තර්ගතය ලුහුබැඳීමේ මෙවලම (පිකැක්ස් සෙවීම ගැන git log -Sසහ දොස් පැවරීම ගැන) * [“git log --grep” සමඟ විනෝද වන්න] [2] (කැපවීමේ පණිවිඩ සෙවීම ) * ["Git grep" සමඟ විනෝද වන්න] [3] [2]: gitster.livejournal.com/30195.html [3]: gitster.livejournal.com/27674.html
ජකුබ් නාරබ්ස්කි


හැකි අනුපිටපතකින් පිළිතුර සැබවින්ම ක්‍රියාත්මක වේ: stackoverflow.com/a/1340245/492
CAD

මෙහි ඇති ගැටළුව නම් එය වෙනසට කිසිදු සන්දර්භයක් ලබා
Sonic Soul

Answers:


1919

බැඳීම් අන්තර්ගතය සෙවීම සඳහා (එනම්, සත්‍ය පණිවිඩ ප්‍රභවයන්, පණිවිඩ යැවීමට හා ඒ හා සමානව), ඔබ කළ යුත්තේ:

git grep <regexp> $(git rev-list --all)

git rev-list --all | xargs git grep <expression> ඔබ "තර්ක ලැයිස්තුව දිගු" දෝෂයකට හසු වුවහොත් එය ක්‍රියා කරයි.

ඔබ සමහර subtree (උදාහරණයක් ලෙස, "lib / util") වෙත සෙවුම සීමා කිරීමට අවශ්ය නම්, ඔබ වෙත ගමන් කිරීමට අවශ්ය වනු ඇත rev-listsubcommand හා grepමෙන්ම:

git grep <regexp> $(git rev-list --all -- lib/util) -- lib/util

මෙය ඔබගේ සියලු කැපවීමේ පා through හරහා ග්‍රහණය වනු ඇත regexp.

විධාන දෙකෙහිම මාර්ගය පසු කිරීමට හේතුව වන්නේ rev-listසියලු වෙනස්වීම් lib/utilසිදු වූ සංශෝධන ලැයිස්තුව නැවත ලබා දෙන grepනිසා පමණක් නොව, ඔබ සෙවිය යුතු වන පරිදි ඔබ සමත් විය යුතුය lib/util.

පහත දැක්වෙන තත්වය මවා ගන්න: ආපසු ලබා දුන් එකම සංශෝධනයේ අඩංගු වෙනත් ලිපිගොනු වලද එය grepසොයාගත හැකිය ( <regexp>එම සංශෝධනයේ rev-listඑම ගොනුවේ කිසිදු වෙනසක් සිදු නොවුනත්).

ඔබේ මූලාශ්‍රය සෙවීමේ තවත් ප්‍රයෝජනවත් ක්‍රම කිහිපයක් මෙන්න:

පෙළ ගැලපීම සඳහා වැඩ කරන ගස සොයන්න නිත්‍ය ප්‍රකාශනය regexp:

git grep <regexp>

සාමාන්‍ය ප්‍රකාශන regexp1 හෝ regexp2 ගැලපෙන පෙළ පේළි සඳහා වැඩ කරන ගස සොයන්න:

git grep -e <regexp1> [--or] -e <regexp2>

සාමාන්‍ය ප්‍රකාශන regexp1 සහ regexp2 ගැලපෙන පෙළ රේඛා සඳහා වැඩ කරන ගස සොයන්න, ගොනු මාර්ග පමණක් වාර්තා කරන්න:

git grep -l -e <regexp1> --and -e <regexp2>

සාමාන්‍ය ප්‍රකාශන regexp1 හා සාමාන්‍ය පෙළට ගැලපෙන පෙළ රේඛා ඇති ගොනු සඳහා වැඩ කරන ගස සොයන්න regexp2:

git grep -l --all-match -e <regexp1> -e <regexp2>

පෙළ ගැලපෙන රටාවේ වෙනස් වූ රේඛා සඳහා වැඩ කරන ගස සොයන්න:

git diff --unified=0 | grep <pattern>

පෙළ ගැලපීම සඳහා සියලු සංශෝධන සොයන්න නිත්‍ය ප්‍රකාශන regexp:

git grep <regexp> $(git rev-list --all)

පෙළ ගැළපෙන සාමාන්‍ය ප්‍රකාශනය සඳහා rev1 සහ rev2 අතර ඇති සියලුම සංශෝධන සොයන්න regexp:

git grep <regexp> $(git rev-list <rev1>..<rev2>)

62
ස්තූතියි, විශිෂ්ටයි! "$ (Git rev-list --all)" අවශ්‍ය වීම කනගාටුවට කරුණක් වන අතර ශාඛාවක සමස්ත ඉතිහාසය තුළම සෙවීම නියම කිරීමට පහසු ස්විචයක් නොමැත.
ඕට්වින් ජෙන්ට්ස්

3
විශිෂ්ටයි. +1. GitBook සමහර විස්තර එකතු කරයි ( book.git-scm.com/4_finding_with_git_grep.html ), සහ ජූනියෝ සී හමානෝ
VonC

18
අවාසනාවට, මට මෙය msysgit-1.7.4 සමඟ ලබා ගත නොහැක. ඒක මට කියනවා sh.exe": /bin/git: Bad file number. VonC හි පිළිතුර msysgit සමඟ ද ක්‍රියා කරයි.
eckes

4
පුනරුත්ථාපන ලැයිස්තුවක් සමඟ ඔබ git grep ඉතිහාසය ඉල්ලා සිටින විට ඔබට "ගසක් කියවීමට නොහැකි" දෝෂයක් ඇති වුවහොත්, ඔබට දේවල් පිරිසිදු කිරීමට අවශ්‍ය විය හැකිය. උත්සාහ කරන්න git gcහෝ පරීක්ෂා කරන්න: stackoverflow.com/questions/1507463/…
ඇන්තනි

8
ඔව්, මෙය වින්ඩෝස් වලද අසාර්ථක වන බව පෙනේ, අහෝ.
මිලිස්නර්

557

ඔබ පිකැක්ස් ( -S) විකල්පය භාවිතා කළ යුතුය git log.

සෙවීම සඳහා Foo:

git log -SFoo -- path_containing_change
git log -SFoo --since=2009.1.1 --until=2010.1.1 -- path_containing_change

Git ඉතිහාසය බලන්න - වැඩි විස්තර සඳහා යතුරු පදයෙන් නැතිවූ රේඛාව සොයා ගන්න .


ලෙස Jakub Narębski අදහස් දැක්වූයේ මෙසේ ය:

  • මෙය නිදසුනක් හඳුන්වා දෙන හෝ ඉවත් කරන වෙනස්කම් සොයයි<string> . එහි සාමාන්‍යයෙන් අදහස් වන්නේ "ඔබ 'ෆූ' සමඟ පේළිය එකතු කළ හෝ ඉවත් කළ සංශෝධන" යන්නයි.

  • මෙම --pickaxe-regexවිකල්පය මඟින් නූලක් සෙවීම වෙනුවට දීර් P POSIX regex භාවිතා කිරීමට ඉඩ ලබා දේ. උදාහරණය (වෙතින් git log):git log -S"frotz\(nitfol" --pickaxe-regex


ලෙස රොබ් අදහස් දක්වමින්, මෙම සෝදිසි තටු සංවේදී වේ - ඔහු විවෘත පසු විපරම් ප්රශ්නය නඩුව-අසංවේදී පිරික්සා බලන ආකාරය පිළිබඳව.


3
ස්තූතියි, මම මෙම විකල්පය ගැන දැන සිටියේ නැත. ඔබ කැපවීමේ පණිවිඩ ගැන උනන්දුවක් දක්වන්නේ නම් මෙය හොඳම විසඳුම බව පෙනේ. පිරිසිදු රේඛා ගැලපීමේ සාම්ප්‍රදායික යුනික්ස් ග්‍රෙප් හැසිරීම ඔබට අවශ්‍ය නම් ජීට්ගේ විසඳුම වඩාත් යෝග්‍ය වේ.
ඕට්වින් ජෙන්ට්ස්

Ort ඕර්ට්වින්: එකඟ විය (මම තෝරාගත් විසඳුම ඉහළ නංවා ඇත්තෙමි). මෙම git logඔබේ ප්රශ්නය ගැන ටිකක් මට අවුල් කළ;)
VonC

12
-pධජය සමඟ එය ඒකාබද්ධ කර වෙනස ප්‍රතිදානය කරන්න.
සැන්ඩර්

Git log -S භාවිතා කරමින් නිශ්චිත රටාවන්ට ගැලපෙන සියලුම නාමාවලි බැහැර කිරීමට ක්‍රමයක් තිබේද?
බකාකුනා

3
N ඇනෙන්ට්‍රොපික් ඔබට --branches --allසියලු repo සෙවීම සඳහා විකල්ප අවශ්‍ය වේ.
VonC

252

එය කිරීමට මගේ ප්රියතම ආකාරය වේ git logගේ -Gවිකල්පය (1.7.4 අනුවාදය එකතු).

-G<regex>
       Look for differences whose added or removed line matches the given <regex>.

බැඳීමක් ගැලපෙන්නේද යන්න -Gසහ -Sවිකල්පයන් තීරණය කරන ආකාරය අතර සියුම් වෙනසක් ඇත :

  • මෙම -Sවිකල්පය අවශ්යයෙන්ම පෙර සහ සිදු පසුව තිබෙන ගොනුව විටින් ඔබගේ සෙවුම් තරඟ සංඛ්යාව සතුය. පෙර සහ පසු ගණන් වෙනස් නම් බැඳීම ලොගයෙහි දැක්වේ. නිදසුනක් ලෙස, මෙය ඔබගේ සෙවුමට ගැලපෙන රේඛාවක් ගෙන ගිය ස්ථානයක් පෙන්වන්නේ නැත.
  • -Gවිකල්පය සමඟ , ඔබගේ සෙවුම එකතු කරන ලද, ඉවත් කරන ලද හෝ වෙනස් කළ ඕනෑම රේඛාවකට ගැලපේ නම් බැඳීම ලොගයෙහි පෙන්වනු ලැබේ.

මෙම කැපවීම උදාහරණයක් ලෙස ගන්න:

diff --git a/test b/test
index dddc242..60a8ba6 100644
--- a/test
+++ b/test
@@ -1 +1 @@
-hello hello
+hello goodbye hello

මෙම කැපවීමට පෙර සහ පසු ගොනුවේ "හෙලෝ" දර්ශනය වන වාර ගණන එක හා සමාන බැවින් එය භාවිතයට නොගැලපේ -Shello. කෙසේ වෙතත්, රේඛා ගැලපුමක වෙනසක් සිදු වී ඇති බැවින් hello, කැපවීම භාවිතයෙන් පෙන්වනු ඇත -Ghello.


2
Git ලොග් ප්‍රතිදානයේ ගැලපෙන වෙනස් කිරීමේ සන්දර්භය පෙන්වීමට ක්‍රමයක් තිබේද?
තිලෝ-ඇලෙක්සැන්ඩර් ජින්කල්

13
Il තිලෝ-ඇලෙක්සැන්ඩර් ජින්කෙල් - මම සාමාන්‍යයෙන් -pඑක් එක් කැපවීම සඳහා වෙනසක් පෙන්වීමේ විකල්පය එක් කරමි. මගේ පේජරයේ ලොගය විවෘත කළ විට, මම සොයන ඕනෑම දෙයක් මම සොයමි. ඔබේ පේජරය ඔබ lessසහ ඔබ නම් git log -Ghello -p, ඔබට ටයිප් කිරීමට /hello, එබීමට Enterසහ භාවිතා කිරීමට nසහ N"හෙලෝ" හි ඊළඟ / පෙර සිදුවීම් සොයා ගැනීමට හැකිය.
ටයිලර් හොලියන්

-Gසහ රීජෙක්ස් සමඟ මට සිත්ගන්නා කරුණක් හමු විය : විධාන රේඛාව යූටීඑෆ් -8 භාවිතා කරන්නේ නම් සහ ඔබ බලන ගොනුව අයිඑස්ඕ-ලතින් (බිට් 8) කේතන ක්‍රමයක් භාවිතා කරයි නම් .*අසමත් වේ. උදාහරණයක් ලෙස, මට වෙනසක් ඇත Vierter Entwurf-> Fünfter Entwurf, සහ 'V.*ter Entwurf'තරඟයක් නිපදවන අතර, 'F.*ter Entwurf'එසේ නොවේ.
යූ වින්ඩ්ල්

53

ඔබට කේත වෙනස්වීම් පිරික්සීමට අවශ්‍ය නම් (මුළු ඉතිහාසයේම දී ඇති වචනය සමඟ සැබවින්ම වෙනස් කර ඇති දේ බලන්න) patchමාදිලිය සඳහා යන්න - මට ඉතා ප්‍රයෝජනවත් සංයෝජනයක් හමු විය:

git log -p
# Hit '/' for search mode.
# Type in the word you are searching.
# If the first search is not relevant, hit 'n' for next (like in Vim ;) )

11
පිළිගත් විසඳුම මට වැඩ කරන්නේ නැත. මේක කළා!
rodvlopes

30

git log සියළුම ශාඛා හරහා පෙළ සෙවීමේ වඩාත් way ලදායී ක්‍රමයක් විය හැකිය, විශේෂයෙන් බොහෝ ගැලපීම් තිබේ නම්, ඔබට වඩාත් මෑත (අදාළ) වෙනස්කම් පළමුව දැකීමට අවශ්‍යය.

git log -p --all -S 'search string'
git log -p --all -G 'match regular expression'

මෙම ලොග් විධාන ලැයිස්තුව මඟින් ලබා දී ඇති සෙවුම් දාමය / රීජෙක්ස් එකතු කිරීම හෝ ඉවත් කිරීම සිදු කරයි. මෙම -pවිකල්පය ඔබට සන්දර්භය තුළ එය දැකීමට හැකි වන පරිදි අදාළ වෙනස, රටාව හෝ ඉවත් කරමින් සිටි පෙන්වා ඇත කළ යුතු හේතු වේ.

ඔබ සොයන පෙළ එකතු කරන අදාළ බැඳීමක් සොයාගත් පසු (නිදසුනක් ලෙස, 8beeff00d), බැඳීම අඩංගු ශාඛා සොයා ගන්න:

git branch -a --contains 8beeff00d

හායි, මෙම රේඛා කිසිසේත් ක්‍රියාත්මක වන බවක් නොපෙනේ. මගේ විධානය> git log -p --all -S 'public string DOB {get; කට්ටලය; string = string.Empty; ' මම එය ක්‍රියාත්මක කිරීමට උත්සාහ කරන සෑම අවස්ථාවකම මට ලැබෙන්නේ> මාරාන්තික: නොපැහැදිලි තර්කය 'string': නොදන්නා සංශෝධනය හෝ වැඩ කරන ගසෙහි නොමැති මාර්ගය. > සංශෝධන වලින් මාර්ග වෙන් කිරීමට '-' භාවිතා කරන්න, මේ ආකාරයට:> 'git <command> [<revision> ...] - [<file> ...]'
user216652

@ user216652 කිසියම් හේතුවක් නිසා 'උපුටා දැක්වීම් ඔබගේ සෙවුම් නූල එක තර්කයක් ලෙස කාණ්ඩ නොකරයි. ඒ වෙනුවට, 'publicතර්කය වන අතර -S, එය අනෙක් ඒවා වෙනම තර්ක ලෙස සලකයි. ඔබ ක්‍රියාත්මක වන්නේ කුමන පරිසරය තුළදැයි මට විශ්වාස නැත, නමුත් දෝශ නිරාකරණය සඳහා එම සන්දර්භය අවශ්‍ය වේ. ඔබේ git විධානය කවචයට යවන ආකාරය පිළිබඳ සියලු සන්දර්භයන් සමඟ, ඔබට දෝශ නිරාකරණය සඳහා අවශ්‍ය නම් වෙනම StackOverflow ප්‍රශ්නයක් විවෘත කිරීමට මම යෝජනා කරමි. එය වෙනත් විධානයක් හරහා යවන බව මට පෙනේ? මෙහි අදහස් දැක්වීමට මෙය සුදුසු ස්ථානය නොවේ.
එඩ්වඩ් ඇන්ඩර්සන්

26

මම ජීට්ගේ පිළිතුර ගෙන එය වින්ඩෝස් වලට අනුවර්තනය කළෙමි ( මෙම පිළිතුරට ස්තූතියි ):

FOR /F %x IN ('"git rev-list --all"') DO @git grep <regex> %x > out.txt

යම් හේතුවක් නිසා, මෙම රීජෙක්ස් මකා දැමූ සත්‍ය කැපවීම විධානයේ ප්‍රතිදානයේ නොපෙන්වා ඇති බව සලකන්න.


2
+1 - සහ එක් එක් සොයාගැනීමෙන් පසු "q" පහර දීම වළක්වා ගැනීමට ඔබට අවශ්‍ය නම් --no-pager, අවසානයේ git විධානයට එක් කරන්න
cgp

2
එසේම, පෙළ ගොනුවකට එකතු කිරීමෙන් සැබවින්ම ගැලපෙන පෙළ ප්‍රදර්ශනය කිරීමේ අමතර වාසියක් ඇති බව මම සටහන් කරමි. ( >>results.txtවින්ඩෝස් පයිප්ප පිළිබඳ මනා දැනුමක් නැති අය සඳහා පෙළ ගොනුවකට එකතු කරන්න ...
cgp


23

සොයන්න , ඕනෑම සංශෝධනය කිසිදු ගොනු :

git rev-list --all | xargs git grep <regexp>

දී ඇති සමහර ලිපිගොනු වල පමණක් සොයන්න, උදාහරණයක් ලෙස XML ගොනු:

git rev-list --all | xargs -I{} git grep <regexp> {} -- "*.xml"

ප්‍රති lines ල රේඛා මේ ආකාරයට විය යුතුය: 6988bec26b1503d45eb0b2e8a4364afb87dde7af: bla.xml: එය සොයාගත් රේඛාවේ පෙළ ...

එවිට ඔබට කර්තෘ, දිනය, සහ වෙනස වැනි තවත් තොරතුරු ලබා ගත හැකිය git show:

git show 6988bec26b1503d45eb0b2e8a4364afb87dde7af

11

සරල බව සඳහා, මම යෝජනා කරන්නේ GUI: gitk - Git නිධිය බ්‍රව්සරය . එය නම්යශීලී ය

  1. සෙවුම් කේතය සඳහා:

    රූප විස්තරය මෙහි ඇතුළත් කරන්න
  2. ගොනු සෙවීමට:

    රූප විස්තරය මෙහි ඇතුළත් කරන්න
  3. ඇත්ත වශයෙන්ම, එය නිත්‍ය ප්‍රකාශන සඳහා ද සහාය වේ:

    රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඉහළ / පහළ ඊතල භාවිතයෙන් ඔබට ප්‍රති results ල හරහා සැරිසැරීමට හැකිය.


6

Sourcetree හි වෙනත් අයෙකු මෙය කිරීමට උත්සාහ කරන විට, ඒ සඳහා UI හි සෘජු විධානයක් නොමැත (1.6.21.0 අනුවාදය අනුව). කෙසේ වෙතත්, ටර්මිනලය විවෘත කිරීමෙන් ඔබට පිළිගත් පිළිතුරෙහි දක්වා ඇති විධාන භාවිතා කළ හැකිය කවුළුව (ප්‍රධාන මෙවලම් තීරුවේ ඇති බොත්තම) ඒවා පිටපත් කිරීම / ඇලවීම කළ හැකිය.

සටහන: Sourcetree හි සෙවුම් දර්ශනයට අර්ධ වශයෙන් ඔබ සඳහා පෙළ සෙවීම කළ හැකිය. සෙවුම් දර්ශනයට යාමට Ctrl+ ඔබන්න 3(නැතහොත් පතුලේ ඇති සෙවුම් පටිත්ත ක්ලික් කරන්න). දකුණේ සිට, සෙවුම් වර්ගය ගොනු වෙනස්කම් ලෙස සකසා ඔබට සෙවීමට අවශ්‍ය නූල ටයිප් කරන්න. ඉහත විධානයට සාපේක්ෂව මෙම ක්‍රමයට පහත සීමාවන් ඇත:

  1. Sourcetree පමණක් පෙන්වයි අනාචාරයේ වෙනස්වී ගොනු එක් සෙවුම් වචනය අඩංගු. සෙවුම් පා contain ය අඩංගු නිශ්චිත ගොනුව සොයා ගැනීම නැවතත් අතින් කළ යුතු කාර්යයකි.
  2. RegEx සඳහා සහය නොදක්වයි.

4

මම ඔබේ ස්ථානයේ සිටින විට, මම පහත දැක්වෙන විධාන රේඛාව භාවිතා කරමි:

git log -S "<words/phrases i am trying to find>" --all --oneline  --graph

පැහැදිලි කිරීම:

  1. git log- මට මෙහි තවත් ලිවීමට අවශ්‍යයි; එය කාලානුක්‍රමික පිළිවෙලින් ල logs ු-සටහන් පෙන්වයි.
  2. -S "<words/phrases i am trying to find>" - ඕනෑම ගොනුවකට (එකතු කළ / වෙනස් කළ / මකා දැමූ) '<>' සංකේත නොමැතිව මම සොයා ගැනීමට උත්සාහ කරන වචන / වාක්‍ය ඛණ්ඩ ඇති සියලුම Git කොමිස් එය පෙන්වයි.
  3. --all - සියලුම ශාඛා හරහා බලාත්මක කිරීම සහ සෙවීම.
  4. --oneline - එය එක් පේළියක Git ලොගය සම්පීඩනය කරයි.
  5. --graph - එය කාලානුක්‍රමිකව ඇණවුම් කළ කොමිට් වල ප්‍රස්ථාරය නිර්මාණය කරයි.

1
"මම ඔබේ ස්ථානයේ සිටින විට, මට git භාවිතා කිරීමේ අවශ්‍යතාවය දැනේ!"
සෙබී

1
මෙය විශිෂ්ට පිළිතුරකි!
ඇල්ෆ් ඊටන්

Lf ඇල්ෆ් ඊටන් මගේ සතුට!
surajs1n

2

ජීට්ගේ පිළිතුර පවර්ෂෙල් හි ක්‍රියාත්මක වේ.

git grep -n <regex> $(git rev-list --all)

පහත දැක්වෙන්නේ a අඩංගු ඕනෑම ලිපිගොනුවකි password.

# Store intermediate result
$result = git grep -n "password" $(git rev-list --all)

# Display unique file names
$result | select -unique { $_ -replace "(^.*?:)|(:.*)", "" }

1

ඉතින් ඔබ උත්සාහ කරන්නේ කේතයේ පැරණි අනුවාදයන් අවසන් වරට යමක් තිබේදැයි බැලීමටද?

මම මෙය කරන්නේ නම්, මම බොහෝ විට git bisect භාවිතා කරමි . Bisect භාවිතා කරමින්, ඔබට දන්නා හොඳ අනුවාදයක්, දන්නා නරක අනුවාදයක් සහ සරල පිටපතක් නියම කළ හැකිය, එම අනුවාදය හොඳද නරකද යන්න පරීක්ෂා කර බලයි (මේ අවස්ථාවේ දී ඔබ සොයන කේතය තිබේද යන්න බැලීමට grep ). මෙය ක්‍රියාත්මක කිරීමෙන් කේතය ඉවත් කළ විට සොයාගත හැක.


2
ඔව්, නමුත් ඔබේ "පරීක්ෂණය" යනු කේතය සඳහා ග්‍රහණය කර කේතයක් තිබේ නම් "සත්‍ය" සහ එය නොමැති නම් "අසත්‍ය" ය.
රොබ් ඩි මාකෝ

2
හොඳයි, 10 වන සංශෝධනයේ කේතය නරක නම්, 11 වන සංශෝධනයෙන් හොඳ වී 15 වන සංශෝධනයේදී නැවත නරක වන්න ...
පාවුලෝ

2
මම පාවුලෝ සමඟ එකඟ වෙමි. ද්විමය සෙවීම සුදුසු වන්නේ "ඇණවුම් කළ" අගයන් සඳහා පමණි. Git bisect සම්බන්ධයෙන් ගත් කල, මෙයින් අදහස් කරන්නේ සියලුම "හොඳ" සංශෝධන යොමු ලක්ෂ්‍යයේ සිට ආරම්භ වන සියලුම "නරක" සංශෝධනයන්ට පෙර පැමිණෙන නමුත් සංක්‍රාන්ති කේතය සොයන විට එම උපකල්පනය කළ නොහැකි බවයි. මෙම විසඳුම සමහර අවස්ථාවල ක්‍රියාත්මක විය හැකි නමුත් එය හොඳ පොදු අරමුණු විසඳුමක් නොවේ.
කෙන්ට්

මුළු ගසම දෙවරක් පරීක්ෂා කර ඇති බැවින් මෙය ඉතා අකාර්යක්ෂම යැයි මම සිතමි.
යූ වින්ඩ්ල්

0

සිදුවීම: ඔබගේ IDE භාවිතා කරමින් ඔබේ කේතය විශාල වශයෙන් පිරිසිදු කර ඇත. ගැටලුව: IDE අවශ්‍ය ප්‍රමාණයට වඩා පිරිසිදු කර ඇති අතර දැන් ඔබ කේත සම්පාදනය නොකරයි (සම්පත් නැතිවීම ආදිය)

විසඳුමක්:

git grep --cached "text_to_find"

එය "text_to_find" වෙනස් කළ ගොනුව සොයා ගනු ඇත.

ඔබට දැන් මෙම වෙනස අහෝසි කර ඔබේ කේතය සම්පාදනය කළ හැකිය.



-1

මගේ නඩුවේදී මට කෙටි කැපවීමක් සෙවීමට අවශ්‍ය වූ අතර ලැයිස්තුගත විසඳුම් අවාසනාවන්ත ලෙස ක්‍රියාත්මක නොවීය.

මම එය කිරීමට සමත් විය ( REGEX ටෝකනය ආදේශ කරන්න ):

for commit in $(git rev-list --all --abbrev-commit)
do
    if [[ $commit =~ __REGEX__ ]]; then 
        git --no-pager show -s --format='%h %an - %s' $commit
    fi
done
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.