අදින්න ඉල්ලීම් සඳහා ස්කොෂ් ගිට් කරන්නේ ඇයි?


225

මා කරන සෑම බැරෑරුම් ගිතුබ් රිපෝ එකක්ම මගේ කැපවීම් තනි කැපවීමකට ලක් කිරීමට අවශ්‍ය යැයි ඉල්ලා සිටින්නේ ඇයි?

මම සිතුවේ git ලොගය එහි ඇති බැවින් ඔබට ඔබේ ඉතිහාසය පරීක්ෂා කර බලා සිදු වූ වෙනස්කම් හරියටම දැක ගත හැකි වනු ඇත, නමුත් එය කොටු කිරීම ඉතිහාසයෙන් ඉවතට ඇද දමා ඒ සියල්ල එක කැපවීමකට ඇද දමයි. කාරණය කුමක්ද?

මෙය "කල් ඇතිව කැපවීම සහ බොහෝ විට කැපවීම" යන මන්ත්‍රයට පටහැනි බව පෙනේ.


1
විශාල repo සඳහා, මිනිසුන්ට repo සමඟ ඕනෑම දෙයක් කිරීමට අවශ්‍ය වූ විට එය බොහෝ කාලයක් හා ඉඩ ප්‍රමාණයක් ඉතිරි කරයි.
raptortech97

10
මෙයද“ කල්තියාම හා බොහෝ විට “මන්ත්‍රයට” පටහැනි බව පෙනේ. - නැත, ඔබ වේලාසනින් / බොහෝ විට සිදු කරයි, නමුත් සෑම කුඩා වෙනසක්ම PR කිරීමට ඔබට අවශ්‍ය නැත. සමාලෝචකයාට ඒවා සොයා බැලීමට අවශ්‍ය නැත, එය නිසැකවම.
ජෙන්ස්

8
වටහාගත් පිළිතුර කුමක්ද යන්න සාරාංශ කිරීම සඳහා යමෙකුට ප්‍රශ්නයක් සංස්කරණය කිරීමට අවශ්‍ය නැත. පිළිගත් පිළිතුරු සහ උඩු යටිකුරු කළ ස්ථානය එයයි. පිළිතුරු කියවීමෙන් මිනිසුන්ට තමන්ගේම නිගමන උකහා ගත හැකිය.

6
කොල්ලකෑමේ ආශාවක් ඇත්තේ මන්දැයි මට තවමත් වැටහෙන්නේ නැත. මම හිතන්නේ කිසිම වාසියක් නැතිව ස්කොෂ් කිරීම සඳහා බොහෝ අවාසි ඇත. එය දත්ත නිකුතුවක් ලෙස වෙස් වලාගෙන ඉදිරිපත් කිරීමේ ගැටලුවකි.
mkobit

4
ලොගයේ ඇති ඕනෑම ප්‍රයෝජනවත් විශ්ලේෂණයක් ස්කොෂ් සමඟ නැති වී යයි. එබැවින් සංවර්ධකයෙකු තනි කැපවීමකින් අංගයක් සෑදූ බවක් පෙනේ. අමුතු කේත කැබැල්ලක් පවතින්නේ මන්දැයි බැලීම ද දුෂ්කර ය. විශේෂාංගයක ඉතිහාසය වැදගත් විය හැකි අතර කේතය එය එසේ වන්නේ ඇයිද යන්න පැහැදිලි කිරීමට බොහෝ දුරක් යා හැකිය. ලොගය පිළිබඳ සංක්ෂිප්ත දැක්ම ප්‍රයෝජනවත් වේ, නමුත් එය වෙනත් ආකාරයකින් සාක්ෂාත් කරගත නොහැකිද?
ටජාර්ට්

Answers:


170

එවිට ඔබට පැහැදිලි හා සංක්ෂිප්ත git ඉතිහාසයක් ඇති අතර එමඟින් සිදු කරන ලද වෙනස්කම් සහ එයට හේතු පැහැදිලිව හා පහසුවෙන් ලේඛනගත කළ හැකිය.

උදාහරණයක් ලෙස මා සඳහා සාමාන්‍ය 'නොකැඩූ' git ලොග් එකක් පහත පරිදි විය හැකිය:

7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
787g8fgf78... hotfix for #5849564648
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test

මොන අවුලක්ද!

එහෙත් මේ සඳහා වන පණිවිඩ කෙරෙහි මඳක් වැඩි අවධානයක් යොමු කරමින් වඩාත් ප්‍රවේශමෙන් කළමනාකරණය කරන ලද සහ ඒකාබද්ධ කරන ලද git ලොග් එකක් මෙන් පෙනේ:

7hgf8978g9... 8483948393 Added new slideshow feature
787g8fgf78... 5849564648 Hotfix for android display issue
9080gf6567... 6589685988 Implemented pop-up to select language

සාමාන්‍යයෙන් ස්කොෂ් කිරීමේ කාරණය ඔබට දැකිය හැකි යැයි මම සිතමි. ඉල්ලීම් අදින්නට ද එම මූලධර්මයම අදාළ වේ - ඉතිහාසයේ කියවීමේ හැකියාව. ඔබ දැනටමත් සිය ගණනක් හෝ දහස් ගණනක් කොමිස් ඇති බැඳීම් ලොගයකට එකතු කරමින් සිටින අතර මෙය වර්ධනය වන ඉතිහාසය කෙටියෙන් හා සංක්ෂිප්තව තබා ගැනීමට උපකාරී වේ.

