උප මොඩියුලයක් ඉවත් කරන්නේ කෙසේද?


3545

Git උප මොඩියුලයක් ඉවත් කරන්නේ කෙසේද?

මාර්ගය වන විට, මට සරලව කළ නොහැකි හේතුවක් git submodule rm whateverතිබේද?


109
සරල පිළිතුර stackoverflow.com/a/21211232/94687 දැන් නිවැරදි පිළිතුර වන අතර එය එසේ සලකුණු කළ යුතුය. දැන්, එය සරලවම git rm modulenameසහrm -rf .git/modules/modulename
imz - අයිවන් සකරියාෂෙව්

10
එය ඇත්ත වශයෙන්ම සත්‍ය නොවේ. එම පිළිතුර මඟින් උප මොඩියුල ඇතුළත් කිරීම ඉවත් නොකරයි .git/config. පිළිගත් පිළිතුර මඟින් aa උප මොඩියුලයක් සම්පූර්ණයෙන්ම ඉවත් කිරීමට යාවත්කාලීන ක්‍රමය පෙන්වයි. මෙම පිළිතුරෙහි එය වඩාත් සංක්ෂිප්තව විස්තර කර ඇත: stackoverflow.com/a/36593218/1562138
fvgs

උප මොඩියුල ඉවත් කිරීමට මෙම ලිපිය ඉතා ප්‍රයෝජනවත් බව මට පෙනී ගියේය. .Gitsubmodules සහ .git / config ගොනු සම්බන්ධකයේ
Ri_

12
කරුණාකර ඔබම යම් කාලයක් ඉතිරි කර ක්‍රියාත්මක වන පිළිතුරට කෙලින්ම යන්න (2017 දී): stackoverflow.com/a/36593218/528313
Vincenzo Pii

මම දින දෙකක් උප මොඩියුල ගැටලු සමඟ පොරබදිමි. මම මෙය සොයාගත් විට පෙරළියක් ඇති විය: forums.developer.apple.com/thread/13102 . මූලික වශයෙන්, Xcode, සහ සමහර විට වෙනත් යෙදුම්, '~' අඩංගු url පුළුල් කිරීමට වෙහෙසෙයි. වරක් මම ssh: //username@server.remoteHost.com/~/git/MyRepo.git ssh: //username@server.remoteHost.com/home/username/git/MyRepo.git ලෙස වෙනස් කළ පසු (සත්‍ය මාර්ගය සොයා බලන්න ඔබගේ සේවාදායකයේ), සියලු අමුතුකම විනාඩි දහයකින් අතුරුදහන් විය. Stackoverflow.com/questions/32833100/…
එලිස් වැන් ලුයිජ්

Answers:


2219

Git1.8.3 සිට (2013 අප්‍රේල් 22) :

"මම තවදුරටත් මෙම උප මොඩියුලය ගැන උනන්දු නොවෙමි" යැයි පැවසීමට පෝසිලේන් ක්‍රමයක් නොතිබුණි, ඔබ උප මොඩියුලයක් සඳහා ඔබේ උනන්දුව ප්‍රකාශ කළ පසු " submodule init".
" submodule deinit" එසේ කිරීමට මාර්ගයයි.

මකාදැමීමේ ක්‍රියාවලිය ද භාවිතා කරයි git rm(2013 ඔක්තෝම්බර් සිට git1.8.5 සිට).

සාරාංශය

පියවර 3 ඉවත් කිරීමේ ක්‍රියාවලිය වනුයේ:

0. mv a/submodule a/submodule_tmp

1. git submodule deinit -f -- a/submodule    
2. rm -rf .git/modules/a/submodule
3. git rm -f a/submodule
# Note: a/submodule (no trailing slash)

# or, if you want to leave it in your working tree and have done step 0
3.   git rm --cached a/submodule
3bis mv a/submodule_tmp a/submodule

පැහැදිලි කිරීම

rm -rf: මෙම සඳහන් වේ දානියෙල් ෂ්රෝඩර් ගේ පිළිතුර , සහ ලේඛකයෙකු Eonil දී අදහස් :

මෙය .git/modules/<path-to-submodule>/නොවෙනස්ව පවතී.
එබැවින් ඔබ වරක් මෙම ක්‍රමය සමඟ උප මොඩියුලයක් මකා දමා නැවත ඒවා නැවත එකතු කළහොත්, ගබඩාව දැනටමත් දූෂිත වී ඇති නිසා එය කළ නොහැකි වනු ඇත.


git rm: කැපවීම 95c16418 බලන්න :

දැනට git rmඋප මොඩියුලයක " " භාවිතා කිරීමෙන් උප මොඩියුලයේ වැඩ ගස සුපිරි ප්‍රොජෙක්ට් එකෙන් සහ ගිට්ලින්ක් දර්ශකයෙන් ඉවත් කරයි.
නමුත් උප මොඩියුලයේ කොටස ස්පර්ශ නොවී .gitmodulesඉතිරිව ඇති අතර එය දැන් ඉවත් කර ඇති උප මොඩියුලයේ ඉතිරිව ඇති අතර පරිශීලකයින් කෝපයට පත් කළ හැකිය (සැකසීමට පටහැනිව .git/config, මෙය පරිශීලකයා මෙම උප මොඩියුලය කෙරෙහි උනන්දුවක් දැක්වූ බව මතක් කිරීමක් ලෙස පැවතිය යුතු අතර එය පසුව නැවත ජනනය කරනු ඇත පැරණි බැඳීමක් පරීක්ෂා කළ විට).

git rmවැඩ ගසෙන් උප මොඩියුලය ඉවත් කිරීම පමණක් නොව submodule.<submodule name>, .gitmodulesගොනුවෙන් " " කොටස ඉවත් කිරීම සහ අදියර දෙකම මඟින් පරිශීලකයාට උදව් කිරීමට ඉඩ දෙන්න .


git submodule deinit: එය මෙම පැච් එකෙන් පැන නගී :

" git submodule init" සමඟ පරිශීලකයාට උප මොඩියුල එකක් හෝ කිහිපයක් ගැන සැලකිලිමත් වන බව පැවසීමට හැකි වන අතර ඊළඟ ඇමතුම මත එය " git submodule update" වෙත ගෙන යාමට අවශ්‍ය වේ.
නමුත් දැනට ඔවුන්ට උප මොඩියුලයක් ගැන සැලකිල්ලක් නොදක්වන අතර දේශීය වැඩ වෘක්ෂයෙන් මිදීමට අවශ්‍ය යැයි කියන්නට පහසු ක්‍රමයක් නොමැත (පරිශීලකයා උප මොඩියුල අභ්‍යන්තරයන් ගැන බොහෝ දේ දැනගෙන වැඩ සමඟ " submodule.$name.url" සැකසුම ඉවත් නොකරන්නේ නම් .git/configගසම).

' deinit' විධානයක් ලබා දීමෙන් එම පරිශීලකයින්ට උදව් කරන්න .
මෙය ලබා දී ඇති උප මොඩියුල (ය) සඳහා (හෝ ලබා දී ඇත්නම් ආරම්භ කර ඇති සියල්ලටම ) මුළු submodule.<name>කොටසම ඉවත් කරයි.git/config. .
බලහත්කාරයෙන් මිස වත්මන් වැඩ ගසෙහි වෙනස් කිරීම් තිබේ නම් අසමත් වේ.
විධාන රේඛාවේ දක්වා ඇති උප මොඩියුලයක් සඳහා url සැකසුම සොයාගත නොහැකි විට පැමිණිලි .git/configකරන්න, නමුත් එසේ වුවද අසමත් නොවන්න.

()) ආරම්භක පියවර ( .git/configසහ .git/modules/xxx) නම් මෙය සැලකිලිමත් වේ

Git1.8.5 සිට, පහත සඳහන් කරුණු සැලකිල්ලට git rmගනී :

  • ' addතුල submodule වල url වාර්තා කරන' පියවර .gitmodulesගොනුව: එය ඔබ වෙනුවෙන් ඉවත් කිරීමට අවශ්ය වේ.
  • උප මොඩියුලයේ විශේෂ ප්‍රවේශය ( මෙම ප්‍රශ්නයෙන් පැහැදිලි වන පරිදි ): git rm එය දර්ශකයෙන් ඉවත් කරයි:
    git rm --cached path_to_submodule(පසුපස කප්පාදුවක් නොමැත)
    එමඟින් දර්ශකයේ ගබඩා කර ඇති එම නාමාවලිය "160000" විශේෂ මාදිලියකින් ඉවත් කරනු ඇත, එය උප මොඩියුල මූල නාමාවලියක් ලෙස සලකුණු කරයි .

ඔබට එම අවසාන පියවර අමතක වී සාමාන්‍ය ඩිරෙක්ටරියක් ලෙස උප මොඩියුලයක් එකතු කිරීමට උත්සාහ කළහොත් ඔබට දෝෂ පණිවිඩ ලැබෙනු ඇත:

git add mysubmodule/file.txt 
Path 'mysubmodule/file.txt' is in submodule 'mysubmodule'

සටහන: Git 2.17 (Q2 2018) සිට, git subodule deinit තවදුරටත් ෂෙල් පිටපතක් නොවේ.
එය සී ශ්‍රිතයකට ඇමතුමකි.

බලන්න 2e61273 , commit 1342476 (14 ජනවාරි 2018) විසින් ප්‍රතමේෂ් චවාන් ( pratham-pc) .
(ඒකාබද්ධ කරන ලද්දේ ජූනියෝ සී හමානෝ - gitster- in commit ead8dbe , 13 පෙබරවාරි 2018)

