কমান্ড লাইনে * শাখা * র জন্য গিট স্বয়ংক্রিয়ভাবে পূর্ণ?


350

আমার লিনাক্স মেশিনে আমার গিট সহ শাখাগুলির জন্য স্বয়ংক্রিয়ভাবে সম্পূর্ণ ।

[উল্লেখ্য আমরা Git শাখা সম্পূর্ণ করা, কথা বলছ না ব্যাশ সমাপ্তির (যেমন কমান্ড, ফাইল, ইত্যাদি)। এভাবে নয় লেন এর উত্তর এ সব]

উদাহরণস্বরূপ আমি git checkout+ টাইপ করতে TABএবং শাখাগুলির একটি তালিকা পেতে পারি।

নাকি আমি টাইপ করতে পারেন git checkout feb*+ + TABসব শাখা যে, "ফেব্রুয়ারী" দিয়ে শুরু জন্য।

আমি কীভাবে ম্যাকের এই কার্যকারিতাটি পেতে পারি?

আমি ডাউনলোড এবং চলমান চেষ্টা bash-completion/bash_completionএবং bash-completion/bash_completion.sh.inকিন্তু কোন আনন্দ। প্রথম সম্পর্কে ত্রুটি বার্তা দিয়েছে declare: -A invalid_option। দ্বিতীয়টি কোনও ত্রুটি দেয় নি। যখন আমি git checkout+ TABযদিও আমি এখনও ডিরেক্টরিতে ফাইলগুলির একটি তালিকা পাচ্ছি, শাখা নয়। আমি প্রকল্পের মূল মধ্যে আছি।

ডিরেক্টরিগুলির জন্য স্বতঃ-সম্পূর্ণ এবং ব্যাশ কমান্ড ঠিকঠাক কাজ করছে, সুতরাং এটি গিটের জন্য নির্দিষ্ট।

উত্তর:


482

ঠিক আছে, তাই আমার গিট অটোকম্প্লিপশন স্ক্রিপ্টের দরকার ছিল ।

আমি এই 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
হ্যাঁ, ব্যাশ স্ক্রিপ্ট যুক্ত করার পরে টার্মিনাল পুনরায় আরম্ভ করার ফলে এটি কাজ করে। আমি এখানে বসে ভাবছিলাম যে আমার Modelsফোল্ডারে m Tabএটি স্বতঃসম্পূর্ণ হওয়ার জন্য আঘাত করলে কেন এটি আমার ফোল্ডারে স্বতঃপূরণের চেষ্টা চালিয়ে গেল master
অ্যালেক্স

1
ভিন্ন টিপসের জন্যও unix.stackexchange.com/q/48862/10043 দেখুন
মাইকেল

3
যদি গৃহীত উত্তর কারও পক্ষে কাজ না করে থাকে তবে 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>]
শচীন

89

কিছু লোক ম্যাক ওএস প্যাকেজ ইনস্টল, আপডেট এবং কনফিগার করতে স্বয়ংক্রিয় করতে প্যাকেজ ম্যানেজার ব্যবহার করতে পছন্দ করে। আমি প্যাকেজ পরিচালকদের ভক্ত, এবং আমার কাছে মনে হয় হোমব্রু ম্যাক ওএসের জন্য সেরা প্যাকেজ ম্যানেজার (কেউ কেউ বলবেন এটি ডি-ফ্যাক্টো ম্যাক ওএস প্যাকেজ ম্যানেজার)।

একবার আপনি Homebrew ইনস্টল করা আছে, আপনি কেবল ইনস্টল করতে পারেন Git সহ ব্যাশ-সম্পূর্ণতে সঙ্গে 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 ত্রুটি নিয়ে ব্যর্থ হয় এবং আপনি ইতিমধ্যে গিট ইনস্টল করেছেন তবে কেবল এই বারু ইনস্টলের গিট অংশটি সরিয়ে দিন)

ব্রিট সহ গিট এবং ব্যাশ-সম্পূর্ণকরণ ইনস্টল করার বিষয়ে আরও তথ্য More


27
যুক্ত করা gitএবং যুক্ত bash-completionকরা মোটেও যুক্ত হওয়ার মতো নয় কারণ .git-completion.bash তারা বিভিন্ন প্রোগ্রাম এবং তারা বেশ কিছু ভিন্ন কাজ করে - একটি বাশ কমান্ড অটোমোপ্লেশন করে এবং অন্যটি গিট কমান্ড অটোকোম্প্লেশন করে এবং 'নায়ার টুয়েন মিলবে;)
মাইকেল ডুরান্ট