ඔබට ඉක්මනින් හා බොහෝ විට කැපවීමට අවශ්‍යයි. බොහෝ හේතු නිසා එය හොඳම පුහුණුවකි. මෙය මට නිතරම "පිසදැමීම" (වැඩ කරමින් පවතී) හෝ "කොටසක් කර ඇත" හෝ "යතුරු ලියනය, සුළු නිවැරදි කිරීම" වැනි වැඩකටයුතු කිරීමට හේතු වන බව මට පෙනී ගොස් ඇත. මම වැඩ කටයුතු කරගෙන යන විට පහත කේතය ක්‍රියාත්මක නොවන්නේ නම් මට ආපසු යා හැකිය. කෙසේ වෙතත්, එම ඉතිහාසය අවසාන git ඉතිහාසයේ කොටසක් ලෙස මට අවශ්‍ය නැත, අවශ්‍ය නැත, එබැවින් මට මගේ කැපවීම් ඉවත දැමිය හැකිය - නමුත් සංවර්ධන ශාඛාවකට එදිරිව මාස්ටර්ට එයින් අදහස් කරන්නේ කුමක්ද යන්න පහත සටහන් බලන්න.

විශේෂිත ක්‍රියාකාරී අවධීන් නියෝජනය කරන ප්‍රධාන සන්ධිස්ථාන තිබේ නම්, එක් අංගයක් / කාර්යයක් / දෝෂයක් සඳහා එකකට වඩා කැපවීම තවමත් හරි ය. කෙසේ වෙතත්, මෙය බොහෝ විට ඉස්මතු කර දැක්විය හැක්කේ සංවර්ධනය වෙමින් පවතින ටිකට් පත 'ඉතා විශාල' වන අතර එය තනිවම කළ හැකි කුඩා කැබලිවලට බෙදිය යුතුය.

8754390gf87... Implement feature switches

"වැඩ 1 කෑල්ලක්" වගේ. එක්කෝ ඒවා පවතී හෝ නැත! එය බිඳ දැමීම අර්ථවත් බවක් නොපෙනේ. කෙසේ වෙතත් අත්දැකීම් මට පෙන්වා දී ඇත්තේ (සංවිධානාත්මක ප්‍රමාණය හා සංකීර්ණත්වය අනුව) වඩාත් කැටිති මාර්ගයක් විය හැකි බවයි:

fgfd7897899... Add field to database, add indexes and a trigger for the dw group
9458947548g... Add 'backend' code in controller for when id is passed in url.
6256ac24426... Add 'backend' code to make field available for views.
402c476edf6... Add feature to UI

කුඩා කෑලි වලින් අදහස් කරන්නේ පහසු කේත සමාලෝචන, පහසු ඒකක පරීක්ෂාව, qa සඳහා වඩා හොඳ අවස්ථාව, තනි වගකීම් මූලධර්මයට වඩා හොඳ පෙළගැස්වීම යනාදියයි.

එවැනි ස්කොෂ් සැබවින්ම කළ යුත්තේ කවදාද යන්න පිළිබඳ ප්‍රායෝගිකත්වය සඳහා, මූලික වශයෙන් එකිනෙකට වෙනස් වූ අදියර දෙකක් තිබේ

  • ඔබේ සංවර්ධනය, උදා
  • ඔබගේ කාර්යය ප්‍රධාන ශාඛාවට එකතු කරන ලදි, උදා

ඔබේ සංවර්ධනය අතරතුර ඔබ 'මුල් හා බොහෝ විට' සහ ඉක්මන් 'ඉවත දැමිය හැකි' පණිවිඩ සමඟ සම්බන්ධ වේ. ඔබට සමහර විට මෙහි ස්කොෂ් කිරීමට අවශ්‍ය විය හැකිය, උදා: පිසදැමීම සහ ටෝඩෝ පණිවිඩ යැවීම. ඔබ සංවර්ධනයේ දී ගත් සුවිශේෂී පියවරයන් නියෝජනය කරන බහුවිධ කොමිස් රඳවා තබා ගැනීම ශාඛාව තුළ කමක් නැත. ඔබ කිරීමට තෝරා ගන්නා බොහෝ ස්කොෂ් මෙම අංග ශාඛා තුළ තිබිය යුතු අතර ඒවා සංවර්ධනය වෙමින් පවතින අතර මාස්ටර් සමඟ ඒකාබද්ධ වීමට පෙර.
ප්‍රධාන පෙළේ ශාඛාවට එකතු කිරීමේදී ඔබට අවශ්‍ය වන්නේ දැනට පවතින ප්‍රධාන පෙළේ ඉතිහාසය අනුව සංක්ෂිප්තව හා නිවැරදිව ආකෘතිකරණය කිරීමයි. මෙයට ටිකට් ට්‍රැකර් පද්ධති හැඳුනුම්පත ඇතුළත් විය හැකිය, උදා: උදාහරණවල පෙන්වා ඇති පරිදි ජිරා. මාස්ටර් පිළිබඳ පැහැදිලි ක්‍රියා කිහිපයක් 'රෝල්-අප්' කිරීමට ඔබට අවශ්‍ය නම් මිස ස්කොෂ් කිරීම මෙහි ඇත්ත වශයෙන්ම අදාළ නොවේ. සාමාන්‍යයෙන් ඔබ එසේ නොකරයි.

