අළුත් නොකල ගොනු ඇතුළුව වැඩ කරන නාමාවලියෙන් සියලුම වෙනස්කම් මකා දැමිය හැකි ආකාරය. එය git checkout -f
සිදු වන බව මම දනිමි , නමුත් එය අවසාන කැපවීමෙන් පසුව නිර්මාණය කරන ලද නව සොයා නොගත් ගොනු මකා නොදමනු ඇත.
එය කරන්නේ කෙසේදැයි යමෙකුට අදහසක් තිබේද?
අළුත් නොකල ගොනු ඇතුළුව වැඩ කරන නාමාවලියෙන් සියලුම වෙනස්කම් මකා දැමිය හැකි ආකාරය. එය git checkout -f
සිදු වන බව මම දනිමි , නමුත් එය අවසාන කැපවීමෙන් පසුව නිර්මාණය කරන ලද නව සොයා නොගත් ගොනු මකා නොදමනු ඇත.
එය කරන්නේ කෙසේදැයි යමෙකුට අදහසක් තිබේද?
Answers:
git reset --hard # removes staged and working directory changes
## !! be very careful with these !!
## you may end up deleting what you don't want to
## read comments and manual.
git clean -f -d # remove untracked
git clean -f -x -d # CAUTION: as above but removes ignored files like config.
git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)
අතින් මකා දැමිය යුතු දේ බැලීමට, එය සැබවින්ම මකා නොදමමින්, -n
ධජය භාවිතා කරන්න (මෙය මූලික වශයෙන් පරීක්ෂණ ධාවනයකි). ඔබ සැබවින්ම මකා දැමීමට සූදානම් වූ විට, -n
ධජය ඉවත් කරන්න :
git clean -nfd
git clean -fxd
ඔබ කරන්නේ කුමක්දැයි ඔබ නොදන්නේ නම් ඇත්තෙන්ම භයානක විය හැකිය. ඔබේ දත්ත සමුදාය වැනි ඉතා වැදගත් හඳුනා නොගත් ලිපිගොනු ස්ථිරවම මකා දැමිය හැකිය. ප්රවේශම් වන්න.
git clean -f -d
නොසලකා හරින ලද ෆෝල්ඩර වලින්ද ගොනු මකා දැමිය හැකි බව සලකන්න . එබැවින් ඔබ සියලු දේශීය ල logs ු-සටහන් සහ ඒ හා සමාන දෑ නැති වී යයි. සාමාන්යයෙන් එය විශාල ගැටළුවක් නොවේ, නමුත් දැන ගැනීම වඩා හොඳය.
මම නිතර භාවිතා කරන ආරක්ෂිතම ක්රමය:
git clean -fd
/docs/git-clean
පිටුවට අනුව සින්ටැක්ස් පැහැදිලි කිරීම :
-f
(අන්වර්ථය :) --force
. Git වින්යාස විචල්යය clean.requireForce අසත්ය ලෙස සකසා නොමැති නම්, -f, -n හෝ -i ලබා නොදුන්නේ නම් git clean ගොනු හෝ නාමාවලි මකා දැමීම ප්රතික්ෂේප කරනු ඇත. තත්පර -f ලබා නොදුනහොත් .git උප බහලුම හෝ ගොනුව සහිත නාමාවලි මකා දැමීම Git ප්රතික්ෂේප කරයි.-d
. හඳුනා නොගත් ලිපිගොනු වලට අමතරව හඳුනා නොගත් නාමාවලි ඉවත් කරන්න. හඳුනා නොගත් නාමාවලිය වෙනත් Git ගබඩාවක් මගින් කළමනාකරණය කරන්නේ නම්, එය පෙරනිමියෙන් ඉවත් නොකෙරේ. ඔබට එවැනි නාමාවලියක් ඉවත් කිරීමට අවශ්ය නම් දෙවරක් -f විකල්පය භාවිතා කරන්න.අදහස් දැක්වීම්වල සඳහන් කර ඇති පරිදි, git clean -nd
වියළි ධාවනයක් සිදු කිරීම වඩාත් සුදුසු විය හැකි අතර එය මකා දැමීමට පෙර මකා දැමිය යුතු දේ ඔබට කියයි.
ලේඛ git clean
පිටුවට සබැඳිය :
https://git-scm.com/docs/git-clean
git clean -nd .
භාවිතා කරමින් ලිපිගොනු මකා දැමීමට පෙරgit clean -fd .
add -A
+ commit -a
+ revert head
පළමු පෙර git clean
. සෑම මකාදැමීමක්ම සමාලෝචනය කිරීම ප්රධාන සිදුවීම් සඳහා ප්රමාණවත් නොවේ. එසේම, වියලි ධාවනය රිදී උණ්ඩයක් නොවේ: සමාලෝචනයේදී ඔබට යමක් මග හැරුණි හෝ වැරැද්දක් කර ඇත්නම් කුමක් කළ යුතුද?
සියලු දම්වැල් මත ධාවනය වන unstaged ගොනු භාවිතය:
git checkout -- .
මෙම .
අවසානයේ වැදගත් වේ.
.
ඔබේ ව්යාපෘතියේ නිශ්චිත උප නාමාවලියක් පමණක් ඉවත් කිරීමට ඔබට උප-නාමාවලි නාමයක් ආදේශ කළ හැකිය . ගැටළුව මෙහි විශේෂයෙන් ආමන්ත්රණය කෙරේ .
src/app/work/filename.js
සහ ../app/working/test/filename.js
. git checkout -- .
ශාඛාව මත භාවිතා කිරීමෙන් පළමු ගොනුව පමණක් මකාදමා ඇත ( ප්රමුඛයා නොමැතිව ../ ). cd ../
එම විධානය භාවිතා කරමින් දෙවන ගොනුව මකා දැමීම සඳහා මට දෙවන ස්ථාන නාමාවලිය වෙත යාමට සිදු විය.
git checkout file
හෝ git checkout .
ආපසු හැරවිය හැකි වුවද හෝ සියලු ලිපිගොනු වල වෙනස්කම් (පසුකාලීනව), නමුත් සාමාන්යයෙන් ඒවා එසේ භාවිතා නොකරන අතර එය "ශාඛා පිරික්සුමක්" නොවන බව සම්පූර්ණයෙන්ම පැහැදිලි කිරීම සඳහා ද්විත්ව ඉරක් ඒවාට පෙර තිබේ. එබැවින් ශාඛා නාමයක් සහ ලිපිගොනු නමක් සමාන වුවද, කිසිදු නාම ගැටුම් ගැටළු ඇති නොවේ.
git clean
විධානය දෙස බලන්න .
git-clean - වැඩ කරන ගසෙන් ඉවත් නොකළ ගොනු ඉවත් කරන්න
වත්මන් නාමාවලියෙන් පටන් ගෙන අනුවාද පාලනයට යටත් නොවන ගොනු නැවත නැවත ඉවත් කිරීමෙන් වැඩ කරන ගස පිරිසිදු කරයි.
සාමාන්යයෙන්, git නොදන්නා ගොනු පමණක් ඉවත් කරනු ලැබේ, නමුත් -x විකල්පය නියම කර ඇත්නම්, නොසලකා හරින ලද ගොනු ද ඉවත් කරනු ලැබේ. නිදසුනක් ලෙස, සියලු නිමැවුම් නිෂ්පාදන ඉවත් කිරීමට මෙය ප්රයෝජනවත් වේ.
git clean -i
මෙනුවෙන් "පිරිසිදු" උත්සාහ කර තෝරාගෙන ඇත - මෙය අවසානයේ නව ගොනු ඉවත් කළේය.
ඔබට මෙය පියවර දෙකකින් කළ හැකිය:
git checkout -f
git clean -fd
පහත සඳහන් ක්රියා:
git add -A .
git stash
git stash drop stash@{0}
මෙය ඔබගේ අස්ථායී සහ වේදිකාගත කළ දේශීය වෙනස්කම් දෙකම ඉවතලන බව කරුණාවෙන් සලකන්න. එබැවින් ඔබ මෙම විධානයන් ක්රියාත්මක කිරීමට පෙර ඔබ තබා ගත යුතු ඕනෑම දෙයක් කළ යුතුය.
සාමාන්ය භාවිත නඩුවක්: ඔබ ලිපිගොනු හෝ නාමාවලි විශාල ප්රමාණයක් වටා ගෙන ගොස්, පසුව මුල් තත්වයට පැමිණීමට අවශ්යය.
git stash drop
?
git add -A .
). ලිපිගොනු ගැලපීමක් නොතිබූ නිසා මට මීටර් 30 ක් අහිමි විය. ස්තූතියි!
මම හිතන්නේ එය ( අනතුරු ඇඟවීම: පහත සඳහන් කරනු ඇත හැම දෙයක්ම පිස )
$ git reset --hard HEAD
$ git clean -fd
මෙම reset
වෙනස්කම් ඉවත් කිරීමට. මෙම clean
කිසිදු untracked ඉවත් කිරීමට f iles හා ඈ irectories.
git pull
පසුව සිදු කරන විට මට තවමත් ගැටුම් අනතුරු ඇඟවීමක් ලැබේ : CONFLICT (content): Merge conflict in...
මම මෙය විසඳුවේ agit pull --strategy=ours
git reset --hard origin/{branchName}
එය සොයා නොගත් සියලුම ගොනු මකා දමනු ඇත.
විකල්ප විසඳුමක් වන්නේ වෙනස්කම් සිදු කිරීම, ඉන්පසු එම ක්රියාවන් ඉවත් කිරීම ය. මෙය මුලදී ක්ෂණික ප්රතිලාභයක් නොලැබෙන නමුත්, එය කුට්ටි වල කැපවීමේ හැකියාව විවෘත කරයි, සහ උපස්ථ සඳහා git ටැගයක් නිර්මාණය කරයි.
වත්මන් ශාඛාවේ ඔබට මෙය කළ හැකිය:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
නැතහොත් ඔබට එය වෙන් කළ හෙඩ් මත කළ හැකිය. (ඔබ බ්රැන්ච්නාම් ශාඛාවෙන් ආරම්භ යැයි උපකල්පනය කරමු):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
කෙසේ වෙතත්, මම සාමාන්යයෙන් කරන්නේ කුට්ටි වල කැපවීමයි, පසුව සමහරක් හෝ සියල්ලම "ඩිස්කාර්ඩ්: ..." ලෙස නම් කරන්න. ඉන්පසු අයහපත් ක්රියා ඉවත් කර හොඳ ඒවා තබා ගැනීමට අන්තර්ක්රියාකාරී නැවත භාවිතා කරන්න.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
මෙය වඩාත් වාචික ය, නමුත් ඔබට ඉවත දැමීමට අවශ්ය වෙනස්කම් හරියටම සමාලෝචනය කිරීමට එය ඉඩ දෙයි.
මෙම git lol
සහgit lola
කෙටි මං මේ කාර්ය ප්රවාහ සමඟ ඉතා ප්රයෝජනවත් වී ඇත.
මා භාවිතා කළ විශේෂිත ෆෝල්ඩරයක් සඳහා:
git checkout -- FolderToClean/*
මෙය බොහෝ විට උත්තරීතර පිළිතුරක් විය හැකිය, නමුත්: මම කවුළු සඳහා ඉබ්බා ගිට් භාවිතා කරන අතර එයට REVERT නමින් ලස්සන අංගයක් ඇත. එබැවින් ඔබගේ දේශීය නොවන වේදිකාගත නොකළ වෙනස්වීම් ආපසු හැරවීමට ඔබ කරන්නේ කුමක්ද:
git help reset
සහgit help clean