මගේ GitHub ගබඩාවේ නාමාවලි 2 ක් ඇත. මම ඒවායින් එකක් මකා දැමීමට කැමතියි. සම්පූර්ණ ගබඩාව මකා දමා නැවත නිර්මාණය නොකර මා එය කරන්නේ කෙසේද?
මගේ GitHub ගබඩාවේ නාමාවලි 2 ක් ඇත. මම ඒවායින් එකක් මකා දැමීමට කැමතියි. සම්පූර්ණ ගබඩාව මකා දමා නැවත නිර්මාණය නොකර මා එය කරන්නේ කෙසේද?
Answers:
ඔබට නාමාවලි දෙකම සමඟ 'මාස්ටර්' පරීක්ෂා කළ හැකිය;
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
අදහස් දැක්වීම්වල සඳහන් කර ඇති පරිදි, ඔබට සාමාන්යයෙන් කිරීමට අවශ්ය වන්නේ මෙම නාමාවලිය git වෙතින් ඉවත් කිරීම මිස එය සම්පූර්ණයෙන්ම ගොනු පද්ධතියෙන් (දේශීය) මකා නොදැමීමයි.
එවැනි අවස්ථාවක භාවිතා කරන්න:
git rm -r --cached myFolder
git rm -r myFolder
එය ක්රියාත්මක වූවා පමණක් නොව “MyFolder” නාමාවලියෙන් සියල්ල මකා දැමීය. "MyFolder" නාමාවලියෙහි ඇති සියල්ල ආපසු හරවා පසුව කැපවීමට සිදු විය.
git rm -r --cached myFolder
git rm -r --cached directory/
ඉවත් කරන ලද git වලින් පමණක් ඉවත් කරයි, නමුත් නිධිය ව්යුහය ඉතිරිව පවතී.
නාමාවලිය ඉවත් කිරීමට පියවර
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
ඊළඟ කොමිස් වලදී එම ෆෝල්ඩරය නොසලකා හැරීමට පියවර
ඊළඟ කොමිස් වලින් එම ෆෝල්ඩරය නොසලකා හැරීම සඳහා එක් ගොනුවක් මූල ෆෝල්ඩරයේ (git ආරම්භ කරන ප්රධාන ව්යාපෘති නාමාවලිය) .gitignore ලෙස නම් කර එම ෆෝල්ඩරයේ නම එයට දමන්න. ඔබට අවශ්ය තරම් ගොනු / ෆෝල්ඩර නොසලකා හැරිය හැක
.gitignore ගොනුව මේ වගේ වනු ඇත
/FolderName
කිසියම් හේතුවක් නිසා, කර්මකේස් පැවසූ දේ ක්රියාත්මක නොවන්නේ නම්, ඔබට භාවිතා කිරීමට අවශ්ය නාමාවලිය හෝ ඔබේ ගොනු පද්ධති බ්රව්සරය සමඟ මකා දැමීමට උත්සාහ කළ හැකිය (උදා: වින්ඩෝස් ගොනු එක්ස්ප්ලෝරර් හි). බහලුම මකා දැමීම පසු, මෙම විධානය නිකුත්:
git add -A
පසුව
git commit -m 'deleting directory'
පසුව
git push origin master
.
ඔබට මෙය උත්සාහ කළ හැකිය:
git rm -rf <directory_name>
එය නාමාවලිය මකා දැමීමට බල කරයි.
ඔබ නාමාවලියෙහි ඇති ගොනු ඉවත් කරන්නේ නම් ( git rm
අනෙක් පිළිතුරු පැහැදිලි කරන පරිදි), එවිට නාමාවලිය තවදුරටත් git සම්බන්ධව නොපවතී. ඔබට හිස් නාමාවලියක් කළ නොහැක, ඔබට එකක් ඉවත් කළ නොහැක.
මෙය ඔබට පැහැදිලිවම කළ යුතු උපක්රමයට වඩා වෙනස් වන අතර svn rm emptyfolder/
අහම්බෙන් man
git සඳහා වන පිටුව “මෝඩ අන්තර්ගත ලුහුබැඳීම” ලෙස විස්තර කරයි.
මෙම විෂය පිළිබඳ නිති අසන ප්රශ්න සඳහා "හිස් ගබඩාවක් git ගබඩාවකට එකතු කරන්නේ කෙසේද" යන පිළිතුර :
වර්තමානයේදී git දර්ශකයේ (වේදිකා ප්රදේශය) සැලසුම් කිරීම මඟින් ලිපිගොනු ලැයිස්තුගත කිරීමට පමණක් අවසර දී ඇති අතර හිස් නාමාවලි වලට ඉඩ දීම සඳහා වෙනසක් කිරීමට තරම් දක්ෂ කිසිවෙකු මෙම තත්වයට පිළියම් යෙදීමට ප්රමාණවත් සැලකිල්ලක් නොදක්වා ඇත.
නාමාවලි තුළ ගොනු එකතු කිරීමේදී ස්වයංක්රීයව එකතු වේ. එනම්, නාමාවලි කිසි විටෙකත් ගබඩාවට එක් කළ යුතු නැති අතර ඒවා තනිවම නිරීක්ෂණය නොකෙරේ.
ඔබට "
git add <dir>
" යැයි පැවසිය හැකි අතර එය එහි ගොනු එකතු කරනු ඇත.පිටවීමේදී ඔබට සැබවින්ම නාමාවලියක් අවශ්ය නම් ඔබ එහි ගොනුවක් සෑදිය යුතුය. .ගිටිගෝර් මෙම කාර්යය සඳහා හොඳින් ක්රියා කරයි; ඔබට එය හිස්ව තැබිය හැකිය, නැතහොත් නාමාවලියෙහි පෙන්වීමට බලාපොරොත්තු වන ලිපිගොනු පුරවන්න.
මම මීට පෙර ෆෝල්ඩරය සිදු කර ඇති අතර ඉතිහාසයේ නාමාවලියද ඉවත් කිරීමට අවශ්යය.
මම පහත සඳහන් දේ කළා:
ෆෝල්ඩරය මෙයට එක් කරන්න .gitignore
:
echo Folder_Name/ >> .gitignore
සියලු කොමිස් වලින් ඉවත් කරන්න:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
පැරණි කොමිස් වලින් ref ඉවත් කරන්න:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
සියලුම පැරණි යොමු කිරීම් සම්පූර්ණයෙන්ම ඉවත් කර ඇති බවට සහතික වන්න
rm -Rf .git/logs .git/refs/original
කසළ එකතු කිරීමක් සිදු කරන්න
git gc --prune=all --aggressive
ඔබ සබැඳි ගබඩාවට වෙනස්කම් තල්ලු කරයි:
git push
ඔබ මෙහි සිදු කර ඇත.
නමුත් සියලු වෙනස්කම් සියළුම ශාඛා වෙත තල්ලු කිරීමට ඔබට පහත සඳහන් දෑ කළ හැකිය: නමුත් මෙම විධානය සමඟ ප්රවේශම් වන්න!
git push origin --all --force
git push origin --tags --force
ඊට පසු ෆෝල්ඩරය git වෙතින් ඉවත් කරන ලද නමුත් දේශීය තැටියෙන් මකා නොදමන ලදි.
හිස් ෆෝල්ඩර මකා දැමීම සඳහා
මා විසින් නිර්මාණය කරන ලද හිස් ඩිරෙක්ටරියක් (ෆෝල්ඩරයක්) මකා දැමීමට මට අවශ්ය විය, git හට එය මකා දැමිය නොහැක, සමහර පර්යේෂණ වලින් පසුව Git හිස් නාමාවලි සොයා නොගනී. ඔබේ වැඩ කරන ගසෙහි හිස් නාමාවලියක් තිබේ නම් ඔබ එය ඉවත් කළ යුතුය
rm -r folderName
Git සම්බන්ධ කර ගැනීමේ අවශ්යතාවයක් නොමැත.
ඔබට ෆෝල්ඩරය දේශීයව මකා දමා පහත පරිදි තල්ලු කළ හැකිය:
git rm -r folder_name
git commit -m "your commit"
git push origin master
ඔබට ඇට්ලේෂියන් ප්රභව ගස (වින්ඩෝස්) භාවිතා කළ හැකිය ( https://www.atlassian.com/software/sourcetree/overview ). ගසෙන් ගොනු තෝරන්න සහ ඉහළින් ඇති බොත්තම "ඉවත් කරන්න" බොත්තම ඔබන්න. දේශීය ගබඩාවෙන් සහ දේශීය git දත්ත ගබඩාවෙන් ගොනු මකා දැමෙනු ඇත. ඉන්පසු බැඳ, පසුව තල්ලු කරන්න.
මගේ සගයකු යෝජනා කළේ බලවත් යැයි මා සිතන BFG Repo-Cleaner ය. එය අනවශ්ය දත්ත මකා දැමීම පමණක් නොව, ඒ හා සම්බන්ධ ඕනෑම තොරතුරු වලින් ඔබේ ගබඩාව පිරිසිදු කිරීම ද වේ.
නව නාමාවලිය එක් කිරීමට:
mkdir <YOUR-DIRECTORY>
නමුත් දැන් මෙම නව නාමාවලියෙන් Git නොදැන සිටියි, මන්ද Git ඩිරෙක්ටරි නොවන ගොනු ගොනුවල සටහන් තබා ගනී
git status
අප විසින් සිදු කරන ලද වෙනස පිළිබඳව Git දැන නොසිටිනු ඇත, එබැවින් .keep
මෙම නව වෙනස මගින් Git දැනුවත් කිරීම සඳහා අපි සැඟවුණු ගොනුවක් එක් කරන්නෙමු .
touch /YOUR-directory/.keep
දැන්, ඔබ git status
Git ට පහර දුන්නොත් වෙනස්කම් පිළිබඳව දැනුවත් වනු ඇත.
ඔබට නාමාවලිය මකා දැමීමට අවශ්ය නම්, ඔබ මෙම විධානය භාවිතා කළ යුතුය.
rm -r <YOUR-DIRECTORY>
ඔබ භාවිතයෙන් පරීක්ෂා කර බැලුවහොත් git status
, නාමාවලිය ඉවත් කර ඇති බව ඔබට පෙනෙනු ඇත.
පිළිතුරු 2 හි එකතුවක් මට වැඩ කළේය
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
එය තවමත් යම් අනතුරු ඇඟවීමක් පෙන්වන්නේ නම්, ගොනු අතින් ඉවත් කරන්න
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push