--no-ffමාස්ටර් සමඟ ඒකාබද්ධ කිරීමේදී භාවිතා කිරීම ඒකාබද්ධ කිරීම සඳහා එක් කැපවීමක් භාවිතා කරන අතර ඉතිහාසය (ශාඛාවේ) ආරක්ෂා කරයි. සමහර සංවිධාන මෙය හොඳම භාවිතයක් ලෙස සලකයි. ඊට වැඩි බලන්න https://stackoverflow.com/q/9069061/631619 දී ප්රායෝගිකව ඔබ ද දකිනු ඇත git logඑය එහිදී --no-ffසිදු තොරව බැවින්ද, (පමණක් සිදු කළ විට) හිස මුදුනේ, සිදු නවතම වනු ඇත --no-ffඑය විය හැකිය දිනයන් සහ වෙනත් කොමිස් මත පදනම්ව ඉතිහාසයේ තව දුරටත් පහත වැටේ.


45
මම මෙම දර්ශනයට සම්පූර්ණයෙන්ම එකඟ නොවෙමි. කුඩා නිත්‍ය කොමිස් මඟින් කර්තව්‍යයක් කුඩා කාර්යයන් බවට පත් කරන අතර බොහෝ විට රේඛාවක් වෙනස් කළ විට වැඩ කරන්නේ කුමක් ද යන්න පිළිබඳ ප්‍රයෝජනවත් තොරතුරු ලබා දේ. ඔබට කුඩා "ඩබ්ලිව්අයිපී" කොමිස් තිබේ නම්, ඒවා තල්ලු කිරීමට පෙර එය පිරිසිදු කිරීම සඳහා ඔබ අන්තර්ක්‍රියාකාරී ප්‍රතිරෝධයක් භාවිතා කළ යුතුය. පී.ආර්.එස් ස්කොෂ් කිරීම සාමාන්‍ය කුඩා කොමිස් IMHO හි ලක්ෂ්‍යය සම්පූර්ණයෙන්ම පරාජය කරන බව පෙනේ. නිශ්චිත බැඳීම් තොරතුරු සහිත ලොග් පණිවිඩ ලබා දීමේ උත්සාහයට ගිය කතුවරයාට එය බොහෝ දුරට අගෞරවයක් වන අතර ඔබ ඒ සියල්ල ඉවත දමන්න.
ජෙස්

6
සිත්ගන්නා සුළුය. දවස අවසානයේදී මම මගේ 'දර්ශනය' පදනම් කරගන්නේ මා දැක ඇති දේ මත ය. පැහැදිලිව කිවහොත් - වෙනස් කිරීම සඳහා වැඩ කරන අතරතුර වැඩ කුඩා කොටස් වලට වෙන් කිරීම සහ ඒ සෑම එකක්ම කැප කිරීම විශිෂ්ටයි. මගේ අත්දැකීම් ඇති බව ශ්රී වරක් මෙම කාර්යය ස්වාමියාට ඒකාබද්ධ ඇත, මෙම ප්රධාන පරීක්ෂා කර ගැනීමට නැඹුරු බව දෙයක් 'එහි කුමක් වේ සම්පූර්ණයෙන්ම මොකක්ද මේ ඒකාබද්ධ (සාමාන්යයෙන්) නමකට ඇත නිසා ප්රශ්න x ...
මයිකල් Durrant

8
මමත් ස්කොෂ් විරෝධීයි. ඔබ මුලින් මෝඩ බැඳීම් පණිවිඩ ලිවිය යුතු නැත. උදාහරණයේ (85493g2458 ... ස්ථාවර විනිවිදක දර්ශන නිකුතුව) එනම්, ඒ හා සම්බන්ධ කේතය නිදොස්කරණය කිරීමට නම් එය වඩාත් ප්‍රයෝජනවත් වනු ඇත.
තෝමස් ඩේවිස්

7
SCM භාවිතයේදී එවැනි නොසැලකිලිමත් හා අස්ථානගත වූ ප්‍රවාදයක් මතුවීම අවාසනාවකි. හැසිරීම කියවීම නොව ඉතිහාසය කියවීමේ හැකියාව කළමනාකරණය කිරීම සඳහා පෙරහන් මෙවලම් භාවිතා කළ යුතුය.
ctpenrose

4
කරදරකාරී ප්‍රවණතා සහ ප්‍රවාද. ඔව්. වඩාත් එකඟතාවයකින් ඉදිරිපත් කරන ලද කරුණු පදනම් කරගත් තර්කයකට මම කැමැත්තෙමි. වෙනස් මතයක් පළ කිරීමට / ඡන්දය දීමට ඔබව සාදරයෙන් පිළිගනිමු. ප්‍රජා ඡන්දය දීමේ කාරණය එයයි
මයිකල් ඩුරන්ට්

29

බොහෝ විට PR එකක් අදින පුද්ගලයා "එකතු කරන ලද විශේෂාංග X" වල ශුද්ධ බලපෑම ගැන සැලකිලිමත් වන අතර "මූලික සැකිලි, දෝෂ නිරාකරණ X, ක්‍රියාකාරීත්වය එක් කිරීම, අදහස්වල ස්ථාවර යතුරු ලියනය, සකස් කළ දත්ත පරිමාණ පරාමිතීන්, හැෂ්මැප් වඩා හොඳින් ක්‍රියා කරයි ලැයිස්තුව "... විස්තර මට්ටම

