විධාන රේඛාවේ * ශාඛා * සඳහා git ස්වයංක්‍රීයව සම්පූර්ණද?


379

මගේ ලිනක්ස් යන්ත්‍රයේ Git සමඟ ශාඛා සඳහා ස්වයං සම්පුර්ණ කර ඇත .

[අපි කතා කරන්නේ git ශාඛා සම්පුර්ණ කිරීම ගැන මිස කඩිනම් නිම කිරීම ගැන නොවේ (උදා: විධාන, ලිපිගොනු ආදිය). මේ අනුව NOT Lane ගේ පිළිතුර කිසිසේත් නැත]

උදාහරණයක් ලෙස මට git checkout+ ටයිප් TABකර ශාඛා ලැයිස්තුවක් ලබා ගත හැකිය .

නැතහොත් "feb" වලින් ආරම්භ වන සියලුම ශාඛා ලබා ගැනීමට මට git checkout feb*+ ටයිප් කළ හැකිය TAB.

මැක්හි මෙම ක්‍රියාකාරිත්වය ලබා ගන්නේ කෙසේද?

මම බාගත සහ ධාවනය උත්සාහ bash-completion/bash_completionහා bash-completion/bash_completion.sh.inනමුත් ප්රීතිය. පළමුවැන්නා වැරදි පණිවිඩ ලබා දුන්නේය declare: -A invalid_option. දෙවැන්න කිසිදු දෝෂයක් ලබා දුන්නේ නැත. මම git checkout+ විට මම TABතවමත් නාමාවලියෙහි ගොනු ලැයිස්තුවක් ලබා ගන්නවා මිස අතු නොවේ. මම ඉන්නේ ව්‍යාපෘති මූලයේ.

ඩිරෙක්ටරි සහ බාෂ් විධාන සඳහා ස්වයංක්‍රීයව සම්පුර්ණ වේ, එබැවින් එය Git සඳහා විශේෂිත වේ.

Answers:


517

හරි, ඒ නිසා මට git ස්වයං සම්පුර්ණ කිරීමේ ස්ක්‍රිප්ට් අවශ්‍ය විය .

මට එය මෙම url එකෙන් ලැබුණි:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

~ඉලක්කය සමඟ ඔබේ නිවසේ නාමාවලිය ( ) භාවිතා කරන බැවින් ඔබ මෙය ක්‍රියාත්මක කරන විට ඔබ සිටින්නේ කුමන නාමාවලියක්ද යන්න ගැන කරදර විය යුතු නැත .

ඉන්පසු මම මගේ ~/.bash_profileගොනුවට පහත සඳහන් 'එය තිබේ නම් ක්‍රියාත්මක කරන්න' කේතය එක් කළෙමි :

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

යාවත්කාලීන කිරීම: මගේ .bashrcගොනුව හැකිලීම සඳහා මම මෙම කේත බිටු වඩාත් සංක්ෂිප්ත කරමි , මේ අවස්ථාවේ දී මම දැන් භාවිතා කරන්නේ:

test -f ~/.git-completion.bash && . $_

සටහන: $_මෙයින් අදහස් කරන්නේ පෙර විධානයට ඇති අවසාන තර්කයයි. ඒ නිසා . $_එය ක්‍රියාත්මක කරන්න - "එය" .git-completion.bashමේ අවස්ථාවේ දී

මෙය තවමත් උබුන්ටු සහ ඕඑස්එක්ස් යන දෙකෙහිම සහ ස්ක්‍රිප්ට් .git-completion.bashස්ක්‍රිප්ට් නොමැති යන්ත්‍රවල ක්‍රියා කරයි .

දැන් git Tab(ඇත්ත වශයෙන්ම එය git TabTab) චාම් එකක් මෙන් ක්‍රියා කරයි!