একটি মোহন মত কাজ, অনেক ধন্যবাদ। আপনি দয়া করে ব্যাখ্যা করতে পারেন যে আমাকে স্ক্রিপ্টটির সাথে ~/.bash_profileকীভাবে যুক্ত করেছেন ?
বিকাশ বানসাল

এই উত্তর সম্পর্কে অন্যেরা যা বলেছেন তা সত্ত্বেও, এটিই টার্মিনালে গিট স্ব-পরিপূর্ণ কাজ করেছে।
আয়ান

32

টার্মিনাল এ এটি চালান:

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
(২ য় পদক্ষেপ) যদি কেউ কোনও পাঠ্য সম্পাদকের সাথে ব্যাশ_ প্রোফাইলটি খুলতে পছন্দ করে, তবে এটি করুন: ওপেন -e।
ব্যাশ_প্রোফাইল

2
ভার্জিন ম্যাক ওএস হাই সিয়েরাতে ~/.bash_profileফাইলটি বিদ্যমান নেই। এটি ঠিক আছে কেবল ফাইলটি তৈরি করুন এবং সেই ifস্ক্রিপ্টটি সেখানে রাখুন এবং সংরক্ষণ করুন। পরে আপনার শেলটি পুনরায় লোড করুন এবং এটি কার্যকর হবে।
agm1984

11

gitএবং git-completion.bashইতিমধ্যে ম্যাকোস কমান্ড লাইন সরঞ্জাম ( 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

এটি গিট শাখাগুলির জন্য স্বতঃপূরণ সক্ষম করবে।


খুব নিশ্চিত যে আমি কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করেছি, তবে সেই ফাইলটি আমার ক্ষেত্রে বিদ্যমান নেই। যদিও ব্রু দিয়ে যেতে পেরে খুশি (এবং যেহেতু আমার গিটটিও ব্রেউয়ের সাথে রয়েছে, সম্ভবত বুদ্ধিমানও)।
ড্রিভিকো

ধন্যবাদ! আইএমও, সবুজ চেক চিহ্ন সহ এটির উত্তর হওয়া উচিত।
geekisthenewcool

8

এখানে আপনার কয়েকটিকে বিভ্রান্ত করার জন্য এখানে রয়েছে: আপনার মদ বা পোর্ট ইনস্টল করা আছে তবে আপনি সিস্টেম গিটটি ব্যবহার করছেন /usr/bin/। এটি পরীক্ষা করতে:

which git

আপনি যদি দেখতে পান /usr/bin/gitতবে হয় মদ সঠিকভাবে কনফিগার করা হয়নি, বা ব্রুয়ের মাধ্যমে আপনি গিট ইনস্টল করেন নি।

যদি আপনি ব্রিউয়ের মাধ্যমে গিট ইনস্টল করেন, তবে ব্রুয়ের জন্য ব্যাশ সম্পূর্ণকরণগুলি সক্ষম করাও গিটের জন্য ব্যাশ সম্পূর্ণকরণ সক্ষম করবে। এটি হ'ল /usr/local/etc/bash_completionপ্রকৃতপক্ষে সমস্ত কিছু উত্সের কারণ /usr/local/bash_completion.dএবং গিটের জন্য ব্রিউ প্যাকেজটি সেখানে গিট সমাপ্তির স্ক্রিপ্ট ইনস্টল করে।


এটি অর্থবোধ করে, তবে কীভাবে আপনি "মদ তৈরির জন্য বাশ সম্পূর্ণকরণ সক্ষম করবেন"? কীভাবে করবেন তা আপনি মিস করছেন, এটি আপনার উত্তরের অংশ হওয়া উচিত
skplunkerin

আমি শুধু এই করেনি (এটি কাজ করে, আপনাকে ধন্যবাদ) মাধ্যমে simplified.guide/macos/bash-completion কিন্তু স্বয়ংক্রিয় সমাপ্তি বিজোড় কয়েক সেকেন্ডের বিলম্বিত হচ্ছে ...
skplunkerin

4

আপনি "bash_completion" বিকল্প সক্ষম করে ম্যাকপোর্টগুলি থেকে ব্যাশ এবং গিট ইনস্টল করতে পারেন। এটি সম্ভবত গিট এবং সম্পূর্ণরূপে আপ-টু-ডেট উভয়ই বজায় রাখার সহজতম উপায়।

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

ম্যাকপোর্টগুলি ইনস্টল করতে: http://www.macport.org/install.php/

অতিরিক্ত তথ্য

আপনার লিনাক্স সিস্টেমে সমাপ্তির সেটিংস সনাক্ত করার ক্ষেত্রে /etc/bash_completion.d/git দেখুন (এটি একটি দীর্ঘ ফাইল)। এটিকে অনুলিপি করা সম্ভবত সম্ভবত কাজ করবে না, যদিও এটি / ইত্যাদি / বাশ_কম্প্লেশন (যা /etc/profile.d/bash_completion.sh; / etc / প্রোফাইলে ফাইলগুলি /etc/profile.d/bes_completion.sh থেকে উত্সর্গাদিত হয়) এর মাধ্যমে সমাপ্তির কাঠামোর দ্বারা উত্সাহিত করা হয়েছে as .d / etc / প্রোফাইল থেকে উত্সবৃত হয়)।