ඔබේ කොමිස් 16 වඩාත්ම නිරූපණය කරන්නේ 1 "එකතු කරන ලද විශේෂාංග X, X භාවිතා කිරීම සඳහා නැවත සාදනු ලැබූ Z" වෙනුවට කොමිට් 2 කින් බව ඔබ සිතන්නේ නම්, එය කොමිස් 2 ක් සහිත PR එකක් යෝජනා කිරීම හොඳය, නමුත් එය යෝජනා කිරීම වඩාත් සුදුසුය. එම අවස්ථාවේ දී වෙනම prs 2 ක් (repo තවමත් තනි කැපවීම් pr හි අවධාරනය කරන්නේ නම්)

මෙය ඔබේ රෙපෝ හි මෙන් “කල් ඇතිව හා බොහෝ විට කරන්න” යන මන්ත්‍රයට පටහැනි නොවේ, ඔබ සංවර්ධනය කරමින් සිටියදී ඔබට තවමත් කැටිති තොරතුරු ඇත, එබැවින් ඔබට වැඩ අහිමි වීමේ අවම අවස්ථාවක් ඇති අතර අනෙක් අයට සමාලෝචනය / අදින්න / යෝජනා කළ හැකිය නව PR සංවර්ධනය කරන අතරතුර pr ඔබේ කාර්යයට විරුද්ධයි.


5
නමුත් ඔබ ස්කොෂ් කළ විට එම ඉතිහාසය ඔබේ දෙබලක නැති වී යයිද? ඔබට එම ඉතිහාසය ඉවත දැමීමට අවශ්‍ය ඇයි?
හැම්ස්ටාර්

4
අ) ඔබේ ශාඛාවේ ඉතිහාසය සුරැකීමට ඔබට අවශ්‍ය නම්, “ඒකාබද්ධ කිරීම සඳහා” ශාඛාවක් සහ “දේව්” ශාඛාවක් තිබීම පහසුය (එය කෙසේ හෝ ඔබට අවශ්‍ය විය හැකිය, ඔබේ ප්‍රධාන දේවාලයට නව කොමිස් එකතු කළ හැකි බැවින් ඔබ PR යෝජනා කළ පසු ශාඛාව) ආ) ඔබ තවමත් එම කොමිස්වල ශුද්ධ බලපෑම ආරක්ෂා කරමින් සිටී නම්, එය සිදුවන්නේ ඔබ ආපසු හැරවීමට කැමති අවස්ථාවන්හිදී හෝ පුද්ගලයාගේ කැපවීම අවශ්‍ය වන pr හි උප සංරචකයක් වන චෙරි-පික්. . එවැනි අවස්ථාවකදී, ඔබ බොහෝ විට කරන්නේ එක් පීආර් එකක බහුවිධ දේවල් (උදා: බග්ෆික්ස් එක්ස්, අංගය එක් කරන්න) සහ බහු පීආර් නැවත අවශ්‍ය විය හැකිය.
හිල්

Nd ඇන්ඩ rew හිල් මොනතරම් හොඳ සංකල්පයක්ද! මට මෙම කාර්ය ප්‍රවාහය මගේ කණ්ඩායමට හඳුන්වා දීමට අවශ්‍යයි, එය ඔබ වෙනුවෙන් ක්‍රියා කළේ කෙසේද? මම ඒ ගැන බ්ලොග් සටහනක් ලියා ඇති අතර, එය පර්යේෂණය කරමින් සිටියදී මෙම ප්‍රකාශය හමු විය.
ඩ්‍රෝගන්ස්

ඉතිහාසය තබා ගැනීම (කොටු කිරීමකින් තොරව) සහ අදින්න ඉල්ලීම් භාවිතා කිරීම යන අවස්ථා දෙකටම සහාය දක්වයි: විස්තර මුල් කොමිස් වලින් ලබා ගත හැකිය; ඒකාබද්ධ කිරීමේ කොමිස් පමණක් පරීක්ෂා කිරීමෙන් ඉහළ මට්ටමේ ඉතිහාසය කියවිය හැකිය, උදා git log --simplify-by-decoration.
ඇරියල්ඩෝ මාටිනි

25

මට පෙනෙන දෙයින් ප්‍රධාන හේතුව පහත පරිදි වේ:

  • අදින්න ඉල්ලීම් ඒකාබද්ධ කිරීම සඳහා වන GitHub UI (2015 ඔක්තෝබර්) බැඳීම් පණිවිඩයේ පළමු පේළිය සංස්කරණය කිරීමට ඔබට ඉඩ නොදේ. Merge pull request #123 from joebloggs/fix-snafoo
  • මෙම සිදු ඉතිහාසය පිරික්සීමේදී සඳහා GitHub UI දැනට ඔබ ශාඛාව ඉතිහාසය බැලීමට ඉඩ දෙන්නේ නැහැ --first-parentසහජීවන
  • ගොනුවක ඇති දෝෂය දෙස බැලීමේ GitHub UI මඟින් ඔබට ගොනුවේ දොස් පැවරීම දෘෂ්ටි කෝණයෙන් බැලීමට ඉඩ නොදේ --first-parent(මෙය ස්ථාවර කර ඇත්තේ Git 2.6.2 හි පමණක් බව සලකන්න, එබැවින් අපට එය නොතිබීම ගැන GitHub ට සමාව දිය හැකිය. පවතින)

