গিতের মধ্যে কেবল বর্তমান শাখাটি দেখান


356

আমি এটির জন্য একটি বিশেষ গিট কমান্ড সন্ধান করার চেষ্টা করেছি, তবে আমি একটি খুঁজে পাইনি। নীচের চেয়ে ছোট বা দ্রুত কিছু আছে কি?

git branch | awk '/\*/ { print $2; }'

1
আমি মনে করি এটি বর্তমান শাখা পাওয়ার দ্রুততম উপায়
এমমান্টাস


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

3
@ টোরেক - এখানে আরও একটি সহজ কাজ গিট দ্বারা কঠিন করে তুলেছে।
jww

@ চন্দ্রেয়জিকে পোস্ট করা লিঙ্কটির শীর্ষের উত্তরটি এর চেয়ে ধীর গতিতে!
কলম্ব ভান্ডাল

উত্তর:


659
$ git rev-parse --abbrev-ref HEAD
master

এটি গিট 1.6.3 বা আরও নতুনের সাথে কাজ করা উচিত।


গিট -১.6.২.২ সহ আমার পক্ষেও কাজ করে না। গিট রেভ-পার্স --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (যেমন রেভা-পার্স গ্রহণ করে না --abbrev-ref (ম্যান পৃষ্ঠায় নয়))
জেসনওয়ুফ

1
জেসনওয়ুফ, আমার জন্য 1.6.4.2 এ কাজ করে, ঠিক কখন এটি ঘটেছিল তা দেখার জন্য চেঞ্জলগের প্রয়োজন ;-)
মাইকেল ক্রেলিন - হ্যাকার

7
যতদূর আমি গিট লগগুলি থেকে বলতে পারি, এই বৈশিষ্ট্যটি ২০০৯-০৪-২০১৮ সালে একত্রিত করা হয়েছিল এবং সংস্করণ ১.6.৩ সহ প্রকাশ করা হয়েছিল।
আর্ল

1
আমি সত্যিই এটি বুঝতে চাই। এটি আসলে কীভাবে কাজ করে? এছাড়াও, দেখে মনে হচ্ছে --abbrev-ref অন্য কোন যুক্তির জন্য কিছুই ফিরিয়ে দেয় না। এটি সম্ভবত যুক্তি হিসাবে শিরোনাম থাকতে পারে না।
সেতাফায়ার