2

যদি আপনার গিটের সমাপ্তি আংশিকভাবে ভেঙে যায়, এমনকি সোর্সিংয়ের পরেও https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, আপনাকে কেবল নিজের গিট সংস্করণটি আপডেট করার প্রয়োজন হতে পারে।

উদাহরণস্বরূপ, আমি git check+ টাইপ করার সময় TABএটি সঠিকভাবে স্বয়ংক্রিয়ভাবে পূর্ণ হয়ে যায় git checkout। তবে যখন আমি git checkout+ টাইপ করি তখন TABএটি কেবল শাখার তালিকা প্রদর্শন করে না HEAD

আমার জন্য সমাধানটি আমার gitসংস্করণটি আপডেট করা ছিল । আমি ২.7.০-এ ছিলাম, যা আপাতদৃষ্টিতে সর্বশেষের সাথে সামঞ্জস্য ছিল না git-completion.bash। আমি দৌড়েছি brew upgrade git, যা এটি 2.13.0 এ আপডেট হয়েছে এবং এখন এটি আমার শাখার নামগুলি যথাযথভাবে স্বয়ংক্রিয়ভাবে পূর্ণ করে।


আমি একই সমস্যা পেয়ে ছিল, কিন্তু আমি চালানোর জন্য ছিল brew upgrade gitএবং brew link git (ওভাররাইড সক্রিয় সঙ্গে)
বৌদ্ধস্তূপ

1
টপ @ ট্যাপের জন্য ধন্যবাদ আমি বদলে গেছি updateকরতে upgrade
উইসবাকি

2

এখন পর্যন্ত, আমি এই সমস্যার সমাধানের জন্য যে সেরা রেফারেন্সটি পেয়েছি তা হ'ল স্পিনড্যান্সে , কনার লিভিংস্টনের রচনা :

তাহলে Git-completion.bash স্ক্রিপ্ট আপনার মেশিনে বিদ্যমান নয়, এটা দয়া করে লিংক আমি উপরের প্রদান করেছেন (যা থেকে উদ্ধার এই ) এবং নামক একটি নতুন ফাইল আপনার স্থানীয় মেশিনে এটি সংরক্ষণ Git-completion.bash মধ্যে / usr / স্থানীয় / ইত্যাদি / bash_completion.d / ডিরেক্টরি। গিট-সমাপ্তি.বাশ স্ক্রিপ্টটি যদি আপনার মেশিনে বিদ্যমান থাকে তবে /usr/local/etc/bash_completion.d/ ডিরেক্টরিতে না থাকলে আমাদের সেই ডিরেক্টরিতে এটির একটি অনুলিপি তৈরি করা উচিত। একটি দ্রুত sudo সিপি / বর্তমান / পাথ / টো / আপনার / গীত- কমপ্লিশন.বাশ / অ্যাসার / লৌকাল /etc/bash_completion.d/git-completion.bash এর কৌশলটি করা উচিত। যাঁরা /usr/local/etc/bash_completion.d/ সম্পর্কে আগ্রহী তাদের জন্য ডিরেক্টরি: এটি নতুন সমাপ্তি কমান্ডগুলি সংরক্ষণ করার জন্য এবং এটি আপনার মেশিনে ইতিমধ্যে উপস্থিত না থাকলে আপনাকে এটি তৈরি করতে হতে পারে।

এই মুহুর্তে গিট-সমাপ্তি.বাশ স্ক্রিপ্টটি আপনার স্থানীয় মেশিনে /usr/local/etc/bash_completion.d/ ডিরেক্টরিতে থাকা উচিত। এখন আমরা গিট সমাপ্তি স্ক্রিপ্টটি ~ / .bash_profile থেকে এটিকে নির্দেশ করে ব্যাশে প্লাগ করব ।