එබැවින් ඔබ ඉහත අවස්ථා තුනම ඒකාබද්ධ කළ විට, නොකැඩූ බැඳීම් ඒකාබද්ධ කරන ලද තත්වයක් ඔබට ලැබෙනුයේ GitHub UI වෙතින් අවලස්සන ලෙසය.

චතුරස්රාකාර කොමිස් සමඟ ඔබගේ ඉතිහාසය සමාන වනු ඇත

1256556316... Merge pull request #423 from jrandom/add-slideshows
7hgf8978g9... Added new slideshow feature
56556316ad... Merge pull request #324 from ahacker/fix-android-display
787g8fgf78... Hotfix for android display issue
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
9080gf6567... Implemented pop-up to select language

කොටු නොවී ඉතිහාසය කෙසේ වෙතත් පෙනෙනු ඇත

1256556316... Merge pull request #423 from jrandom/add-slideshows
7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
56556316ad... Merge pull request #324 from ahacker/fix-android-display
787g8fgf78... hotfix for #5849564648
f56556316e... Merge pull request #28 from somwhere/select-lang-popup
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test

ඔබ PR හඹා යාමේ බොහෝ කැපවීම් ඇති විට, වෙනසක් සිදු වූ තැන ඔබ GitHub UI භාවිතා කිරීම සීමා කළහොත් එය බියකරු සිහිනයක් විය හැකිය .

නිදසුනක් ලෙස, ගොනුවක කොතැනක හෝ ශුන්‍ය දර්ශකයක් යොමු කර ඇති බව ඔබට පෙනේ ... එබැවින් ඔබ පවසන්නේ "කවුද මෙය කළේ, කවදාද? කුමන නිකුතු අනුවාද වලට බලපාන්නේ?". එවිට ඔබ GitHub UI හි දෝෂාරෝපණය වෙත ඇවිද යන අතර පේළිය වෙනස් කර ඇති බව ඔබට පෙනේ789fdfffdf... "ඔහ්, නමුත් තත්පරයක් රැඳී සිටින්න, එම රේඛාව එහි කේතයේ ඉතිරි කේතයට ගැලපෙන පරිදි වෙනස් කර ඇත", එබැවින් දැන් ඔබ එම ගොනුව සඳහා ගස් තත්වයට යා යුතු අතර මවුපියන්ගේ කැපවීම සහ නැවත බැලීම දොස් පැවරීමේ පිටුව ... අවසානයේදී ඔබ බැඳීම සොයා ගනී ... එය මාස 6 කට පෙර සිදු වූ කැපවීමකි ... "ඔහ් **** මෙය මාස 6 ක් තිස්සේ පරිශීලකයින්ට බලපානු ඇත" ඔබ කියනවා ... ආ, නමුත් රැඳී සිටින්න, එම කැපවීම ඇත්ත වශයෙන්ම පුල් ඉල්ලීමක වූ අතර එය ඊයේ පමණක් ඒකාබද්ධ කරන ලද අතර කිසිවෙකු තවමත් නිකුතුවක් කපා නැත ... "ඉතිහාසය නාස්ති නොකර කොමිස් ඒකාබද්ධ කිරීම ගැන ඔබට කණගාටුයි" යනු සාමාන්‍යයෙන් කේත පුරාවිද්‍යා ගවේෂණ 2 ක් හෝ 3 ක් පමණ ඇසීමෙන් පසුව ඇසෙන හ cry යි. GitHub UI

දැන් අපි Git විධාන රේඛාව භාවිතා කරන්නේ නම් මෙය ක්‍රියාත්මක වන්නේ කෙසේදැයි සලකා බලමු (සහ නිවැරදි කිරීම සඳහා අතිවිශිෂ්ට 2.6.2 git blame --first-parent)

  • ඔබ Git විධාන රේඛාව භාවිතා කරන්නේ නම්, ඔබට ඒකාබද්ධ කිරීමේ පණිවිඩය මුළුමනින්ම පාලනය කිරීමට හැකි වන අතර එමඟින් ඒකාබද්ධ කිරීමේ බැඳීමට හොඳ සාරාංශ රේඛාවක් තිබිය හැකිය.

ඉතින් අපේ කැපවීමේ ඉතිහාසය වගේ

$ git log
1256556316... #423 Added new slideshow feature
7hgf8978g9... Added new slideshow feature, JIRA # 848394839
85493g2458... Fixed slideshow display issue in ie
gh354354gh... wip, done for the week
789fdfffdf... minor alignment issue
56556316ad... #324 Hotfix for android display issue
787g8fgf78... hotfix for #5849564648
f56556316e... #28 Implemented pop-up to select language
9080gf6567... implemented feature # 65896859
gh34839843... minor fix (typo) for 3rd test

නමුත් අපටද එය කළ හැකිය

$ git log --first-parent
1256556316... #423 Added new slideshow feature
56556316ad... #324 Hotfix for android display issue
f56556316e... #28 Implemented pop-up to select language

