Git ගබඩාවකින් ගොනුවක් මකා දැමිය හැක්කේ කෙසේද?


1936

මම "file1.txt"Git ගබඩාවකට නම් කරන ලද ගොනුවක් එක් කළෙමි . ඊට පසු, මම එය සිදු, ලෙස හඳුන්වනු ලබන බහලුම් කිහිපයක් එකතු dir1සහ dir2, සහ Git ගබඩාව ඔවුන් කැපවී.

දැන් වත්මන් නිධිය "file1.txt", dir1හා dir2. "file1.txt"වැනි dir1සහ වෙනත් අයට බලපෑම් නොකර මා මකා දැමිය හැක්කේ කෙසේද dir2?


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

8
සටහන: GitHub හි, ඔබට දැන් වෙබ් අතුරු මුහුණතෙන් කෙලින්ම ගොනුවක් මකා දැමිය හැකිය (repo ක්ලෝන කිරීමකින් තොරව). බලන්න මගේ පිළිතුර පහත .
VonC

4
E කීත් තොම්සන් මට එය කිරීමට මංමුලා සහගතව අවශ්‍ය නම් ගත හැකි පියවර මොනවාද?
lessthanl0l


Answers:


3262

භාවිතා කරන්න git rm.

ඔබට Git ගබඩාවෙන් සහ ගොනු පද්ධතියෙන් ගොනුව ඉවත් කිරීමට අවශ්‍ය නම් , භාවිතා කරන්න:

git rm file1.txt
git commit -m "remove file1.txt"

නමුත් ඔබට ගොනුව Git ගබඩාවෙන් පමණක් ඉවත් කර ගොනු පද්ධතියෙන් ඉවත් කිරීමට අවශ්‍ය නම්, භාවිතා කරන්න:

git rm --cached file1.txt
git commit -m "remove file1.txt"

සහ දුරස්ථ repo වෙත වෙනස්කම් තල්ලු කිරීම

git push origin branch_name

98
එසේම පහසුය: git rm -r බහලුම // නාමාවලිය සහ අන්තර්ගතය ඉවත් කිරීම සඳහා
Reg

10
එය වෙනත් කොමිස් වලදී වුවද එම ගොනුව ඉවත් කිරීමට යන්නේ නැත.
VaTo

7
A සෝල් ඕර්ටෙගා: ඒක හරි. පෙර කොමිස් වලින් ගොනුවක් ඉවත් කිරීමට (අතීත ඉතිහාසය වෙනස් කිරීම), සංවේදී දත්ත ඉවත් කිරීම පිළිබඳ GitHub හි උදව් පිටුව බලන්න .
ග්‍රෙග් හෙව්ගිල්

15
මෙය දේශීයව ද ගොනුව මකා දමනු ඇති බව සලකන්න. ඔබට එය repo වෙතින් පමණක් මකා දැමීමට අවශ්‍ය නම්: git rm --cached file1.txt
වෙස්ටන් ගැන්ගර්

5
එම ගොනුවේ සංවේදී තොරතුරු (උදා: අක්තපත්‍ර) තිබේ නම් ඔබ එම අක්තපත්‍ර වහාම වෙනස් කළ යුතු බව සඳහන් කිරීම වටී . GitHub උපුටා දැක්වීම සඳහා "ඔබ GitHub වෙත කැපවීමක් කළ පසු, එහි අඩංගු ඕනෑම දත්තයක් සම්මුතියක් ලෙස සලකා බැලිය යුතුය. ඔබ මුරපදයක් කර ඇත්නම් එය වෙනස් කරන්න! ඔබ යතුරක් කර ඇත්නම්, නව එකක් ජනනය කරන්න."
c1moore

609

git rm file.txtගොනුව repo වෙතින් ඉවත් කරන අතර එය දේශීය ගොනු පද්ධතියෙන් මකා දමයි .

ප්රති සිට ගොනු ඉවත් කිරීමට හා නොවන දේශීය ගොනු පද්ධති භාවිත එය ඉවත්:
git rm --cached file.txt

