Git ගබඩාවෙන් නාමාවලියක් ඉවත් කරන්නේ කෙසේද?


1255

මගේ GitHub ගබඩාවේ නාමාවලි 2 ක් ඇත. මම ඒවායින් එකක් මකා දැමීමට කැමතියි. සම්පූර්ණ ගබඩාව මකා දමා නැවත නිර්මාණය නොකර මා එය කරන්නේ කෙසේද?


1
නාමාවලිවල ලිපිගොනු තිබේද?
ෆ්‍රෙඩ් ෆූ

3
ArIarsmans: ඔව් ගොනු 6 ක්. නාමාවලි දෙකම එක හා සමානයි.
සහත් යල්කබොව්

Answers:


2376

Git සහ local වෙතින් නාමාවලිය ඉවත් කරන්න

ඔබට නාමාවලි දෙකම සමඟ 'මාස්ටර්' පරීක්ෂා කළ හැකිය;

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 වෙතින් ඉවත් කිරීම මිස එය සම්පූර්ණයෙන්ම ගොනු පද්ධතියෙන් (දේශීය) මකා නොදැමීමයි.

එවැනි අවස්ථාවක භාවිතා කරන්න:

git rm -r --cached myFolder

8
මටත් ඒ හා සමාන තත්වයක් තිබුණා. මම උත්සාහ කළ විට git rm -r myFolderඑය ක්‍රියාත්මක වූවා පමණක් නොව “MyFolder” නාමාවලියෙන් සියල්ල මකා දැමීය. "MyFolder" නාමාවලියෙහි ඇති සියල්ල ආපසු හරවා පසුව කැපවීමට සිදු විය.
ජස්ටින්

242
Ust ජස්ටින් git වලින් ඉවත් කර ගොනු පද්ධතිය පවතින ආකාරයටම භාවිතා කිරීමටgit rm -r --cached myFolder
karmakaze

33
මට ලැබෙන දෝෂ පණිවිඩය නම්: මාරාන්තික: pathspec 'නාමාවලිය' කිසිදු ලිපිගොනුවකට නොගැලපේ.
පරිශීලක 2441441

3
24 user2441441 repo වෙත කිසිසේත් එකතු නොකළ ෆෝල්ඩරයක් / ගොනුවක් ඉවත් කිරීමට උත්සාහ කරන විට මට මෙම දෝෂය ඇතිවිය
lukeatdesignworks

3
git rm -r --cached directory/ඉවත් කරන ලද git වලින් පමණක් ඉවත් කරයි, නමුත් නිධිය ව්‍යුහය ඉතිරිව පවතී.
නෙස්ටර්

295

ෆෝල්ඩරය / නාමාවලිය ඉවත් කිරීමට git ගබඩාවෙන් පමණක් නොව දේශීයව නොව සරල විධාන 3 ක් උත්සාහ කරන්න.


නාමාවලිය ඉවත් කිරීමට පියවර

git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master

ඊළඟ කොමිස් වලදී එම ෆෝල්ඩරය නොසලකා හැරීමට පියවර

ඊළඟ කොමිස් වලින් එම ෆෝල්ඩරය නොසලකා හැරීම සඳහා එක් ගොනුවක් මූල ෆෝල්ඩරයේ (git ආරම්භ කරන ප්‍රධාන ව්‍යාපෘති නාමාවලිය) .gitignore ලෙස නම් කර එම ෆෝල්ඩරයේ නම එයට දමන්න. ඔබට අවශ්‍ය තරම් ගොනු / ෆෝල්ඩර නොසලකා හැරිය හැක

.gitignore ගොනුව මේ වගේ වනු ඇත

/FolderName

නාමාවලිය ඉවත් කරන්න


1
ඔබේ අනෙක් පරිගණකයේ git rm -r --cached FolderName git commit -m "ගබඩාවෙන් ඉවත් කරන ලද ෆෝල්ඩරය" කිරීමටද අවශ්‍ය වන අතර පසුව එය සමමුහුර්තව තබා ගැනීමට අදින්න.
සයිමන්

1
මෙමඟින් නාමාවලිය ගබඩාවට එකතු කළ ස්ථානයේ සිට මේ දක්වා මකා දැමිය හැකිද? නැතහොත් එය නාමාවලිය ඉවත් කර එය .git repo වෙත නැවත ඇතුළත් කිරීමද?
ඇල්ෆා_989