ps: මෙය පිතිකරණයෙන් ක්‍රියා නොකරන්නේ නම්, ඔබට chmod u+x ~/.git-completion.bashඅවශ්‍ය අවසරය ලබා දීමට ඔබ දිව යා යුතුය :

  • chmod ගොනු අවසරයන් වෙනස් කරන විධානය වේ
  • u ගොනුව හිමි පරිශීලකයා, පෙරනිමියෙන් එහි නිර්මාතෘ, එනම් ඔබ ය
  • + අවසරයක් සැකසීම / සක්‍රිය කිරීම / එකතු කිරීම යන්නෙන් අදහස් වේ
  • x අවසරය ක්‍රියාත්මක කිරීම, එනම් ස්ක්‍රිප්ට් ධාවනය කිරීමේ හැකියාව

1
ඔව්, bash ස්ක්‍රිප්ට් එකතු කිරීමෙන් පසු පර්යන්තය නැවත ආරම්භ කිරීම එය ක්‍රියාත්මක කරයි. මම මෙහි වාඩි වී සිටියේ එය ස්වයංක්‍රීයව සම්පුර්ණ කිරීමට Modelsමා පහර දුන් විට එය මගේ ෆෝල්ඩරයට ස්වයංක්‍රීයව සම්පුර්ණ කිරීමට උත්සාහ කළේ මන්ද යන්නයි . m Tabmaster
ඇලෙක්ස්

1
වෙනත් තොරතුරක් සඳහා unix.stackexchange.com/q/48862/10043 ද බලන්න
මයිකල් ඩුරන්ට්

6
පිළිගත් පිළිතුර කිසිවෙකු සඳහා ක්‍රියා නොකරන්නේ නම් මෙය උත්සාහ කරන්න: source ~/.bash_profileකේතය ඇලවීමෙන් පසු. පර්යන්තය නැවත ආරම්භ කිරීම ද එකම දේ කරයි.
බෙන්

ඔබට ස්තුතියි! මම වෙනත් දේවල් උත්සාහ කළ නමුත් කිසිවක් ක්‍රියාත්මක වූයේ නැත (මෙම github.com/bobthecow/git-flow-completion/wiki/… ඇතුළුව ). ඔබේ විසඳුම
ආකර්ශනීය ලෙස ක්‍රියා

1
(ඔබට බීර නොමැති gitනමුත් ඇපල් පෙරනිමිය ඇත git) brew install gitසහ අමුතු දෝෂයකට මුහුණ දෙන අය සඳහා පර්යන්තය නැවත ආරම්භ කරන්නgit checunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>]
සචින්

97

සමහර අය මැක් ඕඑස් පැකේජ ස්ථාපනය කිරීම, යාවත්කාලීන කිරීම සහ වින්‍යාස කිරීම ස්වයංක්‍රීය කිරීම සඳහා පැකේජ කළමනාකරුවෙකු භාවිතා කිරීමට කැමැත්තක් දක්වයි. මම පැකේජ කළමණාකරුවන්ගේ රසිකයෙක් වන අතර, මම සිතන්නේ හෝම්බ rew යනු මැක් ඕඑස් සඳහා හොඳම පැකේජ කළමණාකරු බවය (සමහරු පවසන්නේ එය මැක් ඕඑස් පැකේජ කළමණාකරු බවයි).

ඔබ බරපැනක් ස්ථාපනය කළ පසු, ඔබට සරලව ස්ථාපනය කළ හැකි GIT සමග bash-සම්පූර්ණ සමග brew install git bash-completion.