පහත දැක්වෙන නිශ්චිත තත්වය නම්, මගේ ව්‍යාපාරයේ වෙබ් අඩවිය සඳහා අනුවාද පාලනය පවත්වා ගැනීම සඳහා මම git භාවිතා කරන නමුත්, “මිකී” නාමාවලිය CAD සංවර්ධකයෙකු සමඟ පුද්ගලික අන්තර්ගතයන් බෙදා ගැනීමට tmp ෆෝල්ඩරයක් විය. ඔහුට විශාල ලිපිගොනු අවශ්‍ය වූ විට, මම පුද්ගලික, සම්බන්ධ නොවූ ඩිරෙක්ටරියක් සාදා එහි ඇති ලිපිගොනු බ්‍රව්සරය හරහා ලබා ගැනීමට ඔහුට හැකි විය. මම මෙය කළ බව අමතක කර, පසුව මම git add -Aවෙබ් අඩවියේ මූලික නාමාවලියෙන් එය සිදු කළෙමි . පසුව, git statusකැපවිය යුතු නව ලිපිගොනු පෙන්වීය. දැන් මට ඒවා git හි ලුහුබැඳීම් සහ අනුවාද පාලනයෙන් මකා දැමීමට අවශ්‍ය විය ...

පහත දැක්වෙන නියැදි ප්‍රතිදානය මට නොදැනුවත්වම .003ගොනුව මකා දැමූ තැනට ය . ස්තුතිවන්ත වන්න, දේශීය පිටපතට කුමක් සිදුවීදැයි මට ප්‍රශ්නයක් නැත .003, නමුත් දැනට වෙනස් කර ඇති තවත් සමහර ලිපිගොනු මම වෙබ් අඩවියට යාවත්කාලීන කරන ලද අතර දේශීය ගොනු පද්ධතියේ මකාදැමීම එපික් වනු ඇත! "දේශීය ගොනු පද්ධතිය" = සජීවී වෙබ් අඩවිය (විශිෂ්ට භාවිතයක් නොව යථාර්ථයයි) .