1
මහා! වැඩ කරනවා!
BeingCoders

2
හොඳින් පැහැදිලි කළ, හොඳ පිළිතුරක්
රකිත් ෂා

1
හොඳට කලා. මගේ යන්ත්‍රයේ, තුන්වන පියවර ක්‍රියාත්මක නොවේ. නමුත් එය $ git push ලෙස වෙනස් කළහොත් එය ක්‍රියාත්මක වේ
හොං

83

කිසියම් හේතුවක් නිසා, කර්මකේස් පැවසූ දේ ක්‍රියාත්මක නොවන්නේ නම්, ඔබට භාවිතා කිරීමට අවශ්‍ය නාමාවලිය හෝ ඔබේ ගොනු පද්ධති බ්‍රව්සරය සමඟ මකා දැමීමට උත්සාහ කළ හැකිය (උදා: වින්ඩෝස් ගොනු එක්ස්ප්ලෝරර් හි). බහලුම මකා දැමීම පසු, මෙම විධානය නිකුත්:
git add -A
පසුව
git commit -m 'deleting directory'
පසුව
git push origin master.


4
මෙය මට වැඩ කළා. -A තර්කය ඔබට පැහැදිලි කළ හැකිද?
අරුන්

2
RunArun -A --all සඳහා කෙටි වන අතර ලුහුබැඳ ඇති සහ සොයා නොගත් සියලුම ලිපිගොනු වලින් වෙනස්කම් එක් කරන්න
Joachim Rohde


18

ඔබ නාමාවලියෙහි ඇති ගොනු ඉවත් කරන්නේ නම් ( git rmඅනෙක් පිළිතුරු පැහැදිලි කරන පරිදි), එවිට නාමාවලිය තවදුරටත් git සම්බන්ධව නොපවතී. ඔබට හිස් නාමාවලියක් කළ නොහැක, ඔබට එකක් ඉවත් කළ නොහැක.

මෙය ඔබට පැහැදිලිවම කළ යුතු උපක්‍රමයට වඩා වෙනස් වන අතර svn rm emptyfolder/අහම්බෙන් mangit සඳහා වන පිටුව “මෝඩ අන්තර්ගත ලුහුබැඳීම” ලෙස විස්තර කරයි.

මෙම විෂය පිළිබඳ නිති අසන ප්‍රශ්න සඳහා "හිස් ගබඩාවක් git ගබඩාවකට එකතු කරන්නේ කෙසේද" යන පිළිතුර :

වර්තමානයේදී git දර්ශකයේ (වේදිකා ප්‍රදේශය) සැලසුම් කිරීම මඟින් ලිපිගොනු ලැයිස්තුගත කිරීමට පමණක් අවසර දී ඇති අතර හිස් නාමාවලි වලට ඉඩ දීම සඳහා වෙනසක් කිරීමට තරම් දක්ෂ කිසිවෙකු මෙම තත්වයට පිළියම් යෙදීමට ප්‍රමාණවත් සැලකිල්ලක් නොදක්වා ඇත.

නාමාවලි තුළ ගොනු එකතු කිරීමේදී ස්වයංක්‍රීයව එකතු වේ. එනම්, නාමාවලි කිසි විටෙකත් ගබඩාවට එක් කළ යුතු නැති අතර ඒවා තනිවම නිරීක්ෂණය නොකෙරේ.

ඔබට " git add <dir>" යැයි පැවසිය හැකි අතර එය එහි ගොනු එකතු කරනු ඇත.

පිටවීමේදී ඔබට සැබවින්ම නාමාවලියක් අවශ්‍ය නම් ඔබ එහි ගොනුවක් සෑදිය යුතුය. .ගිටිගෝර් මෙම කාර්යය සඳහා හොඳින් ක්‍රියා කරයි; ඔබට එය හිස්ව තැබිය හැකිය, නැතහොත් නාමාවලියෙහි පෙන්වීමට බලාපොරොත්තු වන ලිපිගොනු පුරවන්න.


9

මම මීට පෙර ෆෝල්ඩරය සිදු කර ඇති අතර ඉතිහාසයේ නාමාවලියද ඉවත් කිරීමට අවශ්‍යය.

මම පහත සඳහන් දේ කළා:

ෆෝල්ඩරය මෙයට එක් කරන්න .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 වෙතින් ඉවත් කරන ලද නමුත් දේශීය තැටියෙන් මකා නොදමන ලදි.


7

හිස් ෆෝල්ඩර මකා දැමීම සඳහා

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

rm -r folderName

Git සම්බන්ධ කර ගැනීමේ අවශ්යතාවයක් නොමැත.


1
ස්තූතියි! මට අවශ්‍ය වූයේ එයයි.
ස්පිරොස්කෝ

6

ඔබගේ git නාමාවලිය වෙත ගොස් පහත විධානය ටයිප් කරන්න: rm -rf < නාමාවලි නම >

නාමාවලිය මකා දැමීමෙන් පසු පහත සඳහන් වෙනස්කම් සිදු කරන්න: git commit -m "Your commit Message"

ඉන්පසු දුරස්ථ GIT නාමාවලියෙහි වෙනස්කම් තල්ලු කරන්න: git push origin < ශාඛාවේ නම >


4

ඔබට ෆෝල්ඩරය දේශීයව මකා දමා පහත පරිදි තල්ලු කළ හැකිය:

git rm -r folder_name
git commit -m "your commit"
git push origin master

4

මම සාමාන්‍යයෙන් git add --allදුරස්ථ ගබඩාවලින් ගොනු / ෆෝල්ඩර ඉවත් කිරීමට භාවිතා කරමි

rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master

master නිධියේ වෙනත් ඕනෑම ශාඛාවක් මගින් ප්‍රතිස්ථාපනය කළ හැකිය.


2

ඔබට ඇට්ලේෂියන් ප්‍රභව ගස (වින්ඩෝස්) භාවිතා කළ හැකිය ( https://www.atlassian.com/software/sourcetree/overview ). ගසෙන් ගොනු තෝරන්න සහ ඉහළින් ඇති බොත්තම "ඉවත් කරන්න" බොත්තම ඔබන්න. දේශීය ගබඩාවෙන් සහ දේශීය git දත්ත ගබඩාවෙන් ගොනු මකා දැමෙනු ඇත. ඉන්පසු බැඳ, පසුව තල්ලු කරන්න.


මමත් කරන්නේ මෙයයි. එය කිරීම පහසු කර ඇත, නමුත්, git විධාන ඉගෙන ගැනීම හොඳ දෙයකි.
මීකා මොන්ටෝයා

1

මගේ සගයකු යෝජනා කළේ බලවත් යැයි මා සිතන BFG Repo-Cleaner ය. එය අනවශ්‍ය දත්ත මකා දැමීම පමණක් නොව, ඒ හා සම්බන්ධ ඕනෑම තොරතුරු වලින් ඔබේ ගබඩාව පිරිසිදු කිරීම ද වේ.


1

නව නාමාවලිය එක් කිරීමට:

mkdir <YOUR-DIRECTORY>

නමුත් දැන් මෙම නව නාමාවලියෙන් Git නොදැන සිටියි, මන්ද Git ඩිරෙක්ටරි නොවන ගොනු ගොනුවල සටහන් තබා ගනී

git status

අප විසින් සිදු කරන ලද වෙනස පිළිබඳව Git දැන නොසිටිනු ඇත, එබැවින් .keepමෙම නව වෙනස මගින් Git දැනුවත් කිරීම සඳහා අපි සැඟවුණු ගොනුවක් එක් කරන්නෙමු .

touch /YOUR-directory/.keep

දැන්, ඔබ git statusGit ට පහර දුන්නොත් වෙනස්කම් පිළිබඳව දැනුවත් වනු ඇත.

ඔබට නාමාවලිය මකා දැමීමට අවශ්‍ය නම්, ඔබ මෙම විධානය භාවිතා කළ යුතුය.

rm -r <YOUR-DIRECTORY>

ඔබ භාවිතයෙන් පරීක්ෂා කර බැලුවහොත් git status, නාමාවලිය ඉවත් කර ඇති බව ඔබට පෙනෙනු ඇත.


0

පළමු git විධානයට කිසිවක් මකා දැමීමට පෙර ඔබ කවුරුන්දැයි දැනගත යුතුය

  1. git init
  2. git config user.name "යමෙකු"
  3. git config user.email "someone@someplace.com"
  4. git rm -r
  5. git commit -m "මකා දැමීම dir"
  6. git push origin master

0

පිළිතුරු 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
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.