Answers:
සිට අදාළ Git ප්රලේඛනය :
විශේෂිත නිධියකට විශේෂිත වූ නමුත් වෙනත් ආශ්රිත නිධි සමඟ බෙදා ගැනීමට අවශ්ය නොවන රටාවන් (උදා: නිධිය තුළ ජීවත්වන නමුත් එක් පරිශීලකයෙකුගේ කාර්ය ප්රවාහයට විශේෂිත වූ සහායක ලිපිගොනු)
$GIT_DIR/info/exclude
ගොනුව තුළට යා යුතුය .
මෙම .git/info/exclude
ගොනුව ඕනෑම සමාන ආකෘතියක් ඇත .gitignore
ගොනුව. තවත් විකල්පයක් වන්නේ core.excludesFile
ගෝලීය රටා අඩංගු ගොනුවක නමට සැකසීමයි.
සටහන, ඔබට දැනටමත් අස්ථායී වෙනස්කම් තිබේ නම්, ඔබේ නොසලකා හැරීමේ රටා සංස්කරණය කිරීමෙන් පසු පහත සඳහන් දෑ ක්රියාත්මක කළ යුතුය:
git update-index --assume-unchanged <file-list>
සටහන$GIT_DIR
: මෙය git නිධිය වෙත යන මාර්ගය දැක්වීමට හුදෙක් git අත්පොත පුරා භාවිතා කරන අංකනයකි . පරිසර විචල්යය සකසා ඇත්නම්, එය ඔබ සිටින ඕනෑම ගබඩාවක පිහිටීම අභිබවා යනු ඇත, එය ඔබට අවශ්ය දේ නොවේ.
සංස්කරණය කරන්න : තවත් ක්රමයක් භාවිතා කිරීම:
git update-index --skip-worktree <file-list>
එය ආපසු හරවන්න:
git update-index --no-skip-worktree <file-list>
skip-worktree
ඉඩ වඩාත් කැමැත්තක් ඇත assume-unchanged
.
යාවත්කාලීන කිරීම : git update-index --skip-worktree [<file>...]
ඒ වෙනුවට භාවිතා කිරීම ගැන සලකා බලන්න , ස්තූතියි @danShumway! විකල්ප දෙකේ වෙනස පිළිබඳ බොරලිඩ්ගේ පැහැදිලි කිරීම බලන්න .
පැරණි පිළිතුර:
ලුහුබැඳ ඇති ලිපිගොනු වල දේශීය වෙනස්කම් නොසලකා හැරීමට ඔබට අවශ්ය නම් (ගොනු වින්යාස කිරීම සඳහා දේශීය වෙනස් කිරීම් සහිතව අප සතුව ඇත), භාවිතා කරන්න git update-index --assume-unchanged [<file>...]
.
git update-index --assume-unchanged my-file.php
අතර එය නොසලකා හැරීම ආරම්භ කිරීම සඳහා එය ක්රියාත්මක කිරීමට සිදුවිය. ඉඟියට ස්තූතියි!
git update-index --no-assume-unchanged my-file.php
.git/info/exclude
ඔබට අවශ්ය වන්නේ (බොහෝ විට බෙදාගත් හා ලුහුබැඳ ඇති .Gitignore දූෂණය වීම වළක්වා ගැනීම සඳහා)
--assume-unchanged
ඔබගේ යාවත්කාලීනය කියවීමට පෙර මම ඉක්මන් කළෙමි . මම undid --no-assume-unchanged
හා පසුව කළා, --skip-worktree
පැහැදිලි දී ... මම මම?
ඔබගේ .gitconfig ගොනුවේ [අන්වර්ථ] කොටසට පහත පේළි එක් කරන්න
ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"
දැන් ඔබට git ignore my_file
දේශීය ගොනුවේ git unignore my_file
වෙනස්කම් නොසලකා හැරීමට සහ වෙනස්කම් නොසලකා හැරීම නැවැත්වීමට භාවිතා කළ හැකිය . git ignored
නොසලකා හරින ලද ගොනු ලැයිස්තුගත කරයි.
මෙම පිළිතුර http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html වෙතින් ලබාගෙන ඇත.
ඔබට විකල්ප කිහිපයක් තිබේ:
.gitignore
ගොනුවක් ඔබගේ වැඩ කරන ඩිර් තුළ තබන්න (නැතහොත් ටොප්ගිට් හෝ වෙනත් එවැනි පැච් මෙවලමක් භාවිතයෙන් එය ස්වයංක්රීයව යොදන්න ).$GIT_DIR/info/exclude
මෙය එක් ගසකට විශේෂිත නම්, බැහැර කිරීම් ඔබේ ගොනුවේ තබන්න .git config --global core.excludesfile ~/.gitignore
කර ඔබේ රටා එක් කරන්න ~/.gitignore
. සියලුම ගස් හරහා යම් රටාවන් නොසලකා හැරීමට ඔබට අවශ්ය නම් මෙම විකල්පය අදාළ වේ . උදාහරණයක් ලෙස මම මෙය .pyc
සහ .pyo
ගොනු සඳහා භාවිතා කරමි .එසේම, ඔබ රටා භාවිතා කරන බවට වග බලා ගන්න.
git config --global
විකල්පය ගෝලීයව සැකසිය යුතුයි .
මම හිතන්නේ ඔබ සොයන්නේ:
git update-index --skip-worktree FILENAME
එමඟින් දේශීයව සිදුකරන ලද වෙනස්කම් නොසලකා හරිනු ලැබේ
මෙන්න http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ මෙම විසඳුම් පිළිබඳ වැඩි විස්තර!
භාවිතය අහෝසි කිරීමට:
git update-index --no-skip-worktree FILENAME
--skipworktree
, පසුව මගේ අදහස වෙනස් කර නැවත ගොනුව ලුහුබැඳීම ආරම්භ කළ යුතුද?
git update-index --no-skip-worktree <file>
git ls-files -v | grep ^S
මෙම ක්රියාවලිය සරල කිරීම සඳහා ඔබට සමහර git අන්වර්ථයන් ස්ථාපනය කළ හැකිය . මෙය [alias]
ඔබගේ .gitconfig
ගොනුවේ නෝඩය සංස්කරණය කරයි .
git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'
මෙය ඔබ වෙනුවෙන් ස්ථාපනය කරන කෙටිමං පහත පරිදි වේ:
git ignore config.xml
config.xml
- අහම්බෙන් එම වෙනස්කම් සිදු කිරීමෙන් ඔබව වළක්වයි.git unignore config.xml
config.xml
- එම වෙනස්කම් කිරීමට ඔබට නැවත ඉඩ දෙයි.git ignored
මා සඳහන් කර මෙම ඉදි phatmann පිළිතුර ලෙස ඉදිරිපත් කරන - --assume-unchanged
එකම අනුවාදය.
මා ඉදිරිපත් කරන අනුවාදය --skip-worktree
දේශීය වෙනස්කම් නොසලකා හැරීම සඳහා භාවිතා කරයි . වෙනස පිළිබඳ සම්පූර්ණ පැහැදිලි කිරීමක් සඳහා බොරලිඩ්ගේ පිළිතුර බලන්න , නමුත් මූලික වශයෙන් --skip-worktree
අරමුණ වන්නේ සංවර්ධකයින් ඔවුන්ගේ වෙනස්කම් සිදු කිරීමේ අවදානමකින් තොරව ලිපිගොනු වෙනස් කිරීමයි.
මෙහි git ignored
ඉදිරිපත් කර ඇති විධානය භාවිතා git ls-files -v
කරන අතර S
ටැගය සමඟ ආරම්භ වන එම සටහන් පෙන්වීමට ලැයිස්තුව පෙරහන් කරයි . මෙම S
ටැගය කාගේ තත්ත්වය "worktree මඟ" වන ගොනු හැඳින්වේ. පහත දැක්වෙන ගොනු තත්වයන් පිළිබඳ සම්පූර්ණ ලැයිස්තුවක් සඳහා git ls-files
: -t
විකල්පය සඳහා වන ප්රලේඛනය බලන්න git ls-files
.
'!git ls-files -v | grep "^S"'
ඕනෙද? එහි විධානය මා සමඟ වැඩ කරන්නේ නැත .. එය ඉවත් කිරීමත් සමඟ හොඳින් ක්රියා කරන බව පෙනේ.
Expansion of alias 'ignored' failed; 'git' is not a git command
. මෙය අර්ථවත් කරයි; විශ්මයජනක සලකුණකින් තොරව: git ඔබේ විධානය අන්වර්ථ කරයි git git ls-files …
.
git ignore <filename>
, එය අදාළ වන්නේ එම නාමාවලියට පමණි. අවසාන වශයෙන් ඔබට එම ගොනුවේ වෙනස්කම් කිරීමට හා කැපවීමට හා දුරස්ථව තල්ලු කිරීමට git unignore <filename>
අවශ්ය වූ විට, තාවකාලිකව එය නැවත සොයා ගැනීම ආරම්භ කිරීමට පහසු භාවිතා කරන්න ! ස්තූතියි!
ඔබ හුදෙක් එනම්, ඔබේ නිවසේ බහලුම සඳහා .gitignore ගොනු එකතු කළ හැකි $HOME/.gitignore
හෝ ~/.gitignore
. ඉන්පසු විධානය සමඟ එම ගොනුව භාවිතා කිරීමට git ට කියන්න:
git config --global core.excludesfile ~/.gitignore
මෙය සාමාන්ය .gitignore ගොනුවක් වන අතර එය නොසලකා හැරිය යුතු දේ තීරණය කිරීමේදී යොමු දක්වයි. එය ඔබගේ නිවාස නාමාවලියෙහි ඇති බැවින්, එය ඔබට පමණක් අදාළ වන අතර කිසිදු ව්යාපෘතියක් දූෂණය නොකරයි .gitignore ගොනු.
මම වසර ගණනාවක් තිස්සේ මෙම ප්රවේශය විශාල ප්රති .ල සමඟ භාවිතා කරමි.
git check-ignore <file-name>
කර සත්යාපනය කිරීමට භාවිතා කරන්න. LMK එය ඔබ වෙනුවෙන් වැඩ කරන්නේ නම්
=
:git config --global core.excludesfile ~/.gitignore
.gitignore
ගොනුවක් නිවාස නාමාවලිය යටතේ තබා git ට ඒ ගොනුව භාවිතා කරන ලෙස පැවසුවා, පසුව දේශීයව ඉවත් කිරීමට මා කැමති ගොනු මකා දැමුවා. කෙසේ වෙතත්, මම වෙනස්කම් තල්ලු කිරීමෙන් පසුව, දුරස්ථ ගබඩාවද එම ලිපිගොනු මකා දැමීය. මම වැරැද්දක් කළාද?
.gitignore
යනු ඔබේ දේශීය නාමාවලියෙහි ඇති ගොනු නොසලකා හැරීමයි. ඔබ කළ යුතුව තිබුණේ git rm --cached
ඒවා ගබඩාවෙන් ඉවත් කර ඒවා ඔබේ දේශීය ස්ථානයේ තබයි. git reset --soft HEAD^
එම බැඳීම අහෝසි කර ඔබගේ ලිපිගොනු නැවත ලබා ගැනීම වැනි දෙයක් සමඟ ඔබේ පෙර බැඳීම වෙත ආපසු යාමට ඔබට හැකි විය යුතුය . එය git හි සුන්දරත්වයයි: ඒ සියල්ල ඔබගේ git ඉතිහාසයේ තවමත් පවතී.
ලුහුබැඳ නැති ලිපිගොනු නොසලකා හැරීම සඳහා, ඒවා ලුහුබැඳ නැති ෆෝල්ඩර කිහිපයක පිහිටා තිබේ නම්, සරල විසඳුමක් නම්, සොයා නොගත් .gitignore
සෑම ෆෝල්ඩරයකටම ගොනුවක් එක් *
කර නව පේළියක් ඇතුළත් තනි පේළියකට ඇතුළු කිරීමයි. හඳුනා නොගත් ලිපිගොනු ෆෝල්ඩර කිහිපයක තිබේ නම් එය සැබවින්ම සරල හා සරල විසඳුමකි. මට නම්, සියලුම ලිපිගොනු එකම හඳුනා නොගත් ෆෝල්ඩරයකින් එන vendor
අතර ඉහත සඳහන් දෑ ක්රියාත්මක විය.
--Assume-නොවෙනස් සහ --skip-worktree යන දෙකම දේශීයව ලිපිගොනු නොසලකා හැරීමට නිවැරදි මාර්ගයක් නොවේ ... කරුණාකර මෙම පිළිතුර සහ git update-index හි ප්රලේඛනයේ සටහන් පරීක්ෂා කරන්න . ඕනෑම හේතුවක් නිසා නිරන්තරයෙන් වෙනස් වන ලිපිගොනු (සහ / හෝ ක්ලෝනයක සිට තවත් ස්ථානයකට වෙනස් කිරීම) සහ ඒවායේ වෙනස්කම් සිදු නොකළ යුතුය, එවිට මෙම ලිපිගොනු මුලින් සොයාගත නොහැක .
කෙසේ වෙතත්, ඒවා දේශීයව ගොනු නොසලකා හැරීමට සුදුසු ක්රම දෙකකි (දෙකම ක්රියා විරහිත ගොනු සමඟ ක්රියා කරයි). .Gitignore හි දේශීය විකල්පය වන නමුත් වත්මන් ක්ලෝනයට විශේෂිත වූ .git / info / බැහැර ගොනුවේ ගොනු නම් තැබීම. නැතහොත් ගෝලීය .gitignore භාවිතා කිරීම (ඒවා සාමාන්ය සහායක ලිපිගොනු සඳහා පමණක් භාවිතා කළ යුතුය. උදා: pyz, pycache, ආදිය) සහ ඔබේ යන්ත්රයේ ඇති ඕනෑම git repo එකක ගොනුව නොසලකා හරිනු ඇත.
ඉහත සඳහන් දෑ ස්වයංක්රීය ආකාරයක් බවට පත් කිරීම සඳහා (බැහැර කිරීම හෝ ගෝලීය .gitignore එකතු කිරීම), ඔබට පහත දැක්වෙන විධානයන් භාවිතා කළ හැකිය (ඔබේ බැෂ්-පැතිකඩට එක් කරන්න):
.git/info/exclude
~/.gitignore
ලිනක්ස්
alias git-ignore='echo $1 >> ##FILE-NAME##'
alias git-show-ignored='cat ##FILE-NAME##'
git-unignore(){
GITFILETOUNIGNORE=${1//\//\\\/}
sed -i "/$GITFILETOUNIGNORE/d" ##FILE-NAME##
unset GITFILETOUNIGNORE
}
මැකෝස් (ඔබට ස්ථානීය sed
වෙනස් කිරීම් සඳහා .bak අවශ්ය වේ (එනම්, ඔබට ස්ථානීය සෙඩයට ගොනු දිගුවක් එක් කිරීමට බල කෙරෙයි. එනම් යමක් ප්රතිස්ථාපනය කිරීමට පෙර උපස්ථයක් සාදන්න), එබැවින් මා එකතු කළ .bak ගොනුව මකා දැමීමට rm filename.bak)
alias git-ignore='echo $1 >> ##FILE-NAME##'
alias git-show-ignored='cat ##FILE-NAME##'
git-unignore(){
GITFILETOUNIGNORE=${1//\//\\\/}
sed -i.bak "/$GITFILETOUNIGNORE/d" ##FILE-NAME##
rm ##FILE-NAME##.bak
unset GITFILETOUNIGNORE
}
එවිට ඔබට කළ හැකිය:
git-ignore example_file.txt
git-unignore example_file.txt
ඔබේ repo හි දැනටමත් .gitignore ගොනුවක් නොමැති නම්, සරල විසඳුමක් වන්නේ .gitignore ගොනුවක් නිර්මාණය කිරීමයි, තවද එය .gitignore
නොසලකා හැරිය යුතු ගොනු ලැයිස්තුවට එක් කරන්න .
.gitignore
හි ඉහළින් හවුල් ගොනුවක් ඇත. නමුත් මගේ අපිරිසිදු ලිපිගොනු ගැඹුරු ෆෝල්ඩරයක ඇත, එබැවින් මම ඒවා අසලම මගේම දෑ එකතු කළෙමි .gitignore
. +1
git update-index --assume-unchanged [<file>...]
බැහැර කළ ගොනුවට එකතු කිරීමෙන් පසු ධාවනය කිරීමට වග බලා ගන්න . එතෙක් වෙනස්කම් ලබා නොගනී.