git ${wt_prefix:+-C "$wt_prefix"} submodule--helper deinit \
  ${GIT_QUIET:+--quiet} \
  ${prefix:+--prefix "$prefix"} \
  ${force:+--force} \
  ${deinit_all:+--all} "$@"

18
භාවිතය සඳහා උදාහරණයක් ඔබට දිය හැකිද submodule deinit?
zakdances

5
යමෙකු එය සාර්ථකව භාවිතා කළ බවට එක් උදාහරණයක් ඔබගේ මිතුරෙකු වේ : stackoverflow.com/a/16161950/6309 . නමුත් මා මුලින් විශ්වාස කළ දෙයට පටහැනිව 1.8.3 තවමත් නිකුත් කර නොමැති බව මතක තබා ගන්න! යුනික්ස් හි, ඔබට එය ප්‍රභවයන්ගෙන් සම්පාදනය කළ හැකිය.
VonC

2
Am හැමිෂ්ඩවුන් විශේෂ ප්‍රවේශය අහෝසි විය යුතුය (ඩිරෙක්ටරිය තවදුරටත් උප මොඩියුලයක් නොවේ), සහ .gitmodulesඑය හරි විය යුතුය, නමුත් මම තවමත් .gitඩිරෙක්ටරිය සමඟ ඕනෑම දෙයක් දෙවරක් පරීක්ෂා කර බලමි (එනම් දේශීය වින්‍යාසය, ඔබේ දේශීය ගබඩාව තුළ: එය එසේ නොවේ a විසින් වෙනස් කරන ලදි git pull)
VonC

2
Ay ජේන් ඔව්, ඔබ .gitmodulesඇතුල්වීම ඉවත් කිරීම සහ දර්ශකයේ ඇති විශේෂ ප්‍රවේශය ඉවත් කිරීම සිදු කර එම රෙපෝව තල්ලු කළහොත් අනෙක් අයට එය ඇද ගත හැකි අතර එම උප මොඩියුලය නැති වී යයි.
VonC

3
වර්තමාන git (v1.9 +) හි, git rm submoduleවෙනත් අය දැනටමත් පවසා ඇති ආකාරයට සරල පැරණි ඔබට අවශ්‍ය දේ කරයි.
පීට් පීටර්සන්

3445

Git Submodule Tutorial පිටුව හරහා :

උප මොඩියුලයක් ඉවත් කිරීමට ඔබට අවශ්‍ය වන්නේ:

  1. .gitmodulesගොනුවෙන් අදාළ කොටස මකන්න .
  2. අදියර .gitmodulesවෙනස්කම්:
    git add .gitmodules
  3. සිට අදාළ කොටස මකන්න .git/config.
  4. වැඩ කරන ගසෙන් සහ දර්ශකයෙන් උප මොඩියුල ගොනු ඉවත් කරන්න:
    git rm --cached path_to_submodule(පසුපස කප්පාදුවක් නැත).
  5. උප මොඩියුලයේ .gitනාමාවලිය ඉවත් කරන්න :
    rm -rf .git/modules/path_to_submodule
  6. වෙනස්කම් සිදු කරන්න:
    git commit -m "Removed submodule <name>"
  7. දැන් සොයා නොගත් උප මොඩියුල ගොනු මකන්න:
    rm -rf path_to_submodule

මෙයද බලන්න : විකල්ප පියවර පහතින් .


410
"ඒ වගේම, මට උප මොඩියුලය rm කිසිවක් ලබා ගත නොහැකි වීමට හේතුවක් තිබේද?" ?
abernier

48
කර්බර් පිළිතුර "එවැනි විධානයක් නොපවතින හෙයින්" විය හැකිය. මගේ අනුමානය නම්, ඔවුන් අහඹු දත්ත නැතිවීම වළක්වා ගැනීම සඳහා උප මොඩියුල ගොනු එදිරිව උප මොඩියුල වින්‍යාසය පැහැදිලි කිරීමට උත්සාහ කරන බවයි. සමහර විට එක් පුද්ගලයෙක් සිතන්නේ එය git submodule rmහුදෙක් උප මොඩියුල ලියාපදිංචිය ඉවත් කරන අතර විධානය මඟින් දේශීය ගබඩාව මකා දැමුවහොත් පුදුමයට පත් වනු ඇත. ඕනෑම දේශීය වෙනස් කිරීමක් ආපසු හැරවිය නොහැකි ලෙස අහිමි වනු ඇත. සමහර විට තවත් අයෙකු සිතන්නේ ලිපිගොනු පමණක් ඉවත් කරනු ඇති බවයි.
ජෝන් ඩවුටාට්

119
අවංකවම, මම දන්නේ නැහැ ඇයි කියලා. මම හිතනවා ඔවුන් විධානයක් එකතු කරයි කියලා. මෙම පියවර 4 ඉතා සංකීර්ණයි.
ජෝන් ඩවුටාට්

25
මෙහි submodule ඉවත් කරන bash තිර රචනය, මෙය, හුදෙක් submodule-rm සඳහා GIT හෙවත් නිර්මාණය කිරීම;) gist.github.com/2491147
Capi Etheriel

33
rm -rf .git \ මොඩියුල \ උප මොඩියුලයේ නමද අවශ්‍යද?
rogerdpack

485

සටහනක් පමණි. Git 1.8.5.2 සිට, විධාන දෙකක් කරනු ඇත:

git rm the_submodule
rm -rf .git/modules/the_submodule

Ark මාක් චෙවර්ටන්ගේ පිළිතුර නිවැරදිව පෙන්වා දී ඇති පරිදි, දෙවන පේළිය භාවිතා නොකළේ නම්, ඔබ දැනට උප මොඩියුලය ඉවත් කළද, ඉතිරි .git / මොඩියුල / the_submodule ෆෝල්ඩරය මඟින් එම උප මොඩියුලය නැවත එකතු කිරීම හෝ අනාගතයේදී ප්‍රතිස්ථාපනය වීම වළක්වනු ඇත. . එසේම, onVonC සඳහන් කළ පරිදි, git rmබොහෝ කාර්යයන් උප මොඩියුලයක සිදු කරනු ඇත.

- යාවත්කාලීන කරන්න (07/05/2017) -

පැහැදිලි කිරීම සඳහා, the_submoduleව්‍යාපෘතිය තුළ ඇති උප මොඩියුලයේ සාපේක්ෂ මාර්ගය වේ. උදාහරණයක් ලෙස, subdir/my_submoduleඋප මොඩියුලය උප බහලුමක් තුළ තිබේ නම් subdir.

අදහස් සහ වෙනත් පිළිතුරු වල නිවැරදිව පෙන්වා දී ඇති පරිදි , විධාන දෙක (උප මොඩියුලයක් ඉවත් කිරීමට ක්‍රියාකාරීව ප්‍රමාණවත් වුවද), (2017 ජූලි වන විට) [submodule "the_submodule"]කොටසේ හෝඩුවාවක් තබන්න .git/config, එය තුන්වන විධානයකින් ඉවත් කළ හැකිය:

git config -f .git/config --remove-section submodule.the_submodule 2> /dev/null

5
මම git අනුවාදය 2.4.9 (Apple Git-60) හි සිටින අතර මට කළ යුතුව තිබුණේ rm the_submodule පමණි. මම එය තල්ලු කර පසුව උප මොඩියුලයට සමාන ෆෝල්ඩරයක් නැවත එක් කළ අතර එය ගැටළුවක් නොමැතිව ක්‍රියාත්මක විය.
ඩේවිඩ් සිල්වා ස්මිත්

19
මෙය උප මොඩියුල ඇතුළත් කිරීම ඉවත් නොකරයි .git/config. උප මොඩියුලයක් ඉවත් කිරීමේ සම්පූර්ණ ක්‍රමය සඳහා stackoverflow.com/a/36593218/1562138 බලන්න .
fvgs

2
redrevicko මම මෙය Git 2.11.1 සමඟ පරීක්‍ෂා කළ අතර පෙර පරිදිම හැසිරීම නිරීක්ෂණය කරමි. ප්‍රවේශය සහ නාමාවලිය සහ එහි අන්තර්ගතය git init && git submodule add <repository> && git rm <name>පිටුපස තබයි. සමහර විට ඔබ එය ඉවත් කිරීමට පෙර උප මොඩියුලය ආරම්භ නොකළේ ද? .git/config.git/modules/<name>
fvgs

2
මට මෙය පළමුව ධාවනය කිරීම ආරක්ෂිත යැයි හැඟේ .. git subodule deinit -f the_submodule
danday74

1
Ar ජැරොඩ්ස්මිත් ඔව්, එය මාර්ගයයි. කරුණාකර යාවත්කාලීනය බලන්න.
tinlyx

481

මෙම ප්‍රශ්නයට පිළිතුරු බහුතරයක් යල් පැන ගිය, අසම්පූර්ණ හෝ අනවශ්‍ය ලෙස සංකීර්ණ ය.

Git 1.7.8 හෝ නව භාවිතා කර ක්ලෝන කරන ලද උප මොඩියුලයක් ඔබගේ දේශීය ගබඩාවේ උපරිම වශයෙන් අංශු හතරක් ඉතිරි වේ. එම අංශු හතර ඉවත් කිරීමේ ක්‍රියාවලිය පහත විධානයන් තුනෙන් ලබා දී ඇත:

# Remove the submodule entry from .git/config
git submodule deinit -f path/to/submodule

# Remove the submodule directory from the superproject's .git/modules directory
rm -rf .git/modules/path/to/submodule

# Remove the entry in .gitmodules and remove the submodule directory located at path/to/submodule
git rm -f path/to/submodule

39
මෙම පිළිතුරට එතරම් උච්චාරණ කිහිපයක් ඇත්තේ ඇයි? එම ජනප්‍රිය පිළිතුරු සියල්ලටම යමක් මග හැරී ඇත, හැකි තරම් සරල ආකාරයකින් උප මොඩියුලයක සියලුම අංශු සැබවින්ම ඉවත් කරන්නේ මෙයයි. සහ සටහන: විධාන අනුපිළිවෙල වැදගත් වේ.
mbdevpl

2
මගේම ප්‍රශ්නයට ප්‍රතිචාර දැක්වීම සඳහා: stackoverflow.com/questions/97875/rm-rf-equivalent-for-windows
තෝමස්

5
@mbdevpl පැමිණියේ පිළිගත් පිළිතුරෙන් වසර 3 කට පසුව වන අතර, මෙය පිළිගැනීමට OP ට ඒත්තු ගැන්වීමට කිසිවෙකුට නොහැකි වී ඇතැයි මම සිතමි
ඇන්ඩි

10
මෙය 2018 දී සංකීර්ණ නොවන පිළිතුරද?
වොරන් පී

9
මෙම .gitmodules ගොනුව තවමත් මෙම විධාන භාවිතයෙන් එල්ලිලා ඉන්නවා පෙනේ
Fractalf

206

සරල පියවර

  1. වින්‍යාස ඇතුළත් කිරීම් ඉවත් කරන්න:
    git config -f .git/config --remove-section submodule.$submodulename
    git config -f .gitmodules --remove-section submodule.$submodulename
  2. දර්ශකයෙන් නාමාවලිය ඉවත් කරන්න:
    git rm --cached $submodulepath
  3. කැපවන්න
  4. භාවිතයට නොගත් ගොනු මකන්න:
    rm -rf $submodulepath
    rm -rf .git/modules/$submodulename

කරුණාකර සටහන් කරන්න: $submodulepath ප්‍රමුඛ හෝ පසුපස කප්පාදුවක් අඩංගු නොවේ.

පසුබිම

ඔබ එසේ කළ විට git submodule add, එය එයට එකතු කරන්නේ .gitmodules, නමුත් ඔබ git submodule initඑය කළ පසු , එය එකතු වේ .git/config.

එබැවින් ඔබට මොඩියුල ඉවත් කිරීමට අවශ්‍ය නම්, නමුත් එය ඉක්මණින් ප්‍රතිස්ථාපනය කිරීමට හැකි නම්, මෙය කරන්න:

git rm --cached $submodulepath
git config -f .git/config --remove-section submodule.$submodulepath

ඔබ මෙය ස්ක්‍රිප්ටයකට දැමුවහොත් git rebase HEADපළමුව සහ git commitඅවසානයේ එය කිරීම හොඳ අදහසකි .

ද බලන්න ඇති ප්රශ්නවලට පිළිතුරු දීමට වේවැල් මම Git submodule unpopulate? .


