දැනටමත් පිළිතුරු 16 ක් ඇති ප්රශ්නයකට මම සාමාන්යයෙන් පිළිතුරු නොදෙමි, නමුත් අනෙක් සියලුම පිළිතුරු වැරදියි, නිවැරදි පිළිතුර ඉතා සරල ය. ප්රශ්නය පවසන්නේ, "දුරස්ථ සමානතාවයක් නොපවතින සියලුම ලුහුබැඳීම් ශාඛා මකා දැමීමට සරල ක්රමයක් තිබේද?"
“සරල” යන්නෙන් අදහස් කරන්නේ ඒවා සියල්ලම එකවර මකා දැමීම, බිඳෙන සුළු වීම, භයානක නොවීම සහ සියලු පා readers කයන්ට නොලැබෙන මෙවලම් මත රඳා නොසිටීම නම්, නිවැරදි පිළිතුර: නැත.
සමහර පිළිතුරු සරල ය, නමුත් ඔවුන් ඉල්ලූ දේ නොකරයි. තවත් සමහරු ඉල්ලූ දේ කරති, නමුත් සරල නැත: සියල්ල රඳා පවතින්නේ පෙළ හැසිරවීමේ විධානයන් හෝ ස්ක්රිප්ටින් භාෂාවන් හරහා Git ප්රතිදානය විග්රහ කිරීම මත වන අතර ඒවා සෑම පද්ධතියකම නොතිබිය හැකිය. ඊට ඉහළින්, බොහෝ යෝජනා පෝසිලේන් විධාන භාවිතා කරයි, ඒවායේ ප්රතිදානය ස්ක්රිප්ට් මඟින් විග්රහ කිරීමට සැලසුම් කර නොමැත (“පෝසිලේන්” යනු මිනිස් ක්රියාකාරිත්වය සඳහා අදහස් කරන විධානයන් ය; ස්ක්රිප්ට් පහළ මට්ටමේ “ජලනල” විධානයන් භාවිතා කළ යුතුය).
තවදුරටත් කියවීම:
ඔබට මෙය ආරක්ෂිතව කිරීමට අවශ්ය නම්, ප්රශ්නයේ භාවිතා වන අවස්ථාව සඳහා (සේවාදායකයේ මකාදමා ඇති නමුත් තවමත් දේශීය ශාඛා ලෙස පවතින කසළ එකතු කිරීමේ ෙසොයා ගැනීෙම් ශාඛා) සහ ඉහළ මට්ටමේ Git විධාන සහිතව, ඔබට කළ යුතුව ඇත
git fetch --prune
(හෝ git fetch -p
, එය අන්වර්ථයකි, හෝ git prune remote origin
ලබා නොගෙන එකම දේ කරයි, බොහෝ විට ඔබට අවශ්ය දේ එය නොවේ).
- මකාදැමූ බවට වාර්තා වී ඇති දුරස්ථ ශාඛා සටහන් කරන්න. නැතහොත්, පසුව ඒවා සොයා ගැනීමට,
git branch -v
(ඕනෑම අනාථ ලුහුබැඳීමේ ශාඛාවක් "[ගොස්]" ලෙස සලකුණු කරනු ලැබේ).
git branch -d [branch_name]
එක් එක් අනාථ ලුහුබැඳීමේ ශාඛාව මත
(වෙනත් පිළිතුරු වලින් යෝජනා කරන්නේ එයයි).
ඔබට විසඳුමක් ස්ක්රිප්ට් කිරීමට අවශ්ය නම්, for-each-ref
ඔබේ ආරම්භක ස්ථානය මෙයයි, මෙහි මාර්ක් ලෝන්ගෙයාර්ගේ පිළිතුර සහ තවත් ප්රශ්නයකට මෙම පිළිතුර , නමුත් ෂෙල් ස්ක්රිප්ට් ලූපයක් ලිවීමෙන් තොරව හෝ xargs හෝ වෙනත් දෙයක් භාවිතා නොකර එය සූරාකෑමට ක්රමයක් මට නොපෙනේ. .
පසුබිම් පැහැදිලි කිරීම
සිදුවන්නේ කුමක්ද යන්න වටහා ගැනීම සඳහා, ශාඛා ලුහුබැඳීමේ තත්වය තුළ ඔබට එක් ශාඛාවක් නොව තුනක් ඇති බව ඔබ අගය කළ යුතුය. (“ශාඛාව” යන්නෙන් අදහස් කරන්නේ හුදෙක් කැපවීමකට යොමු වන බවයි.)
ෙසොයා ගැනීෙම් ශාඛාවක් ලබා feature/X
දී ඇති විට, දුරස්ථ නිධිය (සේවාදායකය) ෙමම ශාඛාව ඇති අතර එය අමතනු ඇත feature/X
. ඔබේ දේශීය ගබඩාවට ශාඛාවක් ඇත, remotes/origin/feature/X
එහි තේරුම, “දුරස්ථය එහි විශේෂාංගය / එක්ස් ශාඛාව, අප අවසන් වරට කතා කළ අවස්ථාව මෙයයි” සහ අවසාන වශයෙන්, දේශීය ගබඩාවට feature/X
ඔබේ නවතම බැඳීම පෙන්වා දෙන ශාඛාවක් ඇති අතර එය වින්යාස කර ඇත. "ධාවන පථය" remotes/origin/feature/X
, එයින් අදහස් කරන්නේ ඒවා පෙළගස්වා තබා ගැනීමට ඔබට අදින්න සහ තල්ලු කළ හැකි බවයි.
යම් අවස්ථාවක දී, යමෙකු දුරස්ථයේ ඇති මකාදමා ඇත feature/X
. ඒ මොහොතේ සිට, ඔබට ඉතිරිව ඇත්තේ ඔබේ දේශීය feature/X
(ඔබට තවත් අවශ්ය නොවනු ඇත, X විශේෂාංගයේ වැඩ කටයුතු අනුමාන වශයෙන් අවසන් remotes/origin/feature/X
වී ඇති හෙයින් ), සහ ඔබේ එකම අරමුණ වූයේ සේවාදායක ශාඛාවේ තත්වය මතක තබා ගැනීමයි. .
හා Git ඔබ ස්වයංක්රීයව අතිරික්ත පිරිසිදු ඉඩ ඇත remotes/origin/feature/X
මොකක්ද බව - git fetch --prune
කරන්නේ - නමුත් යම් හේතුවක් නිසා, එය ඔබ ස්වයංක්රීයව ඔබගේ මකා ඉඩ දෙන්නේ නැහැ feature/X
ඔබගේ වුවත් ... feature/X
තවමත් අනාථ හඹායෑම් තොරතුරු අඩංගු වේ, එය ද තොරතුරු ලැබී ඇතැයි ඒ නිසා සම්පුර්ණයෙන්ම ඒකාබද්ධ කර ඇති කලින් ලුහුබැඳීමේ ශාඛා හඳුනා ගැනීමට. (සියල්ලට පසු, එය ඔබට අතින්ම මෙහෙයුම කිරීමට ඉඩ සලසන තොරතුරු ලබා දිය හැකිය .)
* master
මගේ පද්ධතියේ ඇත. පහත දැක්වෙන විධානය මා වෙනුවෙන් ක්රියාත්මක විය:git branch -d $(git branch --merged |tail -n +2)