দ্রষ্টব্য: পূর্ববর্তী বাক্যে টিল্ডটি আপনার কম্পিউটারের হোম ডিরেক্টরিকে বোঝায়। নিম্নলিখিত লাইনটি ~ / .বাশ_প্রফাইলে যুক্ত করুন : উত্স /usr/local/etc/bash_completion.d/git-completion.bash এবং সংরক্ষণ করুন। চূড়ান্ত পদক্ষেপটি আপনার ব্যাশ প্রোফাইল পুনরায় লোড করা। আপনি আপনার বর্তমান বাশ সেশনে সোর্স। / .Bash_ প্রোফাইলে চালিয়ে এটি অর্জন করতে পারেন ।


1

এটি চেষ্টা করে দেখুন এবং এটি শাখাগুলির পক্ষে ভাল কাজ করে তবে আপনি যখন করেন git st+ tabতখন এটি এর মতো ত্রুটিটি দেখায়

অজানা বিকল্প: - তালিকা-সেমিএসডিএস = তালিকা-মেইনপোরস্লেইন, অন্য, নোহেল্পার্স, ওরফে, তালিকা-সম্পূর্ণ, কনফিগার ব্যবহার: গিট [--version] [--help] [-সি] [-সি =] [- এক্সেক -পথ [=]] [--html- পাথ] [--man-path] [--info-path] [-p | --paginate | --no-পেজার] [--নো-রিপ্লেস-অবজেক্টস] [--বারে] [--git-dir =] [- ওয়ার্ক-ট্রি =] [--নামস্পেস =] []

ইন্টারনেট অনুসন্ধান এবং দেখা গেছে যে --list-cmds.git-completion.bashGit এর সর্বশেষ সংস্করণ ছিল এবং আমার ম্যাক Git সংস্করণ ছিল2.17.2

সমাধান এখানে

সমাধান 1

  1. git --versionকমান্ড ব্যবহার করে গিটের সংস্করণ পরীক্ষা করুন Check
  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

গিট সংস্করণটি সর্বশেষে আপডেট করার চেষ্টা করা উচিত তবে এটি কাজ করা উচিত।


0

ওহ-মাই-জেডএস ইনস্টল করুন এবং আপনার ডিফল্ট শেল হিসাবে zsh সেট করুন এবং পরে আমাকে ধন্যবাদ দিন :)


আমি এটি করেছি, অবশ্যই এটির মোকাবিলা না করার আশায় - ট্যাবটি আঘাত করার পরেও কোনও শাখার পরামর্শ নেই
জিতুগ

আপনার আসলে ওহ-মাই-জেডএস বা এমনকি কোনও পৃথক প্লাগইন সিস্টেমের প্রয়োজন নেই! গিট সমাপ্তি বাক্স থেকে বেরিয়ে আসে, আপনাকে কেবল এটি সক্ষম করতে হবে।
সিলভারওয়াল্ফ

0

বেশিরভাগ ব্যবহারকারীরা gitএক্সকোড কমান্ড লাইন সরঞ্জামগুলির অংশ হিসাবে ইনস্টল করবেন এবং গিটের /usr/bin/gitজন্য বাশ সম্পূর্ণ করার নিয়ম এখানে পাওয়া যাবে /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash

এক্ষেত্রে হোমবারব থেকে গিট ইনস্টল করার দরকার নেই বা Raw.githubusercontent.com থেকে সোর্স গিট সমাপ্তির নিয়ম। নিম্নলিখিত হিসাবে কেবল একটি সিমিলিংক তৈরি করুন:

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

দ্রষ্টব্য: আপনি bash-completionহোমব্রু থেকে প্যাকেজটি ইনস্টল ও কনফিগার করেছেন তা নিশ্চিত করুন ।


-2

আপনার .bashrcফাইল সনাক্ত করুন।

এটি খুলুন এবং নীচে এই লাইনটি যুক্ত করুন:

source /etc/bash_completion.d/git


1
/etc/bash_completion.d/তুলনামূলকভাবে নতুন সিস্টেমে (ওএসএক্স 10.10.3) আমার কাছে কোনও ফোল্ডার নেই ।
livetech

এটি তৈরি করার চেষ্টা করুন।
crmpicco

বাশ_কম্পশন নয়, গিট_কম্পশন যা বিভিন্ন স্টাফ করে।
মাইকেল ডুরান্ট

@ মিশেলডুরান্ট এটি কাজ করে। আমাকে বিশ্বাস কর. ;) prowrestlingtees.com/media/catalog/product/cache/1/image/…
'15

@ ক্রিম্পিকো আপনি কি দয়া করে তৈরির জন্য নির্দেশাবলী সরবরাহ করতে পারেন /etc/bash_completion.d/git? এটি আপনার উত্তরকে আরও মূল্যবান করে তুলবে।
ড্যানিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.