(වෙනත් වචන වලින් කිවහොත්: Git CLI ඔබට ඔබේ කේක් තබා එය අනුභව කිරීමට ඉඩ දෙයි)

දැන් අපි ශුන්‍ය දර්ශක ගැටලුවට පහර දුන් විට ... හොඳයි, අපි දැන් භාවිතා කරන git blame --first-parent -w dodgy-file.cඅතර සරල හිස් අවකාශයේ වෙනස්කම් නොසලකා ප්‍රධාන ශාඛාවට ශුන්‍ය දර්ශක යොමු කිරීම හඳුන්වා දුන් ස්ථානය අපට වහාම ලබා දේ.

ඇත්ත වශයෙන්ම ඔබ GitHub UI භාවිතා කරමින් ඒකාබද්ධ කිරීම් කරන්නේ නම් git log --first-parent, ඒකාබද්ධ කිරීමේ පණිවිඩයේ පළමු පේළියට බල කිරීම සඳහා GitHub ට ස්තූතියි.

1256556316... Merge pull request #423 from jrandom/add-slideshows
56556316ad... Merge pull request #324 from ahacker/fix-android-display
f56556316e... Merge pull request #28 from somwhere/select-lang-popup

එබැවින් දිගු කතාවක් කෙටි කිරීමට:

GitHub UI (2015 ඔක්තෝබර්) හි ඉල්ලීම් ඒකාබද්ධ කරන ආකාරය, එය බැඳීම් ඉතිහාසය ඉදිරිපත් කරන්නේ කෙසේද සහ එය දොස් පවරන තොරතුරු ආරෝපණය කරන්නේ කෙසේද යන්න සමඟ අඩුපාඩු ගණනාවක් තිබේ. GitHub UI හි ඇති මෙම අඩුපාඩු මඟහරවා ගත හැකි හොඳම ක්‍රමය නම්, ඒකාබද්ධ වීමට පෙර ඔවුන්ගේ කැපවීම් ඉවත් කරන ලෙස ජනතාවගෙන් ඉල්ලා සිටීමයි.

Git CLI සතුව මෙම ගැටළු නොමැති අතර ඔබට දැකීමට අවශ්‍ය දෘෂ්ටිය ඔබට පහසුවෙන් තෝරා ගත හැකි වන අතර එමඟින් යම් වෙනසක් සිදු කිරීමට හේතුව (සොයා නොගත් කොමිස් වල ඉතිහාසය දෙස බැලීමෙන්) මෙන්ම දෙදෙනාම සොයා ගත හැකිය. squ ලදායී ලෙස කොටු කළ කොමිස් බලන්න.

පිටපත

ස්කොෂ් කිරීම සඳහා බොහෝ විට සඳහන් කර ඇති අවසාන හේතුව වන්නේ පසුපෙළ ප්‍රවාහනය පහසු කිරීමයි ... ඔබට පිටුපස වරාය සඳහා එක් කැපවීමක් පමණක් තිබේ නම් (එනම් ස්කොෂ් කළ කැපවීම) එවිට චෙරි තෝරා ගැනීම පහසුය ...

හොඳයි, ඔබ git ඉතිහාසය දෙස බලන්නේ git log --first-parentනම්, එවිට ඔබට චෙරි ඒකාබද්ධ කිරීමේ කොමිස් තෝරා ගත හැකිය. බොහෝ අය ව්‍යාකූලත්වයට පත්වන්නේ චෙරි අච්චාරු ඒකාබද්ධ කිරීමේ කොමිසම නිසා ඔබට -m Nවිකල්පය නියම කළ යුතු නමුත් ඔබට ඒ සඳහා කැපවීමක් ලැබුනේ git log --first-parentනම් ඔබ අනුගමනය කළ යුතු පළමු මාපිය එය බව ඔබ දන්නවා.git cherry-pick -m 1 ...


1
හොඳ පිළිතුරක්! නමුත් චෙරි තෝරා ගැනීම ප්‍රමාණවත් තරම් පහසුය, එය හේතුවක් ලෙස මා මිලදී ගන්නා බවට විශ්වාස නැත.
ස්ටිග්ලර්

1
ig ස්ටිග්ලර් මම පෞද්ගලිකව එය හේතුවක් ලෙස මිලට නොගත්තද , අනෙක් අය එය හේතුවක් ලෙස සඳහන් කර ඇති බව මම දැක ඇත්තෙමි. IMHO git tooling යනු ඔබට අවශ්‍ය දේ වන අතර එය කොල්ලකෑම නපුරු ය ... නමුත් මම කියනුයේ --first-parentස්කොෂ් කිරීම සඳහා වන තර්කයක් ජය ගැනීම සඳහා මා විසින්ම සවි කිරීම මෙහෙයවා ඇති බවය ;-)
ස්ටීවන් කොනොලි

1
මෙය පිළිගත් පිළිතුර විය යුතුය. ඉතිහාසය පෙරීම "ඔබේ කේක් තබා එය අනුභව කිරීමට" භාවිතා කළ හැකි බව පෙන්නුම් කරයි. ඉතිහාසය ගවේෂණ සඳහා පැහැදිලි බවක් ගෙන ඒම සඳහා ඔබ ඉතිහාසය සමූල to ාතනය කළ යුතු නැත.
ctpenrose