[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$ 
[~/www]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   shop/mickey/mtt_flange_SCN.7z.001
#   modified:   shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001  shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ 
[~/www]$ 
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001  shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ 
[~/www]$ 
[~/www]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    shop/mickey/mtt_flange_SCN.7z.002
#   deleted:    shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
#   modified:   shop/mickey/mtt_flange_SCN.7z.001
[~/www]$

යාවත්කාලීන කිරීම: මෙම පිළිතුරට යම් තදබදයක් ඇති බැවින් මගේ අනෙක් Git පිළිතුර විශාල සම්පත් කිහිපයක් බෙදා ගනී යැයි මම සිතුවෙමි : මෙම පිටුවේ ග්‍රැෆික් එකක් ඇත, එය මා සඳහා Git අවලංගු කිරීමට උපකාරී වේ. මෙම "Pro Git" පොත අන්තර්ජාලය හා මට ගොඩක් උදව් කරනවා.


6
ඔබට මෙය වැනි දෙයක් සමඟ මෙය කිරීමට අවශ්‍ය වන අතර git commit -m "Just removing file1.txt", ඔබට දුරස්ථ ගබඩාවක් තිබේ නම්, ඒ හා සමාන දෙයක් සමඟ බැඳීම තල්ලු කරන්න git push origin master.
තහනම-භූ ඉංජිනේරුකරණය

79

පළමුව, ඔබ භාවිතා කරන්නේ නම් git rm, විශේෂයෙන් බහු ලිපිගොනු සඳහා, ඕනෑම ආදේශක කාඩ්පතක් විධාන මඟින් නොව කවචයෙන් විසඳනු ඇතැයි සලකන්න git.

git rm -- *.anExtension
git commit -m "remove multiple files"

නමුත්, ඔබගේ ගොනුව දැනටමත් GitHub හි තිබේ නම්, ඔබට (2013 ජූලි සිට) වෙබ් GUI වෙතින් කෙලින්ම මකා දැමිය හැකිය!

ඔබේ ගබඩාවේ ඇති ඕනෑම ගොනුවක් සරලව බලන්න, ඉහළින් ඇති කුණු කූඩ අයිකනය ක්ලික් කරන්න, සහ වෙනත් ඕනෑම වෙබ් පාදක සංස්කරණයක් මෙන් ඉවත් කිරීම සිදු කරන්න.

ඉන්පසු git pullඔබේ දේශීය ගබඩාවේ " " කරන්න, එවිට එය ගොනුව දේශීයව මකා දමනු ඇත.
මෙම පිළිතුර git repo වෙතින් ගොනුවක් මකා දැමීමේ (වටරවුම) ක්‍රමයක් වන්නේ කුමක් ද?
(GitHub මත ගොනුවක් බව සඳහන් කිරීම නොවේ එය "GIT ණයකට" තුළ)


මකන්න බොත්තම

(බැඳීම එම ගොනුව මකාදැමීම පිළිබිඹු කරයි):

මකාදැමීමක් කරන්න

ඒ වගේම, ඒක නැති වෙලා.

මෙම විශේෂාංග සඳහා උදව් සඳහා , ගොනු සෑදීම , ගෙනයාම , නම් කිරීම සහ මකා දැමීම පිළිබඳ අපගේ උපකාරක ලිපි කියවීමට වග බලා ගන්න .

සටහන: එය අනුවාද පාලන පද්ධතියක් බැවින්, ඔබට පසුව ගොනුව නැවත ලබා ගැනීමට අවශ්‍ය නම් Git සැමවිටම ඔබේ පිටුපස ඇත.

අන්තිම වාක්‍යයෙන් අදහස් වන්නේ මකා දැමූ ගොනුව තවමත් ඉතිහාසයේ කොටසක් වන අතර ඔබට එය පහසුවෙන් ප්‍රතිස්ථාපනය කළ හැකිය (නමුත් තවමත් GitHub වෙබ් අතුරු මුහුණත හරහා නොවේ):

" මකාදැමුණු ගොනුවක් Git repo එකක ප්‍රතිස්ථාපනය කරන්න " බලන්න .


4
මකාදැමීම සඳහා ඔබ පහළට අනුචලනය කර "වෙනස්කම් සිදු කරන්න" ඔබන්න!
ලෙවින්සන් ටෙක්නොලොජීස්

1
විශාල පෙළ ගොනු සඳහා මෙය ක්‍රියා නොකරයි. තිර පිටපතෙහි මෙන් සේවාදායකය ගොනුව විදැහුම් කිරීමට උත්සාහ කරන අතර පසුව දෝෂ 500 කින් අසමත් වේ.
කේප් කෝඩර්

10
මෙම පිළිතුර ගිතුබ් වෙත යොමු කරයි, ප්‍රශ්නය git repo ගැන ය. ගිතබ් අතුරුමුහුණත භාවිතා කරන්නේ කෙසේද යන්න නොවේ.
පීටර් මාෂල්

67

මට වැඩ කළ එකම විකල්පය මෙයයි.

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'

සටහන: * .sql ඔබගේ ගොනු නම හෝ ගොනු වර්ගය සමඟ ප්‍රතිස්ථාපනය කරන්න. ඉතා පරිස්සම් වන්න, මන්ද මෙය සෑම කැපවීමක් හරහා ගොස් මෙම ගොනු වර්ගය ඉරා දමනු ඇත.

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


10
මෙය විශිෂ්ට පිළිතුරකි, නමුත් අනෙක් පිළිතුරු වලට වඩා වෙනස්ව, මෙම විධානය මඟින් බැඳීම් ඉතිහාසය නැවත ලියන අතර රටාවට ගැලපෙන ලිපිගොනු සියල්ලම සොයා ගනී. ඔබ අහම්බෙන් යම් සංවේදී තොරතුරක් කර ඇති බව ඔබ දුටුවහොත් මෙය විශේෂයෙන් ප්‍රයෝජනවත් වේ (අවශ්‍ය නම්, මෙය තල්ලු කර ඇති දුරස්ථ ගබඩාවල ඉතිහාසය නැවත ලිවීමට --force භාවිතා කළ හැකිය).
yoniLavi

3
එය හරියටම මට තිබූ ගැටලුව වූ අතර එය නිවැරදි කර ගැනීමට යම් අත්හදා බැලීමක් හා දෝෂයක් අවශ්‍ය විය. මා සමඟ වැඩ කරමින් සිටි පිරිමි ළමයෙක් විශාල දත්ත සමුදායන් කීපයක්ම නැවත නැවත ගබඩාවකට ගෙන ගොස් ඇත. මගේ උදාහරණයේ .sql භාවිතා කළේ එබැවිනි. මගේ රිපෝ එක කොතරම් පිපිරී ඇත්ද යත් ගිතුබ් තව දුරටත් තල්ලු කිරීම පිළිගන්නේ නැත.
ජේසන් ග්ලිසන්

3
ඔබ දුරස්ථ මාස්ටර් භාවිතා කරන්නේ නම්, ඔබ git push --force -u origin master
බැඳීමක්

2
L ඇල්බර්ට් මාකෝව්ස්කි කණගාටුයි මම නිශ්චිත නැත. ගිතුබ් ඇත්ත වශයෙන්ම තල්ලුව පිළිගන්නේ නැත, මන්ද යත්, රෙපෝව ඔවුන්ගේ ප්‍රමාණයේ සීමාවෙන් ඔබ්බට ගිය බැවිනි. අවම වශයෙන් GB කිහිපයක් වත්. ඔවුන් මාව කපා ඒ ගැන මට ඊමේල් කළා. එබැවින්, අවාසනාවකට මෙන්, තල්ලු කිරීම සඳහා බල කිරීම එම අවස්ථාවේ දී උපකාරී නොවේ.
ජේසන් ග්ලිසන්

2
Ason ජේසන් ග්ලිසන් අහම්බෙන් ගබඩාවකට වීඩියෝවක් එකතු කළ ගැටලුවට ද මම මුහුණ දී සිටිමි.
ඇල්බට් මාකෝව්ස්කි

34

මීට අමතරව, එය ඉවත් කළ යුතු ෆෝල්ඩරයක් නම් සහ එය පසුව ඇති ළමා ෆෝල්ඩර හෝ ලිපිගොනු නම්, භාවිතා කරන්න:

git rm -r foldername

2
මෙය දේශීයයෙන් ද ෆෝල්ඩරය ඉවත් කරයි! Use git rm --cached -r <foldername>
අක්ෂය

24

වඩාත් පොදුවේ, git helpමේ වගේ අවම වශයෙන් සරල ප්‍රශ්න වලට උදව් වනු ඇත:

zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]