6
মনে রাখবেন যে আপনি যদি বিচ্ছিন্ন প্রতীকী রেফারেন্সে থাকেন (এর অর্থ হতে পারে আপনি কোনও শাখায় HEADmaster
রয়েছেন

129

গিট 1.8.1 এ আপনি গিট সিম্বলিক-রেফ কমান্ডটি "--short" বিকল্পের সাহায্যে ব্যবহার করতে পারেন :

$ git symbolic-ref HEAD
refs/heads/develop
$ git symbolic-ref --short HEAD
develop

ধন্যবাদ। আলিয়াস তৈরি করেছেন।
মাইকেল বুড় 21

7
গ্রহণযোগ্য উত্তর আইএমওর চেয়ে ভাল, কারণ এটি কোনও প্রতিশ্রুতি ছাড়াই
রেপোতে

2
fatal: ref HEAD is not a symbolic refট্র্যাভিসিসিআই বিল্ডের অংশ হিসাবে এটি চালানোর সময় ত্রুটি পাওয়া
kmanzana

জিআইটি ১.৯.১.১ `version 1. গিট সংস্করণ ১.৯.১ এর মারাত্মক সংস্করণে কাজ করছে বলে মনে হয় না: রেফ হেড একটি প্রতীকী রেফ নয়
রিচার্ড

আমার জন্য কাজ করে: গিট সংস্করণ 2.16.2.windows.1
Tagc ২

59

গীত 2.22 (Q2 এর 2019) এর মাধ্যমে, আপনি একটি সহজ পদ্ধতির হবে: git branch --show-current

দেখুন 0ecb1fc কমিট (25 অক্টোবর 2018) দ্বারা ড্যানিয়েলস Umanovskis ( umanovskis)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 3710f60 , 07 মার্চ 2019)

branch: --show-currentপ্রদর্শন বিকল্প প্রদর্শন

সাথে ডাকা হলে --show-current, git branchবর্তমান শাখার নামটি মুদ্রণ করবে এবং সমাপ্ত হবে।
কেবল আসল নামটিই ছাপানো হয় refs/heads
আলাদা হেড অবস্থায়, কিছুই আউটপুট হয় না।

স্ক্রিপ্টিং এবং ইন্টারেক্টিভ / তথ্যমূলক ব্যবহারের জন্য উভয়কেই উদ্দিষ্ট করে।
বিপরীতে git branch --list, কেবল শাখার নাম পেতে কোনও ফিল্টারিংয়ের প্রয়োজন হয় না।


15
শেষ অবধি, মনে হচ্ছে এটি শুরু থেকেই হওয়া উচিত ছিল, যোগ করা হয়েছে!
dtasev

27

আপনি আউটপুট আগ্রহী হতে পারে

git symbolic-ref HEAD

বিশেষত, আপনার প্রয়োজনগুলি এবং বিন্যাসের উপর নির্ভর করে আপনি যা করতে ইচ্ছুক হতে পারেন

basename $(git symbolic-ref HEAD)

অথবা

git symbolic-ref HEAD | cut -d/ -f3-

এবং তারপরে আবার .git/HEADফাইল রয়েছে যা আপনার পক্ষেও আগ্রহী হতে পারে।


2
আপনি সংক্ষিপ্ত git rev-parse --symbolic-full-nameকরতে পারেন git symbolic-ref
আর্ল

1
আপনার ব্যবহার করার দরকার নেই basenameবা cut; ব্যবহার BR=${BR#refs/heads/}(যেখানে বিআর আপনার পরিবর্তনের আউটপুট সংরক্ষণের নাম git symbolic-ref HEAD)
জাকুব নারেবস্কি

জাকুব, অবশ্যই না, তবে আপনার যদি ভেরিয়েবলের আউটপুট থাকে।
মাইকেল ক্রেলিন - হ্যাকার

5
git symbolic-ref --short HEADএছাড়াও করতে পারেন
ফাহাদ সিদ্দিকী

2
আপনার শাখার নামগুলিতে ("টাস্ক / ফু", "বৈশিষ্ট্য / বার") স্ল্যাশ থাকলে এটি ভঙ্গ হবে। সহকর্মীরা যখন সিদ্ধান্ত নিয়েছিলেন যে স্ল্যাশগুলি শীতল ছিল ... তখন আমার বিল্ডস্ক্রিপ্টগুলির একগুচ্ছ ব্যর্থ হতে শুরু করে ...
ভ্যাকারী

13

আমি যা বলতে পারি তা থেকে গিতের স্থানীয়ভাবে কেবল শাখাটি দেখানোর কোনও উপায় নেই, তাই আমি ব্যবহার করে যাচ্ছি:

git branch | grep '*'

3
এটি জিএনইউ কোর্টিলগুলির সাথে কাজ করার সময়, grep '*'নামমাত্র একটি সিনট্যাক্স ত্রুটি। আপনি সম্ভবত git branch | sed -n 's/^\* //p'যাইহোক চান । বা আসলে, ওপি প্রথম স্থানে যা পোস্ট করেছে, যা একই জিনিসটির সমান।
ট্রিপলি

@ ট্রিপলি আপনি আমাকে কেন আলোকপাত করতে পারেন কেন grep '*'নামমাত্র একটি বাক্য গঠন ত্রুটি?
জে কে এবিসি

1
@ জে কেএবিসি: @ ট্রিপলির অর্থ হ'ল এটি '*'একটি নিয়মিত প্রকাশ এবং এর ফলে এটি অবৈধ। আপনি সম্ভবত ব্যবহার করতে চান '[*]'(এটি হল *"শূন্য বা আরও বেশিবার" অপারেটরের পরিবর্তে অক্ষর )।
জোহাঁদোডো

2
@ জোহান্দো স্পষ্টতার জন্য আপনাকে ধন্যবাদ, এটি এখন আমার কাছে বোধগম্য। আমি সাধারণত এটি করিgrep '\*'
জে কে এবিসি

2
কেবলমাত্র এর সাথে শাখার নামটি কেটে ফেলতে পারেgit branch | grep "*" | cut -d' ' -f2
ফাহাদ সিদ্দিকী

6

আমার ধারণা এই দ্রুত হওয়া উচিত এবং পাইথন এপিআই ব্যবহার করা যেতে পারে:

git branch --contains HEAD
* master

4
এটি বর্তমান শাখাকে আউটপুট দেয় না। এটি শাখাগুলির তালিকা আউটপুট করে যা কমিট হেড পয়েন্টগুলিতে নির্দেশ করে। এবং হ্যাঁ, এটি ওভারল্যাপ করতে পারে তবে এর ফলে ভুল বোঝাবুঝি হতে পারে। আপনি যেখান থেকে একটি নতুন শাখা তৈরি করুন এবং আপনার লাইনটি আবার চেষ্টা করুন: দুটি শাখা। প্রশ্নটি " কেবলমাত্র বর্তমান শাখা " জন্য জিজ্ঞাসা করে ।
রোমেনভ্যালারি

4

আমি ব্যাবহার করছি

/etc/bash_completion.d/git

এটি গিট নিয়ে আসে এবং শাখার নাম এবং যুক্তি সমাপ্তির সাথে একটি প্রম্পট সরবরাহ করে।


এই প্রম্পটটি কীভাবে সক্রিয় করা যায়?
অ্যালেক্স

উবুন্টুতে, $ source /etc//bash_completion.d/git-prompt ফাইলটি বিভিন্ন সিস্টেমে আলাদাভাবে নামকরণ করা যেতে পারে। (দ্রষ্টব্য: sourceশব্দ মাত্র হিসাবে একই .(ব্যাশ মধ্যে ডট)।)
মাইকেল

1

এটি সংক্ষিপ্ত নয়, তবে এটি বিচ্ছিন্ন শাখাগুলির সাথেও কাজ করে:

git branch | awk -v FS=' ' '/\*/{print $NF}' | sed 's|[()]||g'

1

সম্পূর্ণতার জন্য echo $(__git_ps1), লিনাক্স অন্তত, আপনি প্রথম বন্ধনী দ্বারা বেষ্টিত বর্তমান শাখার নাম দিতে হবে।

এটি কিছু পরিস্থিতিতে হতে পারে কারণ এটি গিট কমান্ড নয় (গিটের উপর নির্ভর করে), বিশেষত বর্তমান শাখাটি প্রদর্শন করার জন্য আপনার বাশ কমান্ড প্রম্পট সেটআপ করার জন্য

উদাহরণ স্বরূপ:

/mnt/c/git/ConsoleApp1 (test-branch)> echo $(__git_ps1)
(test-branch)
/mnt/c/git/ConsoleApp1 (test-branch)> git checkout master
Switched to branch 'master'
/mnt/c/git/ConsoleApp1 (master)> echo $(__git_ps1)
(master)
/mnt/c/git/ConsoleApp1 (master)> cd ..
/mnt/c/git> echo $(__git_ps1)

/mnt/c/git>

আইটেমটি একটি উপনাম এবং ইন্টারেক্টিভ শেল স্ক্রিপ্টগুলির জন্য উপস্থিত থাকা উচিত। এটি সম্ভবত কোনও ধরণের স্ক্রিপ্টের জন্য অনুপস্থিত।
আলেকজান্ডার স্টোহর

0

কেউ এই ( ) সহায়ক হতে পারে । বর্তমান শাখাটি একটি * চিহ্ন দিয়ে দেখানো হয়েছে।git show-branch --current

host-78-65-229-191:idp-mobileid user-1$ git show-branch --current
! [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
 * [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
--
+  [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
+  [CICD-1283-pipeline-in-shared-libraries^] feat(CICD-1283): Used the renamed AWS pipeline.
+  [CICD-1283-pipeline-in-shared-libraries~2] feat(CICD-1283): Point to feature branches of shared libraries.
-- [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.