ඔබේ කැපවීම් ඉවත දැමීමෙන් ඔබ විවිධ ලිපිගොනු වල බොහෝ වෙනස්කම් තනි කැපවීමකට බෙදුවහොත් චෙරි තෝරා ගැනීම එතරම් පහසු නොවනු ඇත. කේත පදනම, මෙය සිදු කරන ලද වෙනස්කම්, කොපමණ පිරිසක් සහයෝගයෙන් කටයුතු කරනවාද සහ යනාදිය අනුව මෙය බොහෝ වෙනස් වන බව මම අනුමාන කරමි. සෑම අවස්ථාවකම වලංගු වීමට අපට එක සාමාන්‍ය රීතියක් ඉදිරිපත් කළ හැකි යැයි මම නොසිතමි.
ඇමී පෙලෙග්‍රිනි

2

එකතු කරන ලද විශේෂාංග සහ දෝෂ නිවැරදි කර ඇති ආකාරය පිළිබඳ පැහැදිලි හා සංක්ෂිප්ත ඉතිහාසයක් පෙන්වීම පිළිබඳව මෙම ත්‍රෙඩ් එකේ වෙනත් පිළිතුරු වල දක්වා ඇති හැඟීම් සමඟ මම එකඟ වෙමි. කෙසේ වෙතත්, ඔබේ ප්‍රශ්නය මග හැරුණු නමුත් පැහැදිලිව සඳහන් නොකළ තවත් අංශයක් ඇමතීමට මට අවශ්‍ය විය. Git හි සමහර වැඩ කිරීමේ ක්‍රම පිළිබඳව ඔබට තිබිය හැකි Hangup හි කොටසක් නම්, එවැනි ක්‍රියාවන් කළ නොහැකි වෙනත් ප්‍රභව පාලන ක්‍රම භාවිතා කිරීමෙන් පසු git වෙත හඳුන්වා දීමේදී අමුතු යැයි පෙනෙන ඉතිහාසය නැවත ලිවීමට git ඔබට ඉඩ සලසයි. තවද, මෙය සාමාන්‍යයෙන් පිළිගත් ප්‍රභව පාලක මූලධර්මයට පටහැනි වන අතර, යම් දෙයක් ප්‍රභව පාලනයට බැඳී ඇති විට / පරීක්ෂා කළ විට, එම කැපවීම අනුගමනය කිරීමෙන් ඔබ කුමන වෙනස්කම් කළත් එම තත්වයට ආපසු යාමට ඔබට හැකි විය යුතුය. ඔබේ ප්‍රශ්නයට අනුව, මෙය එවැනි තත්වයන්ගෙන් එකකි. මම හිතන්නේ git යනු විශිෂ්ට අනුවාද පාලන පද්ධතියක්; කෙසේ වෙතත්, එය අවබෝධ කර ගැනීම සඳහා ඔබ එහි පිටුපස ක්‍රියාත්මක කිරීමේ විස්තර සහ සැලසුම් තීරණ කිහිපයක් තේරුම් ගත යුතු අතර, එහි ප්‍රති it ලයක් ලෙස එයට දැඩි ඉගෙනුම් වක්‍රයක් ඇත. මතක තබා ගන්න git යනු බෙදා හරින ලද අනුවාද පාලන පද්ධතියක් වන අතර එය නිර්මාණකරුවන් විසින් git ඉතිහාසය නැවත ලිවීමට ඉඩ දෙන්නේ ඇයිද යන්න පැහැදිලි කිරීමට උපකාරී වනු ඇත.


නිශ්චිතවම කිවහොත්, ඉතිහාසය වෙනස් කිරීමට Git ඔබට ඉඩ නොදේ. බැඳීම් වස්තු වෙනස් නොවේ. එය විකෘති කළ හැකි ශාඛා දර්ශකයන් පමණක් වන අතර පසුව “බලහත්කාරයෙන් යාවත්කාලීන කිරීම” සමඟ පමණක් වන අතර එය සාමාන්‍යයෙන් ඔබ සලකන්නේ සංවර්ධන කටයුතු සඳහා මිස ප්‍රධාන ශාඛාව මත නොවේ. git gcයොමු නොකළ වස්තූන් ඉවතලීම සඳහා ධාවනය කර නොමැති නම්, ඔබට සෑම විටම reflog භාවිතා කර පෙර තත්වයට යා හැකිය.
ජෝන් පර්ඩි

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

දී ඇති කැපවීමකට එය සත්‍යයකි. විශාල පින්තූරයේ මම සිතන්නේ අන්තර්ක්‍රියාකාරී ප්‍රතිනිර්මාණය සහ පෙරහන් ශාඛාව එහි සංයුතිය වෙනස් කිරීමෙන් ඉතිහාසය effectively ලදායී ලෙස නැවත ලිවීමයි.
මයිකල් ඩුරන්ට්

1
සාධාරණ ලෙස කිවහොත්, SVN “සෑම කැපවීමක්ම පරිශුද්ධ” ප්‍රවේශයක් ලෙස තබා ගනී, නමුත් ඒකාබද්ධ කිරීම එම ඒකාබද්ධය සමඟ තනි බැඳීමක් ඇති කර ඒ සඳහා දායක වූ සංශෝධන සඟවයි, එබැවින් සියලු SVN ඒකාබද්ධ කිරීම් “නැවත ප්‍රතිස්ථාපනය” වී ඇති බව පෙනේ. ඒවා එසේ නොවේ, ඔබට ඒකාබද්ධ කළ සංරචක පෙන්වීමට ඉතිහාස විධානයට පැවසිය යුතුය. මම මේ ප්‍රවේශයට වඩාත්ම කැමතියි.
gbjbaanb