The most commonly used git commands are:
   add        Add file contents to the index
   :
   rm         Remove files from the working tree and from the index

6
වඩාත් සංකීර්ණ දේවල් සඳහා, මම git helpඅවුල් සහගත බව පෙනේ , නමුත් සරල දේ සඳහා එය හොඳයි :)
ජේම්ස් පොලි

9
එය ඇත්ත වශයෙන්ම git noobs සඳහා එතරම් හොඳ නැත, මන්ද "දර්ශකය" යනු git noobs හුරුපුරුදු සංකල්පයක් නොවන බැවිනි. මම කතා කරන්නේ ගිට් නොබ් කෙනෙකු වීමේ පෞද්ගලික අත්දැකීම් වලින් :) එසේම, දර්ශකයෙන් ඉවත් කරනවාට වඩා rm මකාදැමීම සඳහා ගොනුවක් වේදිකා ගත කිරීම යැයි පැවසීම වඩා අවුල් සහගතය .
රෝමන් ස්ටාර්කොව්

Romkyns සමඟ එකඟ වීම: "වැඩ කරන ගසෙන් සහ දර්ශකයෙන් ලිපිගොනු ඉවත් කරන්න" යන විස්තරය මට පෙනෙන්නේ එය ගොනුව repo වෙතින් ඉවත් කිරීමේ ක්‍රමයක් ලෙස නොවේ. සමහර විට මම git වඩා හොඳින් තේරුම් ගත්තා නම් එය එසේ වනු ඇත. ඒ වෙනුවට පෙනෙන්නේ ඔබ ලිපිගොනු අස්ථායි කරන බවයි (සහ විකල්පයක් ලෙස ඒවා වැඩ කරන ගසෙන් ඉවත් කිරීම - එය අනිවාර්යයෙන්ම
රෙපෝවට

14

ඔබට ගොනුව repo වෙතින් මකා දැමීමට අවශ්‍ය නම්, නමුත් එය ගොනු පද්ධතියේ තබන්න (හඳුනා නොගනු ඇත):

bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"

ඔබට ගොනුව repo වෙතින් සහ ගොනු පද්ධතියෙන් මකා දැමීමට අවශ්‍ය නම් විකල්ප දෙකක් තිබේ:

  1. ගොනුවේ දර්ශකයේ කිසිදු වෙනසක් සිදු නොවන්නේ නම්:

    bykov@gitserver:~/temp> git rm file1.txt
    bykov@gitserver:~/temp> git commit -m "remove file1.txt"
    
  2. ගොනුවේ දර්ශකයේ වෙනස්කම් තිබේ නම්:

    bykov@gitserver:~/temp> git rm -f file1.txt
    bykov@gitserver:~/temp> git commit -m "remove file1.txt"
    

12

git rm මෙතැන් සිට මෙම ශාඛාවේ ඇති ගොනුව පමණක් ඉවත් කරනු ඇත, නමුත් එය ඉතිහාසයේ ඉතිරිව ඇති අතර git එය මතක තබා ගනී.

git filter-branchඅනෙක් අය මෙහි සඳහන් කර ඇති පරිදි එය කළ හැකි නිවැරදි ක්‍රමය සමඟ ය . එම ගොනුව මකා දැමීම සඳහා ශාඛා ඉතිහාසයේ සෑම කැපවීමක්ම නැවත ලියනු ඇත.

එහෙත්, එය සිදු කිරීමෙන් පසුව පවා, git හට එය මතක තබා ගත හැකි වන්නේ එය නැවත යොමු කිරීම, දුරස්ථ කිරීම, ටැග් සහ එවැනි දේවල යොමු දැක්වීම් තිබිය හැකි බැවිනි.

ඔබට එය එක් පියවරකින් සම්පූර්ණයෙන්ම අතුගා දැමීමට අවශ්‍ය නම්, භාවිතා කිරීමට මම ඔබට නිර්දේශ කරමි git forget-blob

https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/

එය පහසුය, කරන්න git forget-blob file1.txt.

මෙය ඔබගේ ගබඩාවේ ඇති මෙම ගොනුව මුළුමනින්ම ඉවත් කිරීම සඳහා සෑම සඳහනක්ම, කරන්න git filter-branch, සහ අවසානයේදී git කසළ එකතු කරන්නා ධාවනය කරයි git gc.


10

Rm විධානය භාවිතා කර ඔබේ දේශීය ෆෝල්ඩරයෙන් ගොනුව මකා දැමීමට අවශ්‍ය නම් තවත් ක්‍රමයක් දුරස්ථ සේවාදායකයට තල්ලු කරන්න.

rm file1.txt

git commit -a -m "Deleting files"

git push origin master

10

සටහන: ඔබට ගොනුව මකා දැමීමට අවශ්‍ය නම් පහත දැක්වෙන git භාවිතයෙන් පමණි:

git rm --cached file1.txt

ඔබට දෘඩ තැටියෙන් ද මකා දැමීමට අවශ්‍ය නම්:

git rm file1.txt

ඔබට ෆෝල්ඩරයක් ඉවත් කිරීමට අවශ්‍ය නම් (ෆෝල්ඩරයේ ලිපිගොනු කිහිපයක් අඩංගු විය හැක), එබැවින් ඔබ පහත පරිදි පුනරාවර්තන විධානය භාවිතා කර ඉවත් කළ යුතුය:

git rm -r foldername

ඔබට වෙනත් ෆෝල්ඩරයක් තුළ ඇති ෆෝල්ඩරයක් ඉවත් කිරීමට අවශ්‍ය නම්

git rm -r parentFolder/childFolder

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

ලේඛනයෙන්:

git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…​

විකල්ප

<file>…​

Files to remove. Fileglobs (e.g. *.c) can be given to remove all matching files. If you want Git to expand file glob characters, you

ඒවායින් බේරීමට අවශ්‍ය විය හැකිය. ඩිරෙක්ටරියේ ඇති සියලුම ලිපිගොනු ඉවත් කිරීම සඳහා ප්‍රමුඛ පෙළේ නාමාවලි නාමයක් (උදා: dir / file1 සහ dir / file2) ලබා දිය හැකි අතර, පුනරාවර්තන ලෙස සියලුම උප නාමාවලි, නමුත් මේ සඳහා -r විකල්පය පැහැදිලිව ලබා දීම අවශ්‍ය වේ. -f --force

Override the up-to-date check.

-n --dry-run

Don’t actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command.

-r

Allow recursive removal when a leading directory name is given.

--

This option can be used to separate command-line options from the list of files, (useful when filenames might be mistaken for

විධාන රේඛා විකල්ප). --cached

Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.

--ignore-unmatch

Exit with a zero status even if no files matched.

-q --quiet

git rm normally outputs one line (in the form of an rm command) for each file removed. This option suppresses that output.

නිල ලේඛනය පිළිබඳ වැඩිදුර කියවන්න.


7

විශේෂිත ගොනුවක් මකා දැමීමට

git rm ගොනු නාමය

නොකැඩූ සියලුම ලිපිගොනු නාමාවලියකින් පුනරාවර්තන ලෙස තනි පහරකින් පිරිසිදු කිරීම

git clean -fdx


5

ඔබට වින්ඩෝස් යෙදුම සඳහා GitHub තිබේ නම්, ඔබට පහසු පියවර 5 කින් ගොනුවක් මකා දැමිය හැකිය:

  • සමමුහුර්තකරණය ක්ලික් කරන්න.
  • ගොනුව පිහිටා ඇති නාමාවලිය මත ක්ලික් කර ඔබගේ නවතම ගොනුව තෝරන්න.
  • මෙවලම් මත ක්ලික් කර "මෙහි කවචයක් විවෘත කරන්න" තෝරන්න.
  • කවචයේ: "rm {filename}" ටයිප් කර enter යතුර ඔබන්න.
  • වෙනස සිදු කර නැවත සමමුහුර්ත කරන්න.

5

මගේ නඩුවේදී මම කොමිස් කිහිපයකින් පසු ගිතුබ් ගොනුව ඉවත් කිරීමට උත්සාහ කළ නමුත් පරිගණකයේ සුරකිමි

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master

පසුව මෙම ගොනුව නොසලකා හරින ලදි


3
  1. පළමුව, දේශීය ගබඩාවෙන් ගොනු ඉවත් කරන්න.

    git rm -r ගොනුවේ නම

    හෝ, ගොනු දේශීය ගබඩාවෙන් පමණක් නොව ගොනු පද්ධතියෙන් ඉවත් කරන්න

    git rm --cached ගොනුවේ නම

  2. දෙවනුව, දේශීය ගබඩාවට වෙනස්කම් සිදු කරන්න.

    git commit -m "unwanted files or some inline comments"   
    
  3. අවසාන වශයෙන්, දේශීය වෙනස්කම් දුරස්ථ ගබඩාවට යාවත්කාලීන කරන්න / තල්ලු කරන්න.

    git push 
    

මෙය අහම්බෙන් එකතු කරන ලද සහ තල්ලු කරන ලද ගොනුව හා සම්බන්ධ සියල්ල ඉවත් කරයිද?
bapors

1

මම යෝජිත විකල්ප බොහොමයක් උත්සාහ කළ අතර කිසිවක් ක්‍රියාත්මක වූ බවක් නොපෙනුණි (මම විවිධ ගැටලු ලැයිස්තුගත නොකරමි). මා විසින් අවසන් කරන ලද, වැඩ කළ, සරල හා බුද්ධිමත් (මට):

  1. මුළු දේශීය ගබඩාවම වෙනත් තැනකට ගෙන යන්න
  2. මාස්ටර්ගේ සිට ඔබේ දේශීය ධාවකය වෙත නැවත වරක් ක්ලෝනය කරන්න
  3. ඔබගේ මුල් පිටපතෙන් ලිපිගොනු / ෆෝල්ඩරය # 1 හි නැවත නව ක්ලෝනයට පිටපත් කරන්න
  4. ගැටළුව විශාල ගොනුව එහි නොමැති බව හෝ .gitignore ගොනුවේ බැහැර කර ඇති බවට වග බලා ගන්න
  5. සුපුරුදු git add / git commit / git push කරන්න

1

ඔබ ගොනුව repo වෙතින් ඉවත් කළ පසු ඔබට BFG Repo-Cleanergit rm භාවිතා කර repo ඉතිහාසයෙන් ගොනුව සම්පූර්ණයෙන්ම හා පහසුවෙන් මකා දැමිය හැකිය.


0

මගේ 'වෙනස් කළ ලිපිගොනු' ලැයිස්තුව දූෂණය කිරීමට මට අවශ්‍ය නැති බව අහම්බෙන් එය ගබඩාවට ඇතුළත් කළ ඕබ් සහ බින් ලිපිගොනු මා සතුව ඇත

ඔවුන් දුරස්ථයට ගිය බව දුටු පසු , මම මෙය නොසලකා හැරියෙමි.gitignore

/*/obj
/*/bin

ගැටලුව වන්නේ ඔවුන් දැනටමත් දුරස්ථව සිටින අතර ඒවා වෙනස් වූ විට ඒවා වෙනස් වූ විට උත්පතන වී වෙනස් කළ ගොනු ලැයිස්තුව දූෂණය කිරීමයි.

ඒවා දැකීම නැවැත්වීමට, ඔබ දුරස්ථ ගබඩාවෙන් සම්පූර්ණ ෆෝල්ඩරය මකා දැමිය යුතුය.

විධාන විමසුමේදී:

  1. සංයුක්ත තැටිය repo ෆෝල්ඩරයට (එනම් C:\repos\MyRepo)
  2. මට SSIS \ obj මකා දැමීමට අවශ්‍යයි. ඔබට මකා දැමිය හැක්කේ ඉහළ මට්ටමින් පමණක් බව පෙනේ, එබැවින් ඔබට දැන් SSIS වෙත සංයුක්ත තැටි අවශ්‍ය වේ: (එනම් C:\repos\MyRepo\SSIS)
  3. දැන් මැජික් ඉන්කන්ටේෂන් ටයිප් කරන්න git rm -r -f obj
    • rm = ඉවත් කරන්න
    • -r = පුනරාවර්තන ලෙස ඉවත් කරන්න
    • -f = යන්නෙන් බලය, ඔබ එය සැබවින්ම අදහස් කරන නිසා
    • obj යනු ෆෝල්ඩරයයි
  4. දැන් දුවන්න git commit -m "remove obj folder"

ලිපිගොනු 13 ක් මකාදැමීම් 315222 ක් වෙනස් කර ඇති බව මට තැතිගන්වන පණිවිඩයක් ලැබුණි

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


0

ප්‍රලේඛනයට අනුව .

git rm --cached giant_file

සංවේදී දත්ත සම්බන්ධයෙන් ගත් විට you ඔබ ගොනුව ඉවත් කළ බව නොකියන අතර එය අවසන් වරට දන්නා බැඳීමට ඇතුළත් කරන්න:

0. අවසන් කැපවීම සංශෝධනය කරන්න

git commit --amend -CHEAD

සියලුම git ඉතිහාසයෙන් ගොනුව මකා දැමීමට ඔබට අවශ්‍ය නම්, ප්‍රලේඛනයට අනුව ඔබ පහත සඳහන් දේ කළ යුතුය:

1. ඔබගේ ප්‍රාදේශීය ඉතිහාසයෙන් එය ඉවත් කරන්න

git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \  --prune-empty --tag-name-filter cat -- --all
# Replace PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA with the path to the file you want to remove, not just its filename
  1. මෙම ගොනුව .gitignore හි ඇතුළත් කිරීමට අමතක නොකරන්න (එය ගොනුවක් නම් ඔබට කිසි විටෙකත් බෙදා ගැනීමට අවශ්‍ය නොවේ (මුරපද වැනි ...):
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"

3. ඔබට දුරස්ථයෙන් ඉවත් කිරීමට අවශ්ය නම්

git push origin --force --all

4. ඔබට එය ටැග් නිකුතුවලින් ඉවත් කිරීමට අවශ්‍ය නම්:

git push origin --force --tags

-1

නිශ්චිත දිගුවකින් ඔබට ගොනු ඉවත් කිරීමට අවශ්‍ය නම් (නිදසුනක් ලෙස, සම්පාදනය කරන ලද ගොනු) ඒවා එකවර ඉවත් කිරීමට ඔබට පහත සඳහන් දෑ කළ හැකිය:

git remove -f *.pyc

-7

ඔබ ඔබේ දේශීය ගබඩාවේ ගොනු නොකළ නමුත් git repo තුළ නම්, වෙබ් අතුරු මුහුණත හරහා git repo හි ගොනුව විවෘත කර අතුරුමුහුණතේ දකුණු කෙළවරේ ඇති මකන්න බොත්තම සොයා ගන්න. අතුරු මුහුණත මකාදැමීමේ විකල්පය බැලීමට මෙතැන ක්ලික් කරන්න

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.