1
මට උප මොඩියුල විශාල ප්‍රමාණයක් (සහ විශාල අවුලක්) ඇති බැවින් ඒවා සඳහා ලූපයක් හරහා යාමට මට සිදු විය. ඒවායින් බොහොමයක් නිශ්චිත නාමාවලියක් සහ ls ප්‍රතිදානය යටතේ පසුපස කප්පාදුවක් ඇති හෙයින්. මම ඒ වගේ දෙයක් කළා for dir in directory/*; do git rm --cached $dir; done.
පැබ්ලෝ ඔල්මොස් ද ඇගිලේරා සී.

මෙය පුනරාවර්තන මකාදැමීම සඳහා ස්ක්‍රිප්ටයේ භාවිතා කළ හැකි ලැයිස්තුව ලබා ගැනීම සඳහා - git config -f .git/config -l | cut -d'=' -f1 | grep "submodule.$MODPATH" | sed 's/^submodule\.//' | sed 's/\.url$//'- - යම් දෙයක් අවුල් වී ඇත්නම් ඔබ මෙය සැබවින්ම කළ යුතු බව පෙනේ, එසේ git submodule | grep -v '^+' | cut -d' ' -f3
නොමැතිනම්

2
දේශීය වෙනස්කම් සිදු නොකළ මොඩියුල ලැයිස්තුව ලබා ගැනීම සඳහා -git submodule | grep '^+' | cut -d' ' -f2
දෝෂ සංවර්ධක

සටහන, මට submodulenameද්විත්ව උපුටා දැක්වීම් ඇතුළත් කිරීමට සිදුවිය "submodulename".. .git/configගොනුව යොමු කරමින්
muon

සරල. කාර්යක්ෂම. 2.25.0 දී, පළමු පියවරෙන් පසු, ඔබ පියවර 2 ට පෙර .gitmodules වෙනස් කළ යුතුය.
මයිකල් ඩොනයිස්

83

නිර්දේශයන්ට අමතරව rm -Rf .git/modules/path/to/submodule, එකම නමකින් නව උප මොඩියුලයක් එක් කිරීමට ද මට සිදු විය (මගේ නඩුවේදී මම දෙබලක මුල් පිටපත වෙනුවට ආදේශ කළෙමි)


1
මටත් මේ ගැන කරදර තිබුණා. ඔබ උප මොඩියුලයක් එකම මාර්ගයකට නැවත ස්ථාපනය කිරීමට උත්සාහ කරන්නේ නම්, එය ඔබ සඳහන් කළ ස්ථානයේ ශාඛා තොරතුරු රඳවා තබා ගනී.
jangosteve

ස්තූතියි, මටත් මෙය අවශ්‍ය විය. Nt ඇන්ටන්, මම එකඟ වෙමි, මෙම තොරතුරු එක් කිරීම සඳහා මම ඉහළින්ම පිළිතුරු සංස්කරණය කළෙමි.
විලියම් ඩෙනිස්

ප්‍රතිස්ථාපනය කිරීම සඳහා මම --name විකල්පය භාවිතා කළෙමි ... stackoverflow.com/questions/14404704/…
joseph.hainline

60

එකතු කර ඇති උප මොඩියුලයක් ඉවත් කිරීමට:

git submodule add blah@blah.com:repos/blah.git lib/blah

ධාවනය:

git rm lib/blah

ඒක තමයි.

පැරණි අනුවාද සඳහා (සර්කා ~ 1.8.5) භාවිතා කරන්න:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah

1
+1 ඇත්තෙන්ම. Git 1.8.3 සිට ඇති එකම නිවැරදි පිළිතුර මෙයයි. නිවැරදි එකක් ලෙස පිළිගත යුතුය.
සනානාක්ස්

6
git rmතාමත් දේවල් දාලා .git/modules/. (2.5.4)
රුඩොල්ෆ් ඇඩම්කොවික්

1
Ud රුඩොල්ෆ් ඇඩම්කොවික් එය මට වැඩ කරයිද? නිශ්චිත මාර්ගය ගැලපෙන්නේ නම් පමණක් එය උප මොඩියුලයේ ප්‍රවේශය ඉවත් කරන බව සලකන්න; ඔබ උප මොඩියුලයක් ගෙන ගොස් එය භාවිතා git rmනොකරන්නේ නම්; මගේ මැක්හි 2.5.4 සමඟ ඉක්මන් පරීක්ෂණයක් .gitmodules ගොනුව යාවත්කාලීන කරයි, මෙහි ඇති ලේඛනයේ විස්තර කර ඇති පරිදි: git-scm.com/docs/git-rm#_submodules ... නමුත් ඔබට යම් ආකාරයක වේදිකා සංයෝජනයක් හමු වී ඇත්නම් මෙය සිදු නොවන තැන / අනුවාදය, ඔබ බොහෝ විට ඒ පිළිබඳව දෝෂයක් ඉදිරිපත් කළ යුතුය.
ඩග්

2
මෙම පිළිතුර සම්පූර්ණයෙන්ම නිවැරදි නොවේ. ඩර් සහ ගොනුවේ git rmදේවල් .git/modules/තබයි .git/config(උබුන්ටු, ගිට් 2.7.4). වෙනත් පිළිතුර 100% ක් ක්‍රියාත්මක වේ: stackoverflow.com/a/36593218/4973698
mbdevpl

50

ඔබ තුළ ඇති ප්රවේශය ඉවත් කළ යුතුය, .gitmodulesහා .git/config, හා ඉතිහාසය සිට මොඩියුලය බහලුම ඉවත්:

git rm --cached path/to/submodule

ඔබ git හි තැපැල් ලැයිස්තුවේ ලිවුවහොත් බොහෝ විට කවුරුහරි ඔබ වෙනුවෙන් ෂෙල් ස්ක්‍රිප්ට් එකක් කරනු ඇත.


කිසිදු ෂෙල් ස්ක්‍රිප්ටයක් අවශ්‍ය නොවේ, වෙනත් පිළිතුරකට උප මොඩියුලයක
mbdevpl

42

අන් අය විසින් සපයනු ලබන විසඳුම් ස්වයංක්‍රීය කිරීමට ඔබට අන්වර්ථයක් භාවිතා කළ හැකිය:

[alias]
  rms = "!f(){ git rm --cached \"$1\";rm -r \"$1\";git config -f .gitmodules --remove-section \"submodule.$1\";git config -f .git/config --remove-section \"submodule.$1\";git add .gitmodules; }; f"

එය ඔබගේ git වින්‍යාසය තුළ තබන්න, එවිට ඔබට මෙය කළ හැකිය: git rms path/to/submodule


-1 මෙය පැහැදිලිව වැරදියි. පළමුවැන්න: මෙය උපකල්පනය කරන්නේ උප මොඩියුලයේ නම සහ මාර්ගය සමාන වන අතර එය බොහෝ විට එසේ නොවේ . IE git clone https://github.com/hilbix/empty.git; cd empty; git submodule add https://github.com/hilbix/empty.git one; git mv one two; git rms two. දෙවන: ඔබ මෙය නිවැරදි මාර්ගයෙන් ක්‍රියාත්මක කළ යුතුය. gitඅන්වර්ථයන් වැඩපොළේ ඕනෑම තැනක වැඩ කළ යුතුය (නැතහොත් මනාව අසමත් වේ). තෙවනුව: සාමාන්‍යයෙන් එහි ඇති ගොනුවක් git config -f .git/configමෙන් උප මොඩියුල තුළ අසමත් වේ .git.
ටිනෝ

42

සාරාංශගත කිරීම සඳහා, ඔබ කළ යුත්තේ මෙයයි:

  1. path_to_submoduleVar සකසන්න (පසුපස කප්පාදුවක් නැත):

    path_to_submodule=path/to/submodule

  2. .Gitmodules ගොනුවෙන් අදාළ රේඛාව මකන්න:

    git config -f .gitmodules --remove-section submodule.$path_to_submodule

  3. .Git / config වෙතින් අදාළ කොටස මකන්න

    git config -f .git/config --remove-section submodule.$path_to_submodule

  4. $ Path_to_submodule දර්ශකයෙන් පමණක් ඉවත් කර ඉවත් කරන්න (තොරතුරු නැතිවීම වැළැක්වීමට)

    git rm --cached $path_to_submodule

  5. .Gitmodules වෙත සිදු කරන ලද වෙනස්කම් ලුහුබඳින්න

    git add .gitmodules

  6. සුපිරි ව්‍යාපෘතිය කරන්න

    git commit -m "Remove submodule submodule_name"

  7. දැන් සොයා නොගත් උප මොඩියුල ගොනු මකන්න

    rm -rf $path_to_submodule

    rm -rf .git/modules/$path_to_submodule


එබැවින් මගේ වෙනස පහතට ඇද ගන්නා අනෙක් සියල්ලන්ටම rm -rf $ path_to_submodule rm -rf ධාවනය කළ යුතුය .git / modules / $ path_to_submodule උප මොඩියුල හැඹිලිය ඉවත් කිරීමට?
j2emanue

යාවත්කාලීන කිරීමට මම නිර්දේශ කරමි git submodule update. උප මොඩියුල මාර්ග නිවැරදිව යාවත්කාලීන නොකළේ නම් (git දෝෂයක් විසි කරයි), ඒවා ඉවත් කරන්න:rm -rf .git/modules/<submodule> && rm -rf <submodule> && git submodule update
luissquall

40

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

git rm --cached subfolder
git add subfolder
git commit -m "Enter message here"
git push

FWIW , මම එය .gitකිරීමට පෙර ෆෝල්ඩරයද ඉවත් කළෙමි git add.


හරියටම මගේ නඩුව
zhekaus

38

මට deinitහොඳක් බව මට පෙනී ගියේය:

git submodule deinit <submodule-name>    
git rm <submodule-name>

Git docs වෙතින් :

deinit

ලබා දී submodule.$name ඇති උප මොඩියුලයන් ලියාපදිංචි නොකරන්න , එනම් .git / config වෙතින් මුළු කොටසම ඔවුන්ගේ වැඩ වෘක්ෂය සමඟ ඉවත් කරන්න .


එකඟ වන්න එකම විසඳුම. එය 2018 දී අද හොඳම ක්‍රමයයි)
woto

1
එය ඉවත් කළේ නැත .git / මොඩියුල / .. ඔබ ඒවා ඉවත් කළ යුතුය, පිළිතුර බලන්න @fvgs
Vilém Kurz

මෙම සරල හා පහසු විසඳුම අංක 1 නොවන්නේ මන්දැයි නොදනී
මාක් මැගොන්

AFAICS මෙය දන්නා නව gits සඳහා වඩාත්ම ආරක්‍ෂිත පිළිතුර ලෙස පෙනේ deinit, අනෙක් පිළිතුර.git/modules/submodule ඩිරෙක්ටරිය කලින් ඉවත් කරන බැවින් නව gits යන් දැන් හෝ පසුව අසමත් වන බව පෙනේ . එසේම (එහි මගේ අදහස බලන්න) ඉවත් කිරීම .git/modules/submoduleවැරදි මාවතක් විය හැකිය, එබැවින් මෙය භයානක පියවරකි, පසුව gitපැමිණිලි කළ විට පමණක් වඩාත් සුදුසුය (හෝ ඔබට අවශ්‍ය දේ 299% ක් විශ්වාස නම්, නිවැරදි මාර්ගය සහ සැබවින්ම අවශ්‍ය වේ).
ටිනෝ

git commitවැඩ කිරීමේ දී වේදිකාගත වෙනස්කම් කිරීමට ද මට අවශ්‍ය විය: modified .gitmodulesසහ deleted <submodule-path>.
යූරි පොස්නියැක්

20

මෙම වෙබ් අඩවියේ ඇති විවිධ පිළිතුරු අත්හදා බැලීමෙන් පසුව, මම මෙම විසඳුම සමඟ අවසන් වීමි:

#!/bin/sh
path="$1"
if [ ! -f "$path/.git" ]; then
  echo "$path is no valid git submodule"
  exit 1
fi
git submodule deinit -f $path &&
git rm --cached $path &&
rm -rf .git/modules/$path &&
rm -rf $path &&
git reset HEAD .gitmodules &&
git config -f .gitmodules --remove-section submodule.$path

මෙය ඔබ උප මොඩියුලය එක් කිරීමට පෙර තිබූ තත්වයම යථා තත්වයට පත් කරයි. ඔබට වහාම නැවත උප මොඩියුලය එක් කළ හැකිය, එය මෙහි බොහෝ පිළිතුරු සමඟ කළ නොහැකි විය.

git submodule add $giturl test
aboveScript test

මෙය සිදු කිරීමට කිසිදු වෙනසක් නොමැතිව පිරිසිදු පිරික්සීමක් ඔබට ලබා දේ.

මෙය අත්හදා බැලුවේ:

$ git --version
git version 1.9.3 (Apple Git-50)

git rm --cached $pathrm -rf $pathවෙනුවට ඔබ භාවිතා කරන්නේ ඇයි git rm -r $path?
bfontaine

-1 ඔබ උප මොඩියුලයක් තුළ උප මොඩියුලයක් ඉවත් කිරීමට උත්සාහ කරන්නේ නම් එය ක්‍රියා නොකරයි (උප මොඩියුලයට ගස් සෑදිය හැකිය!). ද මෙම අන්තරායකාරී වන්නේ සපිරි වේ උපුටා දක්වමින් අතුරුදහන් නිසා! උදාහරණය git submodule add https://github.com/hilbix/empty.git 'dangerous .. submodule'-> ඔබේ ස්ක්‍රිප්ට් එකෙන් 'භයානක .. උප මොඩියුලය' ඉවත් කිරීමට ඔබ උත්සාහ කරන විට, මෙය rm -rf ..බොහෝ විට ඔබට අවශ්‍ය දේ නොවේ ..
ටිනෝ

17

මම දැනට කරන්නේ 2012 දෙසැම්බරයේ (මෙම පිළිතුරු බොහොමයක් ඒකාබද්ධ කරයි):

oldPath="vendor/example"
git config -f .git/config --remove-section "submodule.${oldPath}"
git config -f .gitmodules --remove-section "submodule.${oldPath}"
git rm --cached "${oldPath}"
rm -rf "${oldPath}"              ## remove src (optional)
rm -rf ".git/modules/${oldPath}" ## cleanup gitdir (optional housekeeping)
git add .gitmodules
git commit -m "Removed ${oldPath}"

15

මෙන්න මම කළ දේ:

1.) .gitmodules ගොනුවෙන් අදාළ කොටස මකන්න. ඔබට පහත විධානය භාවිතා කළ හැකිය:

git config -f .gitmodules --remove-section "submodule.submodule_name"

2.) .gitmodulesවෙනස්කම් සිදු කරන්න

git add .gitmodules

3.) අදාළ කොටස මකන්න .git/config. ඔබට පහත විධානය භාවිතා කළ හැකිය:

git submodule deinit -f "submodule_name"

4.) gitlink ඉවත් කරන්න (පසුපස කප්පාදුවක් නැත):

git rm --cached path_to_submodule

5.) පිරිසිදු කිරීම .git/modules:

rm -rf .git/modules/path_to_submodule

6.) කැපවීම:

git commit -m "Removed submodule <name>"

7.) දැන් සොයා නොගත් උප මොඩියුල ගොනු මකන්න

rm -rf path_to_submodule

මේ සඳහා ස්තූතියි. මට නම්, පළමු පියවර තුනේ ඇණවුම 3), 1), 2) ලෙස නැවත සකස් කිරීමට මට සිදු විය. 1) පළමු fatal: no submodule mapping found in .gitmodules for path 'submodule_name'පියවර 3 දී ලබා දීම . පියවර දෙකම අවශ්‍ය වුවද. (git v2.8.2)
U007D

13

Git සම්බන්ධ බොහෝ විධානයන් ඇතුළත් වන git ව්‍යාපෘතියක් මම මෑතකදී සොයා ගතිමි: https://github.com/visionmedia/git-extras

එය ස්ථාපනය කර ටයිප් කරන්න:

git-delete-submodule submodule

එවිට දේවල් සිදු වේ. උප මොඩියුල නාමාවලිය ඔබේ ගබඩාවෙන් ඉවත් කර ඔබගේ ගොනු පද්ධතියේ තවමත් පවතී. එවිට ඔබට පහත පරිදි වෙනසක් කළ හැකිය : git commit -am "Remove the submodule".


වැඩ කිරීමේ මාවතේ තිබිය යුතු git delete-submoduleබැවින් ඔබට මෙය හැඳින්විය හැකිය git-extras. භාවිතා නොකිරීමට මම නිර්දේශ කරන බව සලකන්නgit-extras එය බොහෝ තැන්වල ලෙස, ඉතා සපිරි සහ භයානක . මොඩියුලය සහ මාර්ගය එක සමාන යැයි උපකල්පනය කරන පරිදි IE git-delete-submoduleපහත වැරදි මාර්ගය ඉවත් කරයි .git/modules/*(එය බොහෝ විට එසේ නොවේ), සහ ඔබ උප මොඩියුලයක් තුළ උප මොඩියුලයක් ඉවත් කිරීමට උත්සාහ කළහොත් එය නිවැරදිව ක්‍රියා නොකරයි. git-extras99% ක් ප්‍රයෝජනවත් විය හැකි නමුත්, එය භාවිතා කිරීම සම්පූර්ණයෙන්ම වැරදුනහොත් කරුණාකර පැමිණිලි නොකරන්න. ඔබට අනතුරු අඟවා ඇත!
ටිනෝ

10

මට ජෝන් ඩවුටාට්ගේ පියවර තවත් පියවරක් ඉදිරියට cdගෙන ගොස් උප මොඩියුලයේ නාමාවලිය තුළට ගෙන ගොස් Git ගබඩාව ඉවත් කිරීමට සිදු විය:

cd submodule
rm -fr .git

උප මොඩියුලයකට පැරණි සඳහනක් නොමැතිව මව් Git ගබඩාවේ කොටසක් ලෙස ලිපිගොනු මට කළ හැකිය.


git rm --cacheපියවරක් කිරීමට උත්සාහ කිරීමේදී "මාරාන්තික: git ගබඩාවක් නොවේ:" දෝෂයක් පසුකර යාමට මට මෙය කිරීමට සිදු විය .
රික්ඩී

9

මෙන්න මට අවශ්‍ය හෝ ප්‍රයෝජනවත් වූ පියවර 4 (වැදගත් ඒවා පළමුව):

git rm -f the_submodule
rm -rf .git/modules/the_submodule
git config -f .git/config --remove-section submodule.the_submodule
git commit -m "..."

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

නමුත් 2017 ජූලි වන විට, දෙවන පියවර.git/modules/ සඳහා දත්ත ඉවත් කිරීම අවශ්‍ය වේ , ඔබට උදා: අනාගතයේදී උප මොඩියුලය නැවත එක් කළ නොහැක.

ටින්ලික්ස්ගේ පිළිතුර සඳහන් කර ඇති පරිදි, සියලු git submoduleවිධානයන් ක්‍රියාත්මක වන බව පෙනෙන පරිදි, ඔබට git 1.8.5+ සඳහා ඉහත පියවර දෙකෙන් ගැලවිය හැකිය .

පියවර 3 the_submoduleගොනුවේ කොටස ඉවත් කරයි .git/config. මෙය සම්පූර්ණත්වය සඳහා කළ යුතුය. (ඇතුළත් කිරීම පැරණි git අනුවාද සඳහා ගැටළු ඇති කළ හැකි නමුත් මට පරීක්ෂා කිරීමට එකක් නොමැත).

මේ සඳහා, බොහෝ පිළිතුරු යෝජනා කරන්නේ භාවිතා කිරීමට ය git submodule deinit. එය වඩාත් පැහැදිලිව හා අවුල් සහගත ලෙස භාවිතා කිරීම මට පෙනේ git config -f .git/config --remove-section. අනුව GIT-submodule ප්රලේඛනය , git deinit:

ලබා දී ඇති උප මොඩියුලයන් ලියාපදිංචි නොකරන්න ... ඔබට ඇත්ත වශයෙන්ම ගබඩාවෙන් උප මොඩියුලයක් ඉවත් කිරීමට අවශ්‍ය නම් ඒ වෙනුවට git-rm [1] භාවිතා කරන්න .

අවසාන වශයෙන්, එසේ නොවුවහොත්, එසේ කිරීමේදී ඔබට git commitදෝෂයක් ඇතිවිය හැකිය git submodule summary(git 2.7 අනුව):

fatal: Not a git repository: 'the_submodule/.git'
* the_submodule 73f0d1d...0000000:

ඔබ පියවර 2 හෝ 3 කරන්නේද යන්න නොසලකා මෙය සිදු වේ.


7
project dir:     ~/foo_project/
submodule:       ~/foo_project/lib/asubmodule
- - - - - - - - - - - - - - - - - - - - - - - - -
run:
  1.   cd ~/foo_project
  2.   git rm lib/asubmodule && 
          rm .git/modules/lib/asubmodule && 
            git submodule lib/asubmodule deinit --recursive --force

7

.Submodule (නිශ්චිත නම අමතක) සැඟවුණු ගොනුව මට හමු විය, එහි ලැයිස්තුවක් ඇත ... ඔබට ඒවා තනි තනිව මකා දැමිය හැකිය. මට එකක් තිබුනා, ඒ නිසා මම එය මකා දැමුවා. සරලයි, නමුත් එය Git අවුල් කරයි, මන්ද උප මොඩියුලයට කිසිවක් සම්බන්ධ වී ඇත්දැයි මම නොදනිමි. ලිබෙට්පන්ගේ සුපුරුදු උත්ශ්‍රේණිගත කිරීමේ ගැටලුව පසෙක තබා මේ වන විට එය හරි යැයි පෙනේ, නමුත් එය (බලාපොරොත්තු රහිතව) සම්බන්ධයක් නැත.

කිසිවෙකු අතින් මකාදැමීම පළ නොකළ බව සටහන් විය



7

Git 2.17 සහ ඊට ඉහළින් එය හුදෙක්:

git submodule deinit -f {module_name}
git add {module_name}
git commit

වැඩ කළේ නැත, නැත, git 2.17.1නැත git 2.20.1. කෙසේ වෙතත් දෙකම සඳහා වැඩ කිරීම git rmවෙනුවට භාවිතා කිරීම git add. සටහන්: දේවල් පිරිසිදු නම් -fඅවශ්‍ය නොවේ . කිරීමට වග බලා ගන්න විකල්ප භාවිතා කවදාවත් සමග gitඔබ අනපේක්ෂිත දත්ත අහිමි එරෙහිව ආරක්ෂා කිරීමට අවශ්ය නම්. මෙය නිසි පරිදි ක්‍රියාත්මක වන බව සලකන්න .git/modules/{module_name}. එය එහි තබා ගැනීම වඩාත් සුදුසු වන්නේgit නිවැරදි (!) මුද්‍රණය කිරීම නිසා යම් දෙයක් අවහිර වී ඇත්නම් ඉදිරියට යා හැකි ආකාරයයි.
ටිනෝ

4

ඔබ දැන් උප මොඩියුලය එකතු කර ඇත්නම් සහ උදාහරණයක් ලෙස ඔබ වැරදි උප මොඩියුලයක් එක් කළහොත් හෝ ඔබ එය වැරදි ස්ථානයට එකතු කළේ git stashනම්, ෆෝල්ඩරය මකන්න. මෙය උපකල්පනය කරන්නේ ඔබ මෑත කාලීන repo හි කළ එකම දෙය උප මොඩියුලය එකතු කිරීමයි.


3

පා er කයාගේ ප්‍රයෝජනය සඳහා, මෙය මෙහි සාරාංශ කිරීමට උත්සාහ කර ඇති අතර, අපේක්ෂිත පරිදි දේවල් ක්‍රියාත්මක නොවන්නේ නම් එය කරන්නේ කෙසේද යන්න පිළිබඳ පියවරෙන් පියවර උපදෙස් ලබා දේ. උප මොඩියුලයක් ඉවත් කිරීම සඳහා අනුවාදය සහ ඊට ඉහළින් පරීක්ෂා කර ඇති සහ ආරක්ෂිත ක්‍රමය පහත දැක්වේ :git2.17

submodule="path/to/sub"              # no trailing slash!
git submodule deinit -- "$submodule"
git rm -- "$submodule"
  • මෙය ඔබට ප්‍රයෝජනවත් නොවන්නේ නම්, පහත බලන්න.
  • විකල්ප නොමැත. භයානක කිසිවක් නැත. වැඩි යමක් කිරීම ගැන පවා නොසිතන්න!
  • ඩෙබියන් බස්ටර් 2.20.1සහ උබුන්ටු සමඟ පරීක්ෂා කර ඇත 18.04 2.17.1.
  • "$submodule" නම තැබිය යුත්තේ කොතැනද යන්න අවධාරණය කිරීම සඳහා වන අතර, ඔබ අවකාශයන් හා ඒ හා සමාන දේ ගැන සැලකිලිමත් විය යුතුය
  • වින්ඩෝස් හි පළමු පේළිය නොසලකා හරිමින් උප "$submodule"මොඩියුලයට නිසි ලෙස නියම කර ඇති මාර්ගයක වින්ඩෝස් මාර්ගය වෙනුවට ආදේශ කරන්න. (මම වින්ඩෝස් නොවේ)

අවවාදයයි!

.gitඩිරෙක්ටරියේ ඇතුලත කිසි විටෙකත් ස්පර්ශ නොකරන්න ! ඇතුළත සංස්කරණය .gitකිරීම අඳුරු පැත්තට ඇතුල් වේ. ඕනෑම වියදමකින් ay ත්ව සිටින්න!

ඔව්, ඔබට මීට දොස් පැවරිය හැකිය git, අතීතයේ දී බොහෝ ප්‍රයෝජනවත් දෑ අතුරුදහන් විය git. නැවත උප මොඩියුල ඉවත් කිරීමට සුදුසු ක්‍රමයක් මෙන්.

මම හිතන්නේ ලේඛනගත කිරීමේදී ඉතා භයානක කොටසක් තිබේ git submodule. එය $GIT_DIR/modules/<name>/ඔබම ඉවත් කිරීමට නිර්දේශ කරයි . මගේ අවබෝධය අනුව මෙය සරල වැරැද්දක් පමණක් නොව, එය අතිශයින්ම භයානක වන අතර අනාගතයේ දී විශාල හිසරදයක් ඇති කරයි! පහත බලන්න.

එය සටහන් කර ගන්න

git module deinit

යනු සෘජු ප්‍රතිලෝම වේ

git module init

එහෙත්

git submodule deinit -- module
git rm -- module

එය ද ප්‍රතිලෝම වේ

git submodule add -- URL module
git submodule update --init --recursive -- module

සමහර විධානයන් මූලික වශයෙන් එක් දෙයකට වඩා වැඩි යමක් කළ යුතු නිසා:

  • git submodule deinit -- module
    • (1) යාවත්කාලීන කිරීම් .git/config
  • git rm
    • (2) මොඩියුලයේ ගොනු ඉවත් කරයි
    • (3) එමඟින් උප මොඩියුලයේ උප මොඩියුලයන් පුනරාවර්තනය කරයි
    • (4) යාවත්කාලීන කිරීම් .gitmodules
  • git submodule add
    • වෙත දත්ත ඇද ගනී .git/modules/NAME/
    • (1) එසේ කරයි git submodule init, එබැවින් යාවත්කාලීන වේ.git/config
    • (2) git submodule update, එසේ නම්, මොඩියුලය නොවරදවාම පරීක්ෂා කරයි
    • (4) යාවත්කාලීන කිරීම් .gitmodules
  • git submodule update --init --recursive -- module
    • අවශ්‍ය නම් වැඩිදුර දත්ත ලබා ගනී
    • (3) උප මොඩියුලයේ උප මොඩියුල නැවත නැවත පරීක්ෂා කරයි

මෙය සම්පුර්ණයෙන්ම සමමිතික විය නොහැක, මන්ද එය තදින් සමමිතිකව තබා ගැනීමෙන් වැඩි තේරුමක් නැත. සරලවම විධාන දෙකකට වඩා අවශ්‍ය නොවේ. "දත්ත ඇද ගැනීම" යන්නෙන් ගම්‍ය වන්නේ ඔබට එය අවශ්‍ය නිසා, නමුත් හැඹිලි තොරතුරු ඉවත් කිරීම සිදු නොකෙරේ, මන්ද මෙය කිසිසේත් අවශ්‍ය නොවන අතර වටිනා දත්ත අතුගා දැමිය හැකිය.

මෙය සැබවින්ම නවකයින්ට ප්‍රහේලිකාවක් වන නමුත් මූලික වශයෙන් එය හොඳ දෙයකි: gitපැහැදිලිවම එය කර එම අයිතිය කර ඇති අතර තවත් බොහෝ දේ කිරීමට උත්සාහ නොකරයි. gitතවත් "ඊයර්ලෙජෙන්ඩ් වොල්මිල්ච්සෝ" ("ඊයර්ලෙජෙන්ඩ් වොල්මිල්ච්සෝ" මට "ස්විට්සර්ලන්ත හමුදා පිහියක නපුරු අනුවාදයක්" ලෙස පරිවර්තනය කිරීම වෙනුවට විශ්වාසදායක කාර්යයක් කළ යුතු මෙවලමකි.

ඒ නිසා මිනිසුන්ගේ පැමිණිලි මට තේරෙනවා, "ඇයි gitමට පැහැදිලි දේ නොකරන්නේ ". මෙයට හේතුව මෙහි “පැහැදිලිව” රඳා පවතින්නේ දෘෂ්ටි කෝණයෙන් ය. සෑම තත්වයකම විශ්වසනීයත්වය වඩා වැදගත් ය. එබැවින් ඔබට බොහෝ විට පැහැදිලිව පෙනෙන දෙය විය හැකි සියලු තාක්ෂණික අවස්ථාවන්හි නිවැරදි දෙය නොවේ. කරුණාකර එය මතක තබා ගන්න: AFAICSgit අනුගමනය කරන්නේ තාක්‍ෂණික මාවත මිස සමාජ මාර්ගය නොවේ. (එබැවින් දක්ෂ නම: git)

මෙය අසමත් වුවහොත්

පහත දැක්වෙන විධානයන් නිසා ඉහත විධානයන් අසමත් විය හැකිය:

  • ඔබේ gitවයස වැඩියි. ඉන්පසු නව එකක් භාවිතා කරන්න git. (කෙසේද යන්න පහත බලන්න.)
  • ඔබ සතුව අවිධිමත් දත්ත ඇති අතර දත්ත අහිමි විය හැකිය. පළමුව ඒවා කැප කිරීම වඩා හොඳය.
  • ඔබේ උප මොඩියුලය git cleanඅර්ථයෙන් පිරිසිදු නැත . ඉන්පසු එම විධානය භාවිතයෙන් ඔබේ උප මොඩියුලය පිරිසිදු කරන්න. (පහත බලන්න.)
  • ඔබ අතීතයේ යම් දෙයක් කර ඇති අතර එය සහාය නොදක්වයි git. එවිට ඔබ අඳුරු පැත්තේ සිටින අතර දේවල් අවලස්සන හා සංකීර්ණ වේ. (සමහර විට වෙනත් යන්ත්‍රයක් භාවිතා කිරීමෙන් එය නිවැරදි වේ.)
  • සමහර විට අසමත් වීමට තවත් ක්‍රම තිබේ මම නොදැන සිටිමි (මම gitබලය භාවිතා කරන්නෙක් පමණි.)

හැකි විසඳුම් අනුගමනය කරයි.

නව එකක් භාවිතා කරන්න git

ඔබගේ යන්ත්රය පැරණි නැත ද නම් submodule deinitඔබේ git. ඔබට යාවත්කාලීන කිරීමට අවශ්‍ය නැතිනම් (හෝ කළ හැකිය) git, පසුව නව යන්ත්‍රයක් සමඟ වෙනත් යන්ත්‍රයක් භාවිතා කරන්න git! gitසම්පුර්ණයෙන්ම බෙදා හැරීමට අදහස් කරන අතර, එම නිසා ඔබට gitකාර්යය ඉටු කිරීම සඳහා තවත් එකක් භාවිතා කළ හැකිය :

  • workhorse:~/path/to/worktree$ git status --porcelain කිසිවක් ප්‍රතිදානය නොකළ යුතුය ! එය එසේ නම්, පළමුව දේවල් පිරිසිදු කරන්න!
  • workhorse:~/path/to/worktree$ ssh account@othermachine
  • othermachine:~$ git clone --recursive me@workhorse path/to/worktree/.git TMPWORK && cd TMPWORK
  • දැන් උප මොඩියුල දේවල් කරන්න
  • othermachine:~/TMPWORK$ git commit . -m . && exit
  • workhorse:~/path/to/worktree$ git fetch account@othermachine:TMPWORK/.git
  • workhorse:~/path/to/worktree$ git merge --ff-only FETCH_HEAD. මෙය ක්‍රියා නොකරන්නේ නම් භාවිතා කරන්නgit reset --soft FETCH_HEAD
  • git statusනැවත පිරිසිදු වන තුරු දැන් දේවල් පිරිසිදු කරන්න. පළමු පියවරට ස්තූතිවන්ත වන්නට පෙර ඔබට එය පිරිසිදු කර ඇති නිසා ඔබට එය කළ හැකිය.

මෙය othermachineඕනෑම වීඑම් එකක් හෝ වින්ඩෝස් යටතේ උබුන්ටු ඩබ්ලිව්එස්එල් විය හැකිය. පවා chroot(නමුත් මම ඔබ නම් නිසා, ඔබ නොවන මූල බව උපකල්පනය rootඑය නව යාවත්කාලීන වැඩි පහසු විය යුතු git.)

ඔබට sshඇතුළුවිය නොහැකි නම්, gitගබඩාවන් ප්‍රවාහනය කිරීමට දුම්රිය මාර්ග රාශියක් ඇති බව සලකන්න . ඔබට ඔබගේ වැඩ පත්‍රිකාව සමහර USB සැරයටියකින් ( .gitනාමාවලිය ඇතුළුව ) පිටපත් කළ හැකිය , සහ සැරයටියෙන් ක්ලෝන කරන්න. නැවත පිරිසිදු ආකාරයකින් දේවල් ලබා ගැනීම සඳහා පිටපත ක්ලෝන කරන්න. ඔබේ උප මොඩියුල වෙනත් යන්ත්‍ර වලින් කෙලින්ම ප්‍රවේශ විය නොහැකි නම් මෙය PITA එකක් විය හැකිය. නමුත් මේ සඳහා විසඳුමක් ද ඇත:

git config --add url.NEWURLPREFIX.insteadOf ORIGINALURLPREFIX

ඔබට මෙම ගුණනය භාවිතා කළ හැකි අතර මෙය සුරකිනු ඇත $HOME/.gitconfig. වගේ දෙයක්

git config --add 'url./mnt/usb/repo/.insteadof' https://github.com/

වැනි URL නැවත ලියයි

https://github.com/XXX/YYY.git

වෙත

/mnt/usb/repo/XXX/YYY.git

ඔබ gitමේ වගේ ප්‍රබල අංග වලට හුරුවීමට පටන් ගන්නේ නම් එය පහසුය .

මුලින්ම දේවල් පිරිසිදු කරන්න

අතින් පිරිසිදු කිරීම හොඳයි, මන්ද මේ ආකාරයෙන් ඔබට අමතක වූ සමහර දේවල් ඔබ හඳුනා ගනී.

  • Git විසින් සුරකින ලද දේවල් ගැන පැමිණිලි කරන්නේ නම්, එය සිදු කර ආරක්ෂිත තැනකට තල්ලු කරන්න.
  • Git සමහර ඉතුරු ගැන පැමිණිලි කරන්නේ නම් git statusසහ git clean -ixfdඔබේ මිතුරා වේ
  • විකල්ප සිට දීමෙන් වැලකී සිටීමට උත්සාහ කරන්න rmසහ deinitඔබට හැකි තාක්. ඔබ ප්‍රෝ නම් විකල්ප (වැනි -f) gitහොඳයි. නමුත් ඔබ මෙහි පැමිණි විට, ඔබ submoduleප්‍රදේශයේ එතරම් අත්දැකීම් නොමැති අය විය හැකිය . එබැවින් කණගාටු වෙනවාට වඩා ආරක්ෂිත වන්න.

උදාහරණයක්:

$ git status --porcelain
 M two
$ git submodule deinit two
error: the following file has local modifications:
    two
(use --cached to keep the file, or -f to force removal)
fatal: Submodule work tree 'two' contains local modifications; use '-f' to discard them
$ cd two
$ git submodule deinit --all
error: the following file has local modifications:
    md5chk
(use --cached to keep the file, or -f to force removal)
fatal: Submodule work tree 'md5chk' contains local modifications; use '-f' to discard them
$ cd md5chk
$ git submodule deinit --all
error: the following file has local modifications:
    tino
(use --cached to keep the file, or -f to force removal)
fatal: Submodule work tree 'tino' contains local modifications; use '-f' to discard them
$ cd tino
$ git status --porcelain
?? NEW
$ git clean -i -f -d
Would remove the following item:
  NEW
*** Commands ***
    1: clean                2: filter by pattern    3: select by numbers    4: ask each
    5: quit                 6: help
What now> 1
Removing NEW
$ cd ../../..
$ git status --porcelain
$ git submodule deinit two
Cleared directory 'two'
Submodule 'someunusedname' (https://github.com/hilbix/src.git) unregistered for path 'two'

ඔබට පෙනේ, -fඅවශ්‍ය නොවේ submodule deinit. දේවල් පිරිසිදු නම්, git cleanඅර්ථයෙන්. git clean -xඅවශ්‍ය නොවන බව ද සටහන් කර ගන්න . මෙයින් අදහස් git submodule deinitකරන්නේ නොසලකා හරින ලද සොයා නොගත් ගොනු කොන්දේසි විරහිතව ඉවත් කිරීමයි. මෙය සාමාන්‍යයෙන් ඔබට අවශ්‍ය දෙයයි, නමුත් ඒ ගැන අමතක නොකරන්න. සමහර විට නොසලකා හරින ලද ලිපිගොනු නැවත ගණනය කිරීම සඳහා පැය කිහිපයක් ගතවන හැඹිලි දත්ත වැනි වටිනා විය හැකිය.

කිසි විටෙකත් ඉවත් නොකරන්නේ ඇයි $GIT_DIR/modules/<name>/?

බොහෝ විට හැඹිලි ගබඩාව ඉවත් කිරීමට මිනිසුන්ට අවශ්‍ය වන්නේ ඔවුන් පසුව ගැටලුවකට මුහුණ දීමට බිය වන බැවිනි. මෙය සත්‍යයකි, නමුත් එම “ගැටලුව” තුළට දිවීම එය විසඳීමට නිවැරදි ක්‍රමයයි! නිවැරදි කිරීම පහසු වන අතර, නිවැරදිව කළහොත් ඔබට සතුටින් ජීවත් විය හැකිය. ඔබ විසින්ම දත්ත ඉවත් කිරීමට වඩා මෙය කරදරකාරී කරදර වළක්වයි.

උදාහරණයක්:

mkdir tmptest &&
cd tmptest &&
git init &&
git submodule add https://github.com/hilbix/empty.git two &&
git commit -m . &&
git submodule deinit two &&
git rm two &&
git commit -m . &&
git submodule add https://github.com/hilbix/src.git two

අවසාන පේළිය පහත දැක්වෙන දෝෂය ප්‍රතිදානය කරයි:

A git directory for 'two' is found locally with remote(s):
  origin    https://github.com/hilbix/empty.git
If you want to reuse this local git directory instead of cloning again from
  https://github.com/hilbix/src.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.

මෙම දෝෂය ඇයි? මක්නිසාද යත් .git/modules/two/මීට පෙර https://github.com/hilbix/empty.git වෙතින් ජනගහනය වී ඇති අතර දැන් වෙනත් දෙයකින් නැවත ජනගහනය වනු ඇත, එනම් https://github.com/hilbix/src.git . ඔබ එය https://github.com/hilbix/empty.git වෙතින් නැවත ජනනය කළහොත් ඔබට මෙය නොපෙනේ

දැන් මොකද කරන්නේ? හොඳයි, කී ලෙසම කරන්න! භාවිත--name someunusedname

git submodule add --name someunusedname https://github.com/hilbix/src.git two

.gitmodules එවිට පෙනේ

[submodule "someunusedname"]
    path = two
    url = https://github.com/hilbix/src.git

ls -1p .git/modules/ ලබා දෙයි

someunusedname/
two/

මේ ආකාරයට අනාගතයේදී ඔබ ශාඛා මාරු කළ හැකිය / ඉදිරි පියවරක් සහ කොමිට් කවදාවත් නැවත ඕනෑම අමාරුවේ ලැබෙනු ඇත නිසා, two/විවිධ (හා සමහරවිට නොපෑහෙන) උඩුගං නිධි දෙකක් සහිත. හොඳම දේ නම්: ඔබ දෙදෙනාම දේශීයව හැඹිලි තබා ගන්න.

  • මෙය ඔබට පමණක් සත්‍ය නොවේ. ඔබේ ගබඩාව භාවිතා කරන අනෙක් සියල්ලන්ටම එය සත්‍ය වේ.
  • තවද ඔබට ඉතිහාසය අහිමි නොවේ. පැරණි උප මොඩියුලයේ නවතම අනුවාදය තල්ලු කිරීමට ඔබට අමතක වූවා නම්, ඔබට දේශීය පිටපත ඇතුළත් කර පසුව එය කළ හැකිය. කවුරුහරි සමහර උප මොඩියුල තල්ලු කිරීමට අමතක කිරීම සාමාන්‍ය දෙයක් බව සලකන්න (මන්ද මෙය නවකයන්ට හුරු පුරුදු වන තුරු PITA එකක් වන බැවිනි git).

කෙසේ වෙතත් ඔබ හැඹිලි නාමාවලිය ඉවත් කළහොත්, විවිධ පිරික්සුම් දෙකම එකිනෙක මත පැටලෙනු ඇත, මන්ද ඔබ --nameවිකල්ප භාවිතා නොකරන නිසා නේද ? එබැවින් ඔබ පිටවීම සිදු කරන සෑම අවස්ථාවකම ඔබට .git/modules/<module>/නැවත නැවතත් නාමාවලිය ඉවත් කිරීමට සිදුවේ . මෙය අතිශයින්ම කරදරකාරී වන අතර එවැනි දෙයක් භාවිතා කිරීම දුෂ්කර කරයි git bisect.

එබැවින් මෙම මොඩියුල නාමාවලිය ස්ථානගත කරන්නෙකු ලෙස තබා ගැනීමට ඉතා තාක්ෂණික හේතුවක් තිබේ. පහත යමක් ඉවත් කිරීමට නිර්දේශ කරන පුද්ගලයින් .git/modules/වඩා හොඳින් නොදනිති, නැතහොත් git bisectමෙය එවැනි උප මොඩියුලයක නොගැලපීම ඉක්මවා ගියහොත් භාවිතා කිරීමට නොහැකි තරම් ප්‍රබල ලක්ෂණ ඇති බව ඔබට පැවසීමට අමතක කරති .

තවත් හේතුවක් ඉහත පෙන්වා ඇත. බලන්න ls. එහි ඔබ දකින්නේ කුමක්ද?

හොඳයි, මොඩියුලයේ 2 වන ප්‍රභේදය two/යටතේ නොවේ .git/modules/two/, එය යටතේ ඇත .git/modules/someunusedname/! ඉතින් වගේ දේවල් git rm $module; rm -f .git/module/$moduleසම්පූර්ණයෙන්ම වැරදියි! ඉවත් කිරීම සඳහා ඔබ උපදෙස් module/.gitහෝ .gitmodulesනිවැරදි දේ සොයා ගත යුතුය !

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

දාර්ශනික දෘෂ්ටි කෝණයෙන් බලන කල ඉතිහාසය අතුගා දැමීම සැමවිටම වැරදිය. සුපුරුදු පරිදි ක්වොන්ටම් යාන්ත්‍ර විද්‍යාව හැර , නමුත් මෙය සම්පූර්ණයෙන්ම වෙනස් දෙයකි.

FYI ඔබ බොහෝ විට එය අනුමාන කළා: හිල්බික්ස් මගේ GitHub ගිණුමයි.


තනතුරක මෙම විශ්වකෝෂය සත්‍ය පිළිතුර දැක්වීමට විශාල / පැහැදිලි උප ශීර්ෂයන් සහිත පැහැදිලි කොටස් වලට බෙදිය යුතුය, සහ විවිධ “දෝශ නිරාකරණ” / ​​යනාදී කොටස්.
ඇන්ඩ rew

2

සාරාංශගත කිරීම සඳහා, ඔබ කළ යුත්තේ මෙයයි:

Path_to_submodule var සකසන්න (පසුපස කප්පාදුවක් නැත):

path_to_submodule=path/to/submodule

.Gitmodules ගොනුවෙන් අදාළ රේඛාව මකන්න:

git config -f .gitmodules --remove-section submodule.$path_to_submodule

.Git / config වෙතින් අදාළ කොටස මකන්න

git config -f .git/config --remove-section submodule.$path_to_submodule

$ Path_to_submodule දර්ශකයෙන් පමණක් ඉවත් කර ඉවත් කරන්න (තොරතුරු නැතිවීම වැළැක්වීමට)

git rm --cached $path_to_submodule

.Gitmodules වෙත සිදු කරන ලද වෙනස්කම් ලුහුබඳින්න

git add .gitmodules

සුපිරි ව්‍යාපෘතිය කරන්න

git commit -m "Remove submodule submodule_name"

දැන් සොයා නොගත් උප මොඩියුල ගොනු මකන්න

rm -rf $path_to_submodule

rm -rf .git/modules/$path_to_submodule

මෙයද බලන්න: විකල්ප මාර්ගෝපදේශ රේඛා


'Git subodule add' එකකින් පසුව කිසි විටෙකත් එය සිදු නොකර උප මොඩියුලයක් ඉවත් කරන්නේ කෙසේදැයි කරුණාකර ඔබට මෙය දීර් extend කළ හැකිද? මම හිතන්නේ එවැනි අවස්ථාවකදී උප මොඩියුලය ඉවත් කිරීමට කිසිදු කැපවීමක් අවශ්‍ය නොවේ, නේද?
කාලෝ වුඩ්

මම ඔබට හුවමාරු කිරීමට අවශ්ය හිතන්නේ git rm --cached $path_to_submoduleහා git add .gitmodulesකිසිදු? පළමු විධානයෙහි fatal: Please stage your changes to .gitmodules or stash them to proceedමට දෝෂයක් ඇතිවිය: මන්දයත් මා විසින් අස්ථිර වෙනස්කම් සිදු කර ඇති .gitmodulesබැවිනි. හදන්නෙත් git add .gitmodulesපළමු විසඳිය නොහැකි.
කාලෝ වුඩ්

2

එය පහසු ය:

  1. සිට කොටස ඉවත් කරන්න .gitmodules
  2. අමතන්න: git add .gitmodules
  3. අමතන්න: git submodule deinit <path to submodule>
  4. අමතන්න: git rm <path to submodule>
  5. කැපවී තල්ලු කරන්න

ඔබේ ව්‍යාපෘතියේ මොඩියුල ගොනු අතින් මකා දැමීමට ඔබට සිදුවේ.


2
මට නම් එය කැඳවීමට ප්රමාණවත් විය git submodule deinit <submodule_name>හා git rm <path_to_submodule>. අන්තිම විධානය ස්වයංක්‍රීයව ඇතුලත ඇතුලත් කරයි .gitmodules. Git 2.17
Dmytro Ovdiienko

1

ඉවත් කිරීමේ ක්‍රියාවලිය පහසු කිරීම සඳහා මම bash ස්ක්‍රිප්ට් එකක් නිර්මාණය කර ඇත්තෙමි. ඉතිරි නොවූ ගබඩාවේ වෙනස්කම් තිබේදැයි පරීක්ෂා කර තහවුරු කිරීමක් ඉල්ලා සිටී. එය os xසාමාන්‍ය ලිනක්ස් ඩිස්ට්‍රෝස් වලද ක්‍රියාත්මක වන්නේ දැයි දැන ගැනීම සිත්ගන්නාසුළු වනු ඇත:

https://gist.github.com/fabifrank/cdc7e67fd194333760b060835ac0172f


0

නවතම git හි git උප මොඩියුලය ඉවත් කිරීම සඳහා 4 මෙහෙයුමක් අවශ්‍ය වේ.

  • තුළ අනුරූප ප්‍රවේශය ඉවත් කරන්න .gitmodules
  • අදියර වෙනස්වීම් git add .gitmodules
  • උප මොඩියුල නාමාවලිය ඉවත් කරන්න git rm --cached <path_to_submodule>
  • එය කරන්න git commit -m "Removed submodule xxx"

0

පහත දැක්වෙන පරිදි ඔබට එය එක පේළියේ විධානයකින් බාෂ් ස්ක්‍රිප්ට් සමඟ කළ යුතු නම්:

$ cd /path/to/your/repo && /bin/bash $HOME/remove_submodule.sh /path/to/the/submodule

$HOMEDir හි bash ස්ක්‍රිප්ට් ගොනුවක් සාදන්න, එනම් remove_submodule.sh:

#!/bin/bash

git config -f .gitmodules --remove-section submodule.$1
git config -f .git/config --remove-section submodule.$1
git rm --cached $1
git add .gitmodules
git commit -m "Remove submodule in $1"
rm -rf $1
rm -rf .git/modules/$1
git push origin $(git rev-parse --abbrev-ref HEAD) --force --quiet


0
  • ධාවනය කිරීමෙන් උප මොඩියුලයක් මකා දැමිය හැකිය git rm <submodule path> && git commit. මෙය භාවිතයෙන් ඉවත් කළ හැකිය git revert.
    • මකාදැමීම මඟින් සුපිරි ව්‍යාපෘතියේ ලුහුබැඳීමේ දත්ත ඉවත් කරනු ලැබේ, ඒවා gitlink ප්‍රවේශය සහ .gitmodulesගොනුවේ කොටස වේ .
    • උප මොඩියුලයේ ක්‍රියාකාරී නාමාවලිය ගොනු පද්ධතියෙන් ඉවත් කරනු ලැබේ, නමුත් වෙනත් ගබඩාවකින් ලබා ගැනීමකින් තොරව අතීත කොමිස් පරීක්ෂා කර බැලීමට හැකි වන පරිදි Git නාමාවලිය වටා තබා ඇත.
  • උප මොඩියුලයක් සම්පූර්ණයෙන්ම ඉවත් කිරීමට, අතිරේකව අතින් මකන්න$GIT_DIR/modules/<name>/ .

මූලාශ්රය: git help submodules


-1

Git උප මොඩියුලය ඉවත් කිරීම

gitපියවර 4 ට අඩු උප මොඩියුලයක් ඉවත් කිරීම අවශ්‍ය වේ.

  1. .gitmodulesගොනුවේ අනුරූප ඇතුළත් කිරීම ඉවත් කරන්න . ප්‍රවේශය පහත සඳහන් පරිදි විය හැකිය
[submodule "path_to_submodule"]
    path = path_to_submodule
    url = url_path_to_submodule
  1. අදියර වෙනස්වීම් git add .gitmodules
  2. උප මොඩියුල නාමාවලිය ඉවත් කරන්න git rm --cached <path_to_submodule>.
  3. එය සිදු git commit -m "Removed submodule xxx"කර තල්ලු කරන්න.

දේශීය ක්ලෝන පිටපතෙහි උප මොඩියුලය සම්පූර්ණයෙන්ම පිරිසිදු කිරීම සඳහා පහත සඳහන් තවත් පියවර 2 ක් අවශ්‍ය වේ.

  1. .git/configගොනුවේ අනුරූප ඇතුළත් කිරීම ඉවත් කරන්න . ප්‍රවේශය පහත සඳහන් පරිදි විය හැකිය
[submodule "path_to_submodule"]
    url = url_path_to_submodule
  1. කරන්න rm -rf .git/modules/path_to_submodule

මෙම 5 වන සහ 6 වන පියවරයන් විසින් සිදු කළ යුතු කිසිදු වෙනසක් ඇති නොකරයි.


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.