1

ඉදිරිදර්ශනය නිසා ... හොඳම පුරුද්ද වන්නේ <<issue-management-system>>හැකි නම් එක් නිකුතුවකට තනි කැපවීමක් කිරීමයි.

ඔබේම විශේෂාංග ශාඛාව / ගබඩාව තුළ ඔබට අවශ්‍ය තරම් කොමිස් ප්‍රමාණයක් තිබිය හැකිය, නමුත් එය ඔබගේ ඉදිරිදර්ශනය සඳහා ඔබ දැන් කරමින් සිටින දෙයට අදාළ වේ ... එය සමස්ත කණ්ඩායම / ව්‍යාපෘතිය හෝ ඔවුන්ගේ යෙදුම සඳහා ඉතිහාසය නොවේ. ඉදිරිදර්ශනය දැන් සිට මාස කිහිපයක් තබා ගත යුතුය ...

එබැවින් ඔබ පොදු විසඳුමකට දෝෂ නිරාකරණය හෝ අංගයක් කිරීමට කැමති විට (මෙම උදාහරණය සංවර්ධන ශාඛාව සමඟ ඇත) ඔබට එය කළ හැකි දේ පහත පරිදි වේ:

ඔබේ විශේෂාංග ශාඛාව ඉක්මනින් සංවර්ධනය කරන්නේ කෙසේද?

    # set your current branch , make a backup of it , caveat minute precision
    curr_branch=$(git rev-parse --abbrev-ref HEAD); git branch "$curr_branch"--$(date "+%Y%m%d_%H%M"); git branch -a | grep $curr_branch | sort -nr

    # squash all your changes at once 
    git reset $(git merge-base develop $curr_branch)

    # check the modified files to add 
    git status

    # add the modified files dir by dir, or file by file or all as shown
    git add --all 

    # check once again 
    git log --format='%h %ai %an %m%m %s'  | less

    # add the single message of your commit for the stuff you did 
    git commit -m "<<MY-ISSUE-ID>>: add my very important feature"

    # check once again 
    git log --format='%h %ai %an %m%m %s'  | less

    # make a backup once again , use seconds precision if you were too fast ... 
    curr_branch=$(git rev-parse --abbrev-ref HEAD); git branch "$curr_branch"--$(date "+%Y%m%d_%H%M"); git branch -a | grep $curr_branch | sort -nr

    # compare the old backup with the new backup , should not have any differences 
    git diff <<old-backup>>..<<new-backup-branch>>


    # you would have to git push force to your feature branch 
    git push --force 

මෙය ඇසූ ප්‍රශ්නය ආමන්ත්‍රණය කිරීමට පවා උත්සාහ නොකරයි, ස්කොෂ් ගිට් අදින්න ඉල්ලීම් සඳහා යොමු වන්නේ ඇයි? පිළිතුරු දෙන්නේ කෙසේදැයි
gnat

පැහැදිලි කිරීමේ උත්සාහයෙන් පසුව එය කළ යුතුය ...
යොර්ඩන් ජෝර්ජිව්

මීට වසර කිහිපයකට පෙර පළ කරන ලද ඉහළම ඡන්දය දුන් පිළිතුරු වලින් එකතු කරන ලද පැහැදිලි කිරීම් මගින් සැලකිය යුතු යමක් ලබා දෙන්නේ කෙසේදැයි බැලීමට මම කෙසේ හෝ අසමත් වෙමි (පළමු සංශෝධනය වැඩිදියුණු කිරීමට ගත් උත්සාහය අගය කරනු ලැබේ)
gnat

මූල පදය "ඉදිරිදර්ශනය" වේ, ඉදිරිදර්ශන සංකල්පය තොරතුරු තාක්ෂණයේ මෙම ආකාරයේ ගැටළු පැහැදිලි කිරීම වඩාත් පහසු කරයි, උදාහරණයක් ලෙස - මෙම ප්‍රශ්නයට පිළිතුරු සැපයීම සඳහා ඔබේ ඉදිරිදර්ශනය දැනටමත් ලබා දී ඇති එකකි, මගේ ඉදිරිදර්ශනය "ඉදිරිදර්ශනය" යතුර භාවිතා කරයි විවිධ දෘෂ්ටිකෝණයන් මගින් පැහැදිලි කරන ලද එකම හොඳම ක්‍රියාව ක්‍රියාත්මක කරන්නේ කෙසේද යන්න පිළිබඳ ප්‍රායෝගික උදාහරණයක් සපයයි ...
යොර්ඩන් ජෝර්ජිව්

1

කේතය පොදුද නැද්ද යන්න මම දකිමි.

ව්‍යාපෘති පුද්ගලිකව පවතින විට:

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

ව්‍යාපෘති පොදු වූ විට:

සමහර කොමිස් වල ආරක්ෂක කාන්දුවීම් අඩංගු විය හැකි නිසා සියල්ල ස්කොෂ් කරන්න. උදාහරණයක් ලෙස මුරපදයක් කැප කර නැවත ඉවත් කර ඇත.

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.