එවිට ඔබට පහත සඳහන් දෑ ඔබගේ ඇතුළත් කළ යුතුය ~/.bash_profile:

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
  . `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

(සටහන: මෙම ස්ථාපනය 404 දෝෂයක් සමඟ අසමත් වුවහොත් සහ ඔබ දැනටමත් git ස්ථාපනය කර ඇත්නම්, මෙම බීර ස්ථාපනයෙහි git කොටස ඉවත් කරන්න)

බීර සමඟ git සහ bash- සම්පුර්ණ කිරීම පිළිබඳ වැඩි විස්තර මෙහි.


28
එකතු කිරීම gitහා එකතු bash-completionකිරීම කිසිසේත්ම සමාන නොවේ. .git-completion.bash ඒවා විවිධ වැඩසටහන් වන අතර ඒවා බෙහෙවින් වෙනස් දේ කරයි - එකක් විධාන ස්වයංක්‍රීයව සම්පුර්ණ කරන අතර අනෙක git විධාන ස්වයං සම්පුර්ණ කිරීම සහ 'දෙදෙනා දෙදෙනා මුණගැසෙනු ඇත;)
මයිකල් ඩුරන්ට්

ආකර්ශනීය ලෙස වැඩ කිරීම, බොහෝ ස්තූතියි. කරුණාකර ඔබ මට එකතු කළ ස්ක්‍රිප්ට් භාවිතය කුමක්දැයි පැහැදිලි කළ හැකිද ~/.bash_profile?
විකාස් බන්සාල්

1
මෙම පිළිතුර ගැන අනෙක් අය පවසා ඇති දේ තිබියදීත්, ටර්මිනලය තුළ git ස්වයං සම්පුර්ණ වැඩ කිරීමට හේතු වූයේ එයයි.
ඉයන්

35

මෙය පර්යන්තයේ ධාවනය කරන්න:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

ඉන්පසු මෙය කරන්න:

vi ~/.bash_profile

මෙම රේඛා එක් කරන්න:

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

එච්චරයි. මෙය මට වැඩ කළා.


1
(2 වන පියවර) පා editor සංස්කාරකයක් සමඟ bash_profile විවෘත කිරීමට යමෙක් කැමති නම්, මෙය කරන්න: open -e .bash_profile
Nicolas Bodin-

2
කන්‍යා මැක් ඕඑස් හයි සියෙරා හි, ~/.bash_profileගොනුව නොපවතී. එය හොඳයි, ගොනුව සාදා එම ifස්ක්‍රිප්ට් එක එහි තබා සුරකින්න. ඔබගේ කවචය නැවත පූරණය කරන්න, එවිට එය ක්‍රියා කරයි.
agm1984

මෙය මට වැඩ කළා. Vi වෙනුවට (මම සැමවිටම අරගල කරන) විවෘතව කරන්න -e ~ / .bash_profile
ඉම්රාන්

14

gitහා git-completion.bashමේ වන විටත් macOS විධාන රේඛාව මෙවලම් සමග පැමිණ ( xcode-select --install). ස්වයංක්‍රීයව සම්පුර්ණ කිරීම සක්‍රීය කිරීම සඳහා, මෙය ඔබගේ වෙත එක් කරන්න ~/.bash_profile.

[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash

මෙමඟින් git ශාඛා සඳහා ස්වයං සම්පුර්ණ කිරීමට ද හැකි වේ.


මට විධාන රේඛා මෙවලම් ස්ථාපනය කර ඇති බව විශ්වාසයි, නමුත් එම ගොනුව මගේ නඩුවේ නොපවතී. බීර සමග යාමට ලැබීම සතුටක්.
ඩ්‍රෙවිකෝ

1
ස්තූතියි! IMO, මෙය හරිත චෙක් සලකුණ සහිත පිළිතුර විය යුතුය.
geekisthenewcool

මෙය වඩාත්ම සරල විසඳුම වන අතර එය මට වැඩ කරයි
ක්‍රිස්

මෙය මට ප්‍රයෝජනවත් විය - මම තරමක් වෙනස් ආකෘතියක් භාවිතා කළද. if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash > /dev/null fi
pamcevoy

8

ඔබගෙන් සමහරෙකු ව්‍යාකූල කරන්නේ මෙන්න: ඔබ බීර හෝ වරාය ස්ථාපනය කර ඇත, නමුත් ඔබ භාවිතා කරන්නේ පද්ධති කට්ටලයක් /usr/bin/. මෙය පරීක්ෂා කිරීම සඳහා:

which git

ඔබ දුටුවහොත් /usr/bin/gitඑක්කෝ බීර නිවැරදිව වින්‍යාස කර නැත, නැතහොත් ඔබ බීර හරහා git ස්ථාපනය කර නොමැත.

ඔබ බීර හරහා git ස්ථාපනය කරන්නේ නම්, බීර සඳහා බාෂ් සම්පුර්ණ කිරීම සක්‍රීය කිරීමෙන් ද git සඳහා bash සම්පුර්ණ කිරීමට හැකි වේ. මෙයට හේතුව /usr/local/etc/bash_completionඇත්ත වශයෙන්ම සෑම දෙයක්ම මූලාශ්‍ර වන අතර /usr/local/bash_completion.d, git සඳහා බීර පැකේජය එහි git සම්පුර්ණ කිරීමේ පිටපතක් ස්ථාපනය කරයි.


මෙය අර්ථවත් කරයි, නමුත් ඔබ "බීර සඳහා බාෂ් සම්පුර්ණ කිරීම සක්‍රීය කරන්නේ කෙසේද"? එය කරන්නේ කෙසේදැයි ඔබට මග හැරී ඇත, මෙය ඔබේ පිළිතුරේ කොටසක් විය යුතුය
skplunkerin

මම හරහා (එය ක්රියා, ස්තුතියි) මෙම කළේ simplified.guide/macos/bash-completion , නමුත් මෝටර් රථ අවසන් යුවළක් තත්පර වේ ප්රමාද ... අමුතු
skplunkerin

4

ඔබට "bash_completion" විකල්පය සක්‍රීය කර ඇති මැක්පෝර්ට්ස් වෙතින් bash සහ git ස්ථාපනය කළ හැකිය. Git සහ සම්පුර්ණ කිරීම් යාවත්කාලීනව පවත්වා ගැනීමට පහසුම ක්‍රමය එය විය හැකිය.

http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard

මැක්පෝර්ට්ස් ස්ථාපනය කිරීම සඳහා: http://www.macports.org/install.php/

අමතර තොරතුරු

ඔබේ ලිනක්ස් පද්ධතියේ සම්පූර්ණ සැකසුම් සොයා ගැනීම සඳහා, /etc/bash_completion.d/git බලන්න (එය දිගු ගොනුවකි). එය සම්පූර්ණ කිරීම මඟින් / etc / bash_completion (/etc/profile.d/bash_completion.sh වෙතින් උපුටා ගන්නා ලද / etc / profile .d / etc / profile වෙතින් උපුටා ගනු ලැබේ).


2

ඔබේ git සම්පුර්ණ කිරීම අර්ධ වශයෙන් කැඩී ඇත්නම්, මූලාශ්‍ර කිරීමෙන් පසුව වුවද https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, ඔබට ඔබගේ git අනුවාදය යාවත්කාලීන කිරීමට අවශ්‍ය විය හැකිය.

උදාහරණයක් ලෙස, මම git check+ ටයිප් කළ විට TABඑය නිවැරදිව ස්වයංක්‍රීයව සම්පූර්ණ git checkoutවේ. නමුත් මම git checkout+ ටයිප් කළ විට TAB, එය ශාඛා ලැයිස්තුවක් ප්‍රදර්ශනය කළේ නැත HEAD.

මට විසඳුම වූයේ මගේ gitඅනුවාදය යාවත්කාලීන කිරීමයි. මම 2.7.0 හි සිටි අතර, පෙනෙන ආකාරයට එය නවතම දේ සමඟ නොගැලපේ git-completion.bash. මම දිව්වා brew upgrade git, එය 2.13.0 දක්වා යාවත්කාලීන කළ අතර දැන් එය මගේ ශාඛා නම් නිසි ලෙස සම්පුර්ණ කරයි.


මට එකම ගැටලුව ලැබුණි, නමුත් මට ධාවනය කිරීමට සිදු වූ brew upgrade gitඅතර brew link git (අභිබවා යාම සක්‍රීය කර ඇත)
Tope

1
ඇල්ලීමට ස්තූතියි op ටෝප්. මම වෙනස් වී updateඇත upgrade.
wisbucky

2

මේ වන විට, මෙම ගැටළුව විසඳීම සඳහා මා සොයාගත් හොඳම සඳහන වන්නේ කොනර් ලිවිංස්ටන් විසින් රචිත ස්පින්ඩෑන්ස් ය :

නම් GIT-completion.bash තිර රචනය ඔබේ පරිගණකයේ නොපවතියි, මම (වන ඉහත ඇති ලින්ක් සිට එය ලබාගැනීම කරුණාකර මෙම නමින් නව ගොනුව තුල) සහ ඔබේ පරිගණකයේ එය රැක GIT-completion.bash තුළ / usr / local / etc / bash_completion.d / බහලුම. නම් GIT-completion.bash තිර රචනය ඔබේ පරිගණකයේ පවතී, නමුත් නොවන /usr/local/etc/bash_completion.d/ බහලුම, අපි එම බහලුම තුල එහි පිටපතක් නිර්මාණය කළ යුතුය. ඉක්මන් sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash උපක්‍රමය කළ යුතුය. /Usr/local/etc/bash_completion.d/ ගැන කුතුහලයක් ඇති අය සඳහා ඩිරෙක්ටරිය: එය නව සම්පුර්ණ විධාන ගබඩා කිරීම සඳහා වන අතර, එය දැනටමත් ඔබේ යන්ත්‍රයේ නොමැති නම් ඔබට එය නිර්මාණය කිරීමට සිදුවනු ඇත.

මෙම අවස්ථාවෙහිදී git-complete.bash ස්ක්‍රිප්ට් ඔබේ දේශීය යන්ත්‍රයේ /usr/local/etc/bash_completion.d/ නාමාවලියෙහි තිබිය යුතුය . දැන් අපි g / .bash_profile වෙතින් යොමු කිරීමෙන් git සම්පුර්ණ කිරීමේ ස්ක්‍රිප්ට් එක බාෂ් බවට පත් කරමු .

සටහන: පෙර වාක්‍යයේ ඇති ටයිල්ඩ් ඔබේ පරිගණකයේ නිවාස නාමාවලියට යොමු වේ. Line / .bash_profile වෙත පහත පේළිය එක් කරන්න : source /usr/local/etc/bash_completion.d/git-completion.bash සහ සුරකින්න. අවසාන පියවර වන්නේ ඔබේ බෑෂ් පැතිකඩ නැවත පූරණය කිරීමයි. ඔබගේ වර්තමාන bash සැසියේදී source / .bash_profile ප්‍රභවය ධාවනය කිරීමෙන් ඔබට මෙය සාක්ෂාත් කරගත හැකිය .


1

එය අත්හදා බැලූ අතර එය ශාඛා සඳහා හොඳින් ක්‍රියා කරයි, නමුත් ඔබ git st+ කළ tabවිට එය මෙවැනි දෝෂයක් පෙන්වයි

නොදන්නා විකල්පය: --list-cmds = list-mainporcelain, වෙනත් අය, nohelpers, අන්වර්ථය, ලැයිස්තු-සම්පුර්ණ, වින්‍යාස භාවිතය: git [--version] [--help] [-C] [-c =] [--exec -path [=]] [--html-path] [--man-path] [--info-path] [-p | - පිටුව | --no-pager] [--no-replace-object] [--bare] [--git-dir =] [--work-tree =] [--namespace =] []

අන්තර්ජාලය සොයා හා සොයා බව --list-cmdsතුළ .git-completion.bashකළ GIT නවතම අනුවාදය වන හා මගේ mac මත විය GIT අනුවාදය2.17.2

මෙන්න විසඳුම්

විසඳුම 1

  1. git --versionවිධානය භාවිතා කරමින් git හි අනුවාදය පරීක්ෂා කරන්න
  2. ඉන්පසු මා කළ ආකාරයටම අනුවාද අංකය යූආර්එල් එකේ තබන්න

    curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
  3. ඉන්පසු ඉහළ පිළිතුරේ ඇති පියවර අනුගමනය කරන්න, පහත කේතය දමන්න ~/.bash_profile

    if [ -f ~/.git-completion.bash ]; then
      . ~/.git-completion.bash
    fi

විසඳුම 2

ඔබ git අනුවාදය නවතම දේට යාවත්කාලීන කිරීමට උත්සාහ කළ යුතු අතර එය ක්‍රියාත්මක විය යුතුය.


0

ස්ථාපනය ඔහ්-මගේ-zsh ඔබගේ සුපුරුදු shell එක ලෙස හා කට්ටලයක් zsh පසුව මට ස්තුති :)


මම එය කර ඇත්තේ හරියටම එය සමඟ ගනුදෙනු නොකිරීමේ බලාපොරොත්තුවෙනි
එබීමෙන්

ඔබට ඇත්ත වශයෙන්ම oh-my-zsh හෝ වෙනම ප්ලගීන පද්ධතියක් අවශ්‍ය නොවේ! Git සම්පුර්ණ කිරීම කොටුවෙන් පිටතට පැමිණේ, ඔබ එය සක්‍රීය කළ යුතුය.
සිල්වර් වුල්ෆ් - මොනිකා නැවත

0

බොහෝ පරිශීලකයින් gitxcode විධාන රේඛා මෙවලම් වල කොටසක් ලෙස ස්ථාපනය කර ඇති /usr/bin/gitඅතර git සඳහා bash සම්පුර්ණ කිරීමේ නීති ලබා ගත හැකිය /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

මෙම අවස්ථාවේදී හෝම්බ rew වෙතින් git හෝ raw.githubusercontent.com වෙතින් ප්‍රභව git සම්පුර්ණ කිරීමේ නීති ස්ථාපනය කිරීම අවශ්‍ය නොවේ. පහත පරිදි සිම්ලින්ක් එකක් සාදන්න:

cd /usr/local/etc/bash_completion.d/
ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git

සටහන: ඔබ bash-completionහෝම්බ rew වෙතින් පැකේජයක් ස්ථාපනය කර වින්‍යාස කර ඇති බවට වග බලා ගන්න .


0

මැකෝස් කැටලිනා + සඳහා, දී zsh:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh

ඉන්පසු ඔබේ යාවත්කාලීන කරන්න ~/.zshrc:

if [ -f ~/.git-completion.zsh ]; then
    . ~/.git-completion.zsh
fi

-2

ඔබගේ .bashrcගොනුව සොයා ගන්න.

එය විවෘත කර පතුලේ මෙම රේඛාව එක් කරන්න:

source /etc/bash_completion.d/git


1
/etc/bash_completion.d/සාපේක්ෂව නව පද්ධතියක (OSX 10.10.3) මා සතුව ෆෝල්ඩරයක් නොමැත.
livingtech

එය නිර්මාණය කිරීමට උත්සාහ කරන්න.
crmpicco

Bash_completion නොවේ, git_completion විවිධ දේවල් කරයි.
මයිකල් ඩුරන්ට්

Ic මයිකල් ඩුරන්ට් එය ක්‍රියාත්මක වේ. මාව විශ්වාස කරන්න. ;) prowrestlingtee.com/media/catalog/product/cache/1/image/…
crmpicco

@crmpicco කරුණාකර නිර්මාණය කිරීම සඳහා උපදෙස් ලබා දිය /etc/bash_completion.d/gitහැකිද? එමඟින් ඔබේ පිළිතුර වඩාත් වටිනා වනු ඇත.
ඩැනීඩ්
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.