গিটে বর্তমান শাখার নাম কীভাবে পাবেন?


2591

আমি সাবসার্জন ব্যাকগ্রাউন্ড থেকে এসেছি এবং আমার যখন শাখা ছিল তখন আমি জানতাম যে "এই কার্যকারী ফাইলগুলি এই শাখায় নির্দেশ করে" দিয়ে আমি কী নিয়ে কাজ করছি।

কিন্তু গিটের সাথে আমি নিশ্চিত নই যে আমি কখন নেটবিনস বা নোটপ্যাড ++ এ কোনও ফাইল সম্পাদনা করছি, তা মাস্টার বা অন্য কোনও শাখায় আবদ্ধ কিনা।

gitবাশে কোনও সমস্যা নেই , এটি আমাকে বলছে আমি কী করছি।


11
আপনার আইডিই ফাইলটি .git/HEADসম্ভবত
টিনো

101
stackoverflow.com/questions/1417957/... $ Git Rev-পার্স --abbrev-সুত্র মস্তক
fantastory



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

উত্তর:


2296
git branch

আপনার রেপোর সমস্ত স্থানীয় শাখা প্রদর্শন করা উচিত। তারকাচিহ্নিত শাখাটি আপনার বর্তমান শাখা।

আপনি যে শাখায় রয়েছেন কেবল তার নামটি পুনরুদ্ধার করতে চাইলে আপনি এটি করতে পারেন:

git rev-parse --abbrev-ref HEAD

তবে এটি আমাকে নোটপ্যাড ++ এবং নেটবিনগুলির সাথে সহায়তা করে না। কেবল গিট বাশ (এবং সম্ভবত ভিম) এবং আমি এটি উল্লেখ করেছি। আমি অন্যান্য আইডির এবং পাঠ্য সম্পাদকদের সাথে কাজ করার জন্য চেষ্টা করছি যা কমান্ড লাইন নয় are
মাইক 628

@ মাইক 628 আসলে আপনি জিইআইআইয়ের মাধ্যমে অ্যাক্সেসযোগ্য কিছু না চাইলে তারা আপনাকে সহায়তা করছে। সঠিক?
টেডেক

2
আপনি যদি Eclipse এ কাজ করতে ইচ্ছুক হন তবে "eGit" নামক একটি প্রোগ্রাম রয়েছে যাতে একটি GUI রয়েছে যা আপনাকে এর সমস্ত ভান্ডারের জন্য বর্তমান শাখাটি বলবে। অন্যথায়, আমি জানি না .. আপনি যে কোনও প্লাগইন ব্যবহার করতে চান তা আপনার পছন্দসই প্রোগ্রামের সাথে সামঞ্জস্যপূর্ণ (যদি থাকে তবে) এর স্রষ্টার করুণায় থাকবেন।
রবার্টদেব

2
একটি কাজ করার git checkout --orphan fooপরে git branchশাখা প্রদর্শন করতে ব্যর্থ foo। যেখানে git symbolic-ref HEADপরামর্শ হিসাবে অন্য উত্তর কাজ করেছে।
মার্কাস জুনিয়াস ব্রুটাস

2
ডাউনওয়েট, আমরা কেবল বর্তমান শাখাটি স্টাডআউট হিসাবে চাই, সমস্ত শাখা নয়
আলেকজান্ডার মিলস

4656

তালিকাভুক্ত অন্যান্য শাখা বাদে আপনি যে বর্তমান শাখায় রয়েছেন তা প্রদর্শনের জন্য আপনি নিম্নলিখিতটি করতে পারেন:

git rev-parse --abbrev-ref HEAD

রেফারেন্স:


132
@ ক্রিসনেলসন, কারণ এটি সমস্ত শাখার দীর্ঘ তালিকা না করে কেবলমাত্র বর্তমান শাখা প্রদর্শন করে।
অবাকর

73
ভাল, দুঃখজনকভাবে আপনি যদি 'বিচ্ছিন্ন হেড' অবস্থায় থাকেন তবে এটি কাজ করে না (এটি কেবল 'হেড' আউটপুট করে দেয়, যা সম্পূর্ণ অকেজো)।
কার্লোস ক্যাম্পাদ্রেস

34
গিট ইন্টারনালদের দ্বারা অনুমান করা হয় আপনি যদি 'বিচ্ছিন্ন হেড' অবস্থায় থাকেন তবে তার শাখার কোনও ট্র্যাকিং নেই যা তার সম্পর্কিত , কারণ git branchশোগুলি * (no branch), যা
নিরর্থকও

76
"গিট সিম্বলিক-রেফ - শর্ট হেড" এছাড়াও একই উদ্দেশ্যে কাজ করে
সন্ধ্যাশ্রয়ী লেখক

22
git rev-parse --abbrev-ref HEAD 2>/dev/null / ডি / নাল অংশটি আপনাকে ত্রুটি দেখা থেকে বাধা দেয় যদি আপনি কেবলমাত্র একটি নতুন সংগ্রহশালা তৈরি করেন যা এখনও শিরোনামহীন।
প্যারাডিসটাব

523

আপনার কাছে git symbolic-ref HEADযা সম্পূর্ণ রেপস্পেক প্রদর্শন করে।

গিট ভি 1 .8 এবং তার পরে কেবল শাখার নামটি দেখানোর জন্য (এটি নির্দেশ করার জন্য গ্রেগকে ধন্যবাদ জানাই):

git symbolic-ref --short HEAD

গিট ভি 1.7 + তে আপনি এটি করতে পারেন:

git rev-parse --abbrev-ref HEAD

আপনি কোনও শাখায় থাকলে উভয়েরই একই শাখার নাম দেওয়া উচিত। আপনি যদি আলাদা আলাদা মাথাতে থাকেন তবে উত্তরগুলি পৃথক হয়।

বিঃদ্রঃ:

আগের ক্লায়েন্টে, এটি কাজ করে বলে মনে হচ্ছে:

git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

- দারিয়ান 26. মার্চ 2014


7
অন্যান্য সমস্ত উত্তর হিসাবে, আপনি 'বিচ্ছিন্ন হেড' অবস্থায় থাকাকালীন এটি কাজ করে না
কার্লোস ক্যাম্প্ডারস

51
@ কার্লোসক্যাম্পার্ডারস: আপনি যদি আলাদা হেড অবস্থায় থাকেন তবে বর্তমান শাখার মতো জিনিস নেই। সর্বোপরি, আপনি যে প্রতিশ্রুতিতে রয়েছেন তা শূন্য, এক বা একাধিক শাখাগুলি দ্বারা পৌঁছতে পারে।
ফ্লিম 14

2
শিরোনাম নেই যখন খালি গিট সংগ্রহস্থলগুলিতে সমস্যা তৈরি করে
অ্যার্ন

8
গিট সংস্করণ সহ ২.৪.৪ git rev-parse --abbrev-ref HEADদেখায় HEADযখন আপনি বিচ্ছিন্ন হয়ে গেছেন ।
পিটারহিল

সর্বোত্তম উত্তরটি এখনও রয়েছে git symbolic-ref HEAD | sed -e "s/^refs\/heads\///" যেহেতু এটি HEAD detached at a63917fকোনও বিচ্ছিন্ন অবস্থায় যখন এর মতো স্ট্রিং প্রদর্শিত হবে , অন্য উত্তরগুলির তুলনায় যা কোনও কিছুই বা শিরোনাম দেখায় না। এটা গুরুত্বপূর্ণ.
বার্নার্ড

264

আমার নিজস্ব রেফারেন্সের জন্য (তবে এটি অন্যের পক্ষে দরকারী হতে পারে) আমি এই থ্রেডে উল্লিখিত বেশিরভাগ (বেসিক কমান্ড লাইন) কৌশলগুলির একটি ওভারভিউ তৈরি করেছি, প্রতিটি বেশ কয়েকটি ব্যবহারের ক্ষেত্রে প্রয়োগ করা হয়েছে: হেড হ'ল (নির্দেশ করে):

  • স্থানীয় শাখা (মাস্টার)
  • স্থানীয় শাখার সাথে সুসংগতভাবে দূরবর্তী ট্র্যাকিং শাখা (উত্সাহ / মাস্টার হিসাবে একই প্রতিশ্রুতিবদ্ধ)
  • দূরবর্তী ট্র্যাকিং শাখা, কোনও স্থানীয় শাখার সাথে সিঙ্ক নয় (উত্স / বৈশিষ্ট্য-ফু)
  • ট্যাগ (v1.2.3)
  • সাবমডিউল (সাবমডিউল ডিরেক্টরিতে চালিত)
  • সাধারণ বিচ্ছিন্ন মাথা (উপরের কিছুই নয়)

ফলাফল:

  • git branch | sed -n '/\* /s///p'
    • স্থানীয় শাখা: master
    • রিমোট ট্র্যাকিং শাখা (সিঙ্কে): (detached from origin/master)
    • রিমোট ট্র্যাকিং শাখা (সিঙ্কে নেই): (detached from origin/feature-foo)
    • ট্যাগ: (detached from v1.2.3)
    • submodule: (HEAD detached at 285f294)
    • সাধারণ বিচ্ছিন্ন মাথা: (detached from 285f294)
  • git status | head -1
    • স্থানীয় শাখা: # On branch master
    • রিমোট ট্র্যাকিং শাখা (সিঙ্কে): # HEAD detached at origin/master
    • রিমোট ট্র্যাকিং শাখা (সিঙ্কে নেই): # HEAD detached at origin/feature-foo
    • ট্যাগ: # HEAD detached at v1.2.3
    • submodule: # HEAD detached at 285f294
    • সাধারণ বিচ্ছিন্ন মাথা: # HEAD detached at 285f294
  • git describe --all
    • স্থানীয় শাখা: heads/master
    • রিমোট ট্র্যাকিং শাখা (সিঙ্কে): heads/master(নোট: নয় remotes/origin/master )
    • রিমোট ট্র্যাকিং শাখা (সিঙ্কে নেই): remotes/origin/feature-foo
    • ট্যাগ: v1.2.3
    • submodule: remotes/origin/HEAD
    • সাধারণ বিচ্ছিন্ন মাথা: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • স্থানীয় শাখা: ref: refs/heads/master
    • submodule: cat: .git/HEAD: Not a directory
    • অন্যান্য সমস্ত ব্যবহারের ক্ষেত্রে: সংশ্লিষ্ট কমিটের এসএইচএ
  • git rev-parse --abbrev-ref HEAD
    • স্থানীয় শাখা: master
    • অন্যান্য সমস্ত ব্যবহারের কেস: HEAD
  • git symbolic-ref --short HEAD
    • স্থানীয় শাখা: master
    • অন্যান্য সমস্ত ব্যবহারের কেস: fatal: ref HEAD is not a symbolic ref

(এফওয়াইআই এটি গিট সংস্করণ 1.8.3.1 দিয়ে করা হয়েছিল)


6
সংক্ষেপে বলতে গেলে, কেউই হাতের মুঠোয় যা করতে পারে তা তেমন করে না বলে মনে হয়।
বুকজোর

6
এটি আমার পক্ষে বেশ সহায়ক ছিল: আমার জন্য git describe --all --exact-match 2>/dev/null | sed 's=.*/=='সেরা সমাধান (ট্যাগ এবং শাখা প্রধানের জন্য ভাল নাম, এলোমেলো বিচ্ছিন্ন মাথাগুলির জন্য কোনও আউটপুট ছিল না
অ্যালেক্স ডুপুয়

1
তবে, আমি সবেমাত্র আবিষ্কার করেছি যে git describeএকই প্রতিশ্রুতি উল্লেখ করে যখন একাধিক শাখা থাকে তখন ব্যবহার করা মারাত্মক ব্যর্থতা লাভ করে git checkout -b foo- যেমন ঠিক পরে - এটি তাদের মধ্যে একটিকে নির্বিচারে ব্যবহার করে (মনে হয় সম্ভবত সর্বাধিক তৈরি হওয়া একটি)। ফিল্টারযুক্ত আউটপুট থেকে ব্যবহার করার জন্য আমি আমার কৌশল পরিবর্তন করব git branchএবং git describeফলাফলটি যদি কোনও বিচ্ছিন্ন মাথা সম্পর্কে কিছু করে তবেই ব্যবহার করব ।
অ্যালেক্স দুপুয়

প্রকৃতপক্ষে, git branch --no-colorফাইলের নামটি বিরক্তিকর টার্মিনাল এস্কেপ কোড থেকে মুক্ত কিনা তা নিশ্চিত করার জন্য আমাকে ব্যবহার করতে হবে।
অ্যালেক্স দুপুয়

2
এটি আমার জন্য একাধিকবার সত্যই সহায়ক হয়েছে, এত পুঙ্খানুপুঙ্খভাবে থাকার জন্য ধন্যবাদ!
এলিস পুরসেল

153

গিটের ২.২২ সংস্করণ হিসাবে আপনি কেবল ব্যবহার করতে পারেন:

git branch --show-current

ম্যান পেজ অনুসারে:

বর্তমান শাখার নাম মুদ্রণ করুন। আলাদা হেড অবস্থায়, কিছুই মুদ্রিত হয় না।


2
হ্যাঁ, আমি সেই পৃষ্ঠার মন্তব্যে গত মার্চ মাসে উল্লেখ করেছি: স্ট্যাকওভারফ্লো . com / প্রশ্নস / 62২৪৫৫70০/২ । এবং স্ট্যাকওভারফ্লো . com/a/55088865/6309 এ
ভনসি

5
অন্তত উল্লেখ করুন এটি পৃথক হেড অবস্থায় কাজ করে না । কোনও
কিছুর

136

আরও একটি বিকল্প:

git name-rev --name-only HEAD

এটি দিয়ে পুনরায় উদ্ধার করা যাবেecho ${$(git symbolic-ref --quiet HEAD)#refs/heads/}
Antoine:

12
মাস্টার এবং বৈশিষ্ট্য শাখার (যেমন মার্জ চলাকালীন) হেড একই রকম হয় তবে এটি কাজ করে না। এটি বৈশিষ্ট্য শাখায় মৃত্যুদন্ড কার্যকর করা হলেও 'মাস্টার' ফেরত দেয়।
ওরেস্ট হেরা

1
git checkout master && git name-rev --name-only HEAD # ac-187এটি প্রত্যাশার মতো কাজ করে না
আলেকজান্ডার আবশকিন

আমি মার্জ হওয়ার ঠিক আগে এটিকে একটি পরিবর্তনশীল হিসাবে সংরক্ষণ করি এবং কোনও নির্দিষ্ট প্রতিশ্রুতি চেকআউট করলে আমার হেড ডি-অ্যাটাচড হতে পারে। এই ক্ষেত্রে এটি সূক্ষ্ম কাজ করে।
ইশান সেজওয়াল

4
আমি জেনকিন্স পাইপলাইন থেকে এটি করছি। সুতরাং এটি আপাতত আমার পক্ষে সেরা উত্তর হয়ে উঠেছে। করছেন git branch --listশুধু বলে * (HEAD detached at 7127db5)। এরকম git rev-parse --abbrev-ref HEADঠিক বলেছেন HEADইত্যাদি।
মিগ 82

91

যথেষ্ট সহজ, আমি এটি একটি ওলাইনারে পেয়েছি (ব্যাশ)

git branch | sed -n '/\* /s///p'

(ক্রেডিট: সীমাবদ্ধ প্রায়শ্চিত্ত)

এবং আমি সেখানে থাকাকালীন দূরবর্তী ট্র্যাকিং শাখাটি পাওয়ার জন্য এক লাইনার (যদি থাকে)

git rev-parse --symbolic-full-name --abbrev-ref @{u}

8
অনেক বেশি স্ল্যাশ! :) sed -n 's/\* //p'কৌতুক করে। যদিও আমি অদ্ভুত দিকে ঝোঁক করছি তাই এটি দিয়ে নোঙ্গর করব sed -n 's/^\* //p'
মার্ক রিড

64

আপনি কেবল লিনাক্স-এ কমান্ড লাইন (কনসোল) টাইপ করতে পারেন সংগ্রহস্থল ডিরেক্টরিতে:

$ git status

এবং আপনি কিছু পাঠ্য দেখতে পাবেন যার মধ্যে কিছুটির অনুরূপ:

...
On branch master
...

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


2
আপনি যা করতে চান তার উপর ভিত্তি করে, আপনি git statusকেবল আউটপুটের প্রথম লাইনটি ব্যবহার করতে পারেন এবং এর সাথে git status | head -1কিছু পাওয়া যায় # On branch master। আমি নিশ্চিত সংস্করণের পার্থক্যগুলিও তার জন্য জবাবদিহি করতে হবে।
জোশুয়া পিন্টার

@ জোশপিন্টার: আপনি এটিও ব্যবহার করতে পারেন git status | grep 'On branch', যার একই প্রভাব হওয়া উচিত (এটির অর্থ এই নয় যে এটি যদি আপনার গীতের সংস্করণটি ভিন্নভাবে প্রদর্শন করে তবে) এটি ঘটবে। বা git branch | grep '*', যা এর শুরুতে একটি তারা দিয়ে শাখার নামটি দেখাবে।
টেডেক

হ্যাঁ, এটি পাশাপাশি কাজ করে এবং আরও নমনীয় হতে পারে। একটি দেব রেলস অ্যাপ্লিকেশনে কেবল শাখার নাম দেখানোর জন্য আমার চূড়ান্ত ফলাফলটি ছিল:<tick>git status | head -1<tick>.gsub('# On branch ', '')
জোশুয়া পিন্টার

1
git statusযদি অনেকগুলি ফাইল পরিচালনা করা হয় তবে মানটি ফিরতে দীর্ঘ সময় নিতে পারে।
টিন ম্যান

হ্যাঁ, আপনি যদি কোনও ওয়েবপৃষ্ঠায় শাখাটি মুদ্রণ করতে চান তবে উদাহরণস্বরূপ, git statusপুরো পৃষ্ঠার প্রজন্মের সময়টিকে ট্যাঙ্ক করতে পারে।
আর্টেম রাশাকোভস্কিই

36
git symbolic-ref -q --short HEAD

আমি এটি স্ক্রিপ্টগুলিতে ব্যবহার করি যার বর্তমান শাখার নাম প্রয়োজন। এটি আপনাকে হেডের বর্তমান সংক্ষিপ্ত প্রতীকী রেফারেন্স দেখাবে, যা আপনার বর্তমান শাখার নাম হবে।


1
ধন্যবাদ, দুর্দান্ত কাজ করে! - আমি এটির সাথে আমার স্ক্রিপ্টে "-সি পথ_ টু_ফোল্ডার" যুক্ত করছি।
টনি

1
এটি একটি দুর্দান্ত সমাধান কারণ--q বিকল্পের সাহায্যে এটি "বিচ্ছিন্ন হেড" অবস্থায় একটি ত্রুটি কোড দেয় তবে স্ট্যাডারে কোনও কিছুই মুদ্রণ করে না।
হলিডেভ

এটিই একমাত্র সমাধান যা আমার জন্য বিনা প্রতিশ্রুতি ছাড়াই একটি তাজা
রেপোতে কাজ করেছিল

26
git branch | grep -e "^*" | cut -d' ' -f 2

কেবল শাখার নামটি প্রদর্শন করবে


যদি আপনার শাখাটি "* (এসইএম_বিআরএনএইচআরএইচএইচডে বিচ্ছিন্ন)" এর মতো কিছু দেখায়, তবে এই "গিট শাখা | গ্রেপ -e" ^ * "| কাট-ডি '' -ফ 5 | কাট-ডি ')' -f 1 চেষ্টা করুন "
ডিলান ক্যাপ

আমি এখনই বর্তমান শাখার নাম পেতে এই ঠিক একই স্ক্রিপ্ট তৈরি করেছি। আমি অনুভব করেছি যে এটি ভিন্নতার সাথে সহায়তা করতে পারে।
tggagne

25

git branch কেবল বর্তমান শাখার নাম দেখান।

যদিও গিট শাখা আপনাকে সমস্ত শাখা দেখাবে এবং একটি বর্তমানের সাথে একটি নক্ষত্র দিয়ে হাইলাইট করবে, প্রচুর শাখার সাথে কাজ করার সময় এটি খুব জটিল হতে পারে can

আপনি বর্তমানে যে শাখাটি চালু আছেন কেবল তা দেখাতে, ব্যবহার করুন:

git rev-parse --abbrev-ref HEAD

এটি সিআই, এবং অন্যান্য বিল্ড সরঞ্জামগুলির জন্য দুর্দান্ত!
phouse512

এটি কোনও স্ক্রিপ্টে ব্যবহারের জন্য সেরা উত্তর
বেন কেইল

1
@ ডিলাননিচলসন git branch --containsকখনও কখনও একাধিক শাখার তালিকা তৈরি করে।
জো চকো 11

22

অলিভার রেফালোর সমান দৈর্ঘ্যের একটি কমান্ড লাইন সমাধান পেয়েছে , ভাল অল'আরকে ব্যবহার করে:

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

awk" {}রিজেক্সের সাথে মিল রেখে লাইনে স্টাফটি করুন" হিসাবে পড়েছেন । ডিফল্টরূপে এটি হোয়াইটস্পেস-সীমাবদ্ধ ক্ষেত্রগুলি ধরে নেয়, সুতরাং আপনি দ্বিতীয়টি মুদ্রণ করুন। আপনি যদি ধরে নিতে পারেন যে আপনার শাখার সাথে কেবলমাত্র রেখায় * রয়েছে, আপনি drop ড্রপ করতে পারেন ^ আহ, বাশ গল্ফ!


19
#!/bin/bash
function git.branch {
  br=`git branch | grep "*"`
  echo ${br/* /}
}
git.branch

18

গিট-সচেতন শেল প্রম্পট কেন ব্যবহার করবেন না, যা আপনাকে বর্তমান শাখার নাম বলবে? git statusএছাড়াও সাহায্য করে।


কিভাবে git-prompt.sh থেকে contrib/এটা আছে (Git সংস্করণ 2.3.0), কারণ যে সংজ্ঞায়িত __git_ps1সাহায্যকারী ফাংশন:

  1. প্রথমত, রিবেস প্রগতিতে সনাক্ত হলে বিশেষ কেস রয়েছে । গিটটি পারমাণবিক করতে রিবেস প্রক্রিয়া চলাকালীন নামবিহীন শাখা (বিচ্ছিন্ন হেড) ব্যবহার করে এবং মূল শাখাটি অন্য কোথাও সংরক্ষণ করা হয়।

  2. যদি .git/HEADফাইলটি একটি সিম্বলিক লিঙ্ক (ক খুব বিরল ক্ষেত্রে গীত প্রাচীন ইতিহাস থেকে), এটা ব্যবহারgit symbolic-ref HEAD 2>/dev/null

  3. অন্যথায়, এটি .git/HEADফাইল পড়ে । পরবর্তী পদক্ষেপগুলি এর বিষয়বস্তুর উপর নির্ভর করে:

    • যদি এই ফাইলটি বিদ্যমান না থাকে তবে কোনও বর্তমান শাখা নেই। সংগ্রহস্থল খালি থাকলে সাধারণত এটি ঘটে।

    • এটি যদি 'ref: 'উপসর্গ দিয়ে শুরু হয় , তবে .git/HEADতা সিমরেফ (প্রতীকী রেফারেন্স), এবং আমরা সাধারণ শাখায় আছি। পুরো নাম পেতে এই উপসর্গটি স্ট্রিপ করুন এবং refs/heads/বর্তমান শাখার সংক্ষিপ্ত নাম পেতে স্ট্রিপ করুন :

      b="${head#ref: }"
      # ...
      b=${b##refs/heads/}
      
    • যদি এটি শুরু না হয় 'ref: ', তবে এটি হেডকে আলাদা করা হয় (বেনামে শাখা), সরাসরি কিছু প্রতিশ্রুতিবদ্ধ দিকে নির্দেশ করে। ব্যবহারের git describe ...বর্তমান লিখতে পাঠযোগ্য আকারে কমিট।

আমি আশা করি এটি সাহায্য করবে.


3
এবং আপনি যদি গিট-সচেতন শেল প্রম্পট বিকাশ করছেন তবে এখানে উত্তরগুলির মধ্যে আপনার কোনটি ব্যবহার করা উচিত? কচ্ছপ সমস্ত ভাবে নামছে।
ট্রিপলি

1
@ ট্রিপলি: github.com/git/git/blob/master/contrib/completion/git-prompt.sh থেকে ধারণা ধার করুন
জাকব

4
রেকর্ডের জন্য কোনটি এমনটি করছে git describe --contains --all HEADযা বর্তমানে আমি এই পৃষ্ঠায় অন্য কোথাও দেখছি না। আমি নিশ্চিত যে আপনি জানেন, কেবলমাত্র লিঙ্ক-উত্তর উত্তরগুলি স্ট্যাকওভারফ্লোতে প্রস্তাবিত নয় recommended
ট্রিপলি

2
@ ট্রাইলি: আমি কীভাবে git-prompt.sh(ওরফে __git_ps1) এটি করে তা একটি ব্যাখ্যা যুক্ত করেছি ...
জাকুব নরবস্কি

17

গিট স্ট্যাটাসের জন্য একটি কম গোলমাল সংস্করণটি কৌশলটি করবে

git status -bsuno

এটি প্রিন্ট আউট

## branch-name

1
## বিকাশ ... উত্স / বিকাশ
কল্পনা সনি

16

দুঃখিত, এটি অন্য কমান্ড-লাইনের উত্তর, তবে আমি যখন এই প্রশ্নটি পেয়েছি তখনই আমি এটি খুঁজছিলাম এবং এর মধ্যে অনেকগুলি উত্তর সহায়ক ছিল। আমার সমাধানটি নিম্নলিখিত ব্যাশ শেল ফাংশন:

get_branch () {
    git rev-parse --abbrev-ref HEAD | grep -v HEAD || \
    git describe --exact-match HEAD 2> /dev/null || \
    git rev-parse HEAD
}

এটি সর্বদা আমাকে মানব-পঠনযোগ্য এবং যুক্তি হিসাবে সরাসরি ব্যবহারযোগ্য উভয়ই দেওয়া উচিত git checkout

  • স্থানীয় শাখায়: feature/HS-0001
  • একটি বাঁধা প্রতিশ্রুতি উপর (বিচ্ছিন্ন): v3.29.5
  • প্রত্যন্ত শাখায় (বিচ্ছিন্ন, ট্যাগ নয়): SHA1
  • অন্য কোনও বিচ্ছিন্ন প্রতিশ্রুতিতে: SHA1 1

1
এটি পোস্ট করার জন্য ধন্যবাদ, অন্য উত্তরগুলির মধ্যে যেহেতু যুক্তি হিসাবে সর্বদা ব্যবহারযোগ্য কিছু উত্পাদন করার বিষয়ে যত্নশীল বলে মনে হয় নি git checkout
zwol

15

আপনি ওয়ার্কিং ডিরেক্টরি কমান্ডে গিট ব্যাশ ব্যবহার করতে পারেন নিম্নলিখিতটি

git status -b

এটি আপনাকে জানাবে যে আপনি কোন শাখায় আছেন সেখানে অনেকগুলি আদেশ রয়েছে যা তাদের কয়েকটিতে কার্যকর

-s

--short শর্ট ফরম্যাটে আউটপুট দিন।

-বি - ব্রাঞ্চ এমনকি সংক্ষিপ্ত-ফর্ম্যাটে শাখা এবং ট্র্যাকিংয়ের তথ্য দেখান।

--porcelain [=] স্ক্রিপ্টগুলির জন্য আউটপুটটিকে সহজে পার্সে ফর্ম্যাটটিতে দিন। এটি সংক্ষিপ্ত আউটপুটের মতো, তবে গিট সংস্করণ জুড়ে এবং ব্যবহারকারী কনফিগারেশন নির্বিশেষে স্থিতিশীল থাকবে। বিস্তারিত জানার জন্য নীচে দেখুন।

সংস্করণ পরামিতি বিন্যাস সংস্করণ নির্দিষ্ট করতে ব্যবহৃত হয়। এটি alচ্ছিক এবং মূল সংস্করণ ভি 1 ফর্ম্যাটের ডিফল্ট।

--long দীর্ঘ-ফর্ম্যাটে আউটপুট দিন। এটি ডিফল্ট।

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


14
git status 

পরিবর্তনের পাশাপাশি শাখার নামও দেবে।

যেমন

>git status
On branch master // <-- branch name here
.....

13

সময়ের সাথে সাথে, আমাদের শাখাগুলির সত্যিই দীর্ঘ তালিকা থাকতে পারে।

অন্য কয়েকটি সমাধানগুলি দুর্দান্ত হলেও, আমি যা করি তা এখানে (জ্যাকব এর উত্তর থেকে সরলীকৃত):

git branch | grep \*

এখন,

git status

কাজ করে, তবে কেবল যদি কোনও স্থানীয় পরিবর্তন হয়


13

আমি এই দুটি কমান্ডের যে কোনও একটি ব্যবহার করার পরামর্শ দিচ্ছি।

git branch | grep -e "^*" | cut -d' ' -f 2

অথবা

git status | sed -n 1p | cut -d' ' -f 3

বা (আরও ভার্বোজ)

git status -uno -bs| cut -d'#' -f 3 | cut -d . -f 1| sed -e 's/^[ \t]//1'| sed -n 1p


12

নেটবিনে, নিশ্চিত করুন যে সংস্করণীয় টীকাগুলি সক্ষম হয়েছে (দেখুন -> সংস্করণীয় লেবেলগুলি দেখান)। তারপরে আপনি প্রকল্পের নামের পাশের শাখার নাম দেখতে পাবেন।

http://netbeans.org/bugzilla/show_bug.cgi?id=213582


সংস্করণ টীকা সক্ষম করা সহ, তারপরে আপনাকে যা করতে হবে তা হল বর্তমান শাখাটি দেখার জন্য আপনার মাউসটিকে প্রকল্পের (বা ফাইল, বা প্রিয়) ফোল্ডারের উপরে রাখুন।
idclaar

12

এই সম্পর্কে কি?

{ git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null } | sed "s#refs/heads/##"

1
আরও ভাল উত্তর কারণ এটি পৃথক হেড কেসটি ভালভাবে পরিচালনা করে।
প্যাট

2
দেখে মনে হচ্ছে আপনার গিট কমান্ডগুলি মোড়ানোর জন্য () {not ব্যবহার করা উচিত নয়
প্যাট

@ প্যাট এর জন্য আলাদা সাবসেল বানানোর দরকার নেই, যেমনটি () করবে। } fine ঠিক আছে, আপনার একটি যুক্ত করার দরকার নেই; বা line এর আগে নিউলাইন} আসলে, আপনি কমান্ডগুলি গোষ্ঠীভুক্ত না করে আপনি কেবলমাত্র পুরোপুরি ছাড়তে পারবেন।
এআইজ

না symbolic-refঅংশ এছাড়াও প্রয়োজন --shortসঙ্গে branchname prefixing এড়াতে refs/heads/?
আরজেপি

11

আমার কাছে একটি বর্তমান স্ক্রিপ্ট রয়েছে git-cbr( বর্তমান শাখা ) যা বর্তমান শাখার নাম মুদ্রণ করে।

#!/bin/bash

git branch | grep -e "^*"

আমি এই স্ক্রিপ্টটি একটি কাস্টম ফোল্ডারে রেখেছি ( ~/.bin)। ফোল্ডারটি ভিতরে আছে $PATH

সুতরাং এখন যখন আমি গিট রেপোতে থাকি, আমি কেবল git cbrবর্তমান শাখার নামটি মুদ্রণের জন্য টাইপ করি ।

$ git cbr
* master

এটি কাজ করে কারণ gitকমান্ডটি তার প্রথম যুক্তিটি নেয় এবং একটি স্ক্রিপ্ট চালানোর চেষ্টা করে যা এর নামে চলে git-arg1। উদাহরণস্বরূপ , ইত্যাদি git branchনামে একটি স্ক্রিপ্ট চালানোর চেষ্টা করে git-branchetc.


11

আপনার গিট-ব্রাঞ্চের নামটি দেখানোর জন্য আপনি স্থায়ীভাবে আপনার ব্যাশ আউটপুট সেট আপ করতে পারেন। আপনি বিভিন্ন শাখা নিয়ে কাজ করার সময় এটি খুব সহজ হয়, $ git statusসব সময় টাইপ করার দরকার পড়ে না । গিথুব রেপো গিট-সচেতন-প্রম্পট

আপনার টার্মিনালটি খুলুন (ctrl-alt-t) এবং কমান্ডগুলি প্রবেশ করান

mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-prompt.git

আপনার উশশুরকে sudo nano ~/.bashrcকমান্ড (উবুন্টুর জন্য) দিয়ে সম্পাদনা করুন এবং নীচে নীচে যুক্ত করুন:

export GITAWAREPROMPT=~/.bash/git-aware-prompt
source "${GITAWAREPROMPT}/main.sh"

তারপরে কোডটি পেস্ট করুন

export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "

একই ফাইলটির শেষে আপনি ইনস্টলেশন কোডটি এর আগে আটকে দিয়েছিলেন। এটি আপনাকে রঙিন আউটপুট দেবে:এখানে চিত্র বর্ণনা লিখুন


10

নিম্নলিখিত শেল কমান্ড আপনাকে সেই শাখাকে জানিয়েছে যে আপনি বর্তমানে আছেন।

git branch | grep ^\*

আপনি যখন শাখাটি জানতে চান এবং ল্যাশ কমান্ডটি টাইপ করতে না চান এবং আপনি বাশ ব্যবহার করছেন, তখন কমান্ডটি একটি সংক্ষিপ্ত নাম দিন, উদাহরণস্বরূপ ওরফে cb, যেমন alias

alias cb='git branch | grep ^\*'

আপনি যখন শাখা মাস্টারে $থাকবেন এবং আপনার প্রম্পটটি হ'ল আপনি * masterনীচের মত পাবেন।

$ cb
* master

এটি প্রশ্নের উত্তর সরবরাহ করে না। কোনও লেখকের কাছ থেকে সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন। - পর্যালোচনা থেকে
রাশওয়ান এল

1
আপনি কেন সেটা মনে করেন?
mrrusof

আপনার মন্তব্যটি ওপির জন্য আপনার পোস্টের বর্ণনা করা উচিত, সেভাবে আপনার পোস্টটি বোঝা আরও সহজ হবে।
রাশওয়ান এল

1
নিখুঁত জ্ঞান তোলে।
mrrusof

1
আপনি যদি zsh ব্যবহার করেন তবে আপনাকে একক উদ্ধৃতিতে git branch | grep '^\*'
গ্রেপ রেজেক্সটি আবদ্ধ করতে হবে

9

বিচ্ছিন্ন মাথাতে থাকলে শাখার নাম বা SHA1 প্রদান করে:

git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD

এটি @ dmaestro12 এর উত্তরের এবং ট্যাগ সমর্থন ছাড়াই একটি সংক্ষিপ্ত সংস্করণ।


8
আরও ভাল:git symbolic-ref --quiet --short HEAD || git rev-parse --short HEAD
নীল রঙের

8

আপনি যদি সত্যিই চান তবে সর্বশেষ শাখা / ট্যাগটি পাশাপাশি পৃথক হেড অবস্থায়ও চেক আউট করা উচিত।

git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev

আপডেট আপনার কাছে যদি খুব খারাপ লাগে এবং ভয় থাকে না তবে এটি সুন্দর This

git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}'

এর rev | cut -d' ' -f1| revসাথে সরলীকরণ করা যায়awk '{print $NF}'
স্টিভ বুজনস

1
যদিও এটি মূর্খপ্রবণ নয়, যেহেতু আপনি হ্যাশ দ্বারা একটি নির্দিষ্ট সংশোধন চেকআউট করতে পারেন, যাতে রিফ্লোগটি দেখায় checkout: moving from ba7571b7fc5b8f31b8d0625821269afaa655577e to f68be8cf7bea917a5a0562b619e50368de0068a9এটি এখনও একটি দরকারী কৌশল যা কিছু ক্ষেত্রে দায়ের করতে সহায়তা করতে পারে।
অ্যালেক্স ডুপুয়

1
আরও সংক্ষিপ্ত করুনgit reflog | awk '$3=="checkout:" {print $NF; exit}'
jthill

6

আমি জানি এটি দেরি হয়ে গেছে তবে একটি লিনাক্স / ম্যাকের উপর, টার্মিনাল থেকে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন।

git status | sed -n 1p

ব্যাখ্যা:

গিট স্ট্যাটাস -> কর্মক্ষম গাছের মর্যাদা পায়
সেড-এন 1 পি -> স্থিতির বডি থেকে প্রথম লাইন পায়

উপরের কমান্ডের প্রতিক্রিয়া নিম্নরূপ দেখাবে:

"On branch your_branch_name"

2
head -1স্বাভাবিক উপায়ে হবে
বুকজার

5

আপনি এখানে GIT_BRANCH ভেরিয়েবলটি যেমন ব্যবহার করতে পারেন তেমন ব্যবহার করতে পারেন: https://wiki.jenkins-ci.org/display/JENKINS/Git+ প্লাগইন

গিট প্লাগইন আপনার স্ক্রিপ্টগুলিতে ব্যবহার করতে পারেন এমন কয়েকটি পরিবেশের ভেরিয়েবল সেট করে:

GIT_COMMIT - বর্তমানের SHA

GIT_BRANCH - বর্তমানে ব্যবহৃত শাখার নাম, যেমন "মাস্টার" বা "উত্স / ফু"

GIT_PREVIOUS_COMMIT - একই শাখা থেকে পূর্ববর্তী নির্মিত কমিটের SHA (শাখায় প্রথম বিল্ডিংয়ের বর্তমান এসএইচএ)

GIT_URL - সংগ্রহস্থল দূরবর্তী URL

GIT_URL_N - 1 টিরও বেশি রিমোট থাকা অবস্থায় সংগ্রহস্থল দূরবর্তী ইউআরএল, যেমন GIT_URL_1, GIT_URL_2

GIT_AUTHOR_EMAIL - প্রতিশ্রুতিবদ্ধ / লেখকের ইমেল

GIT_COMMITTER_EMAIL - প্রতিশ্রুতিবদ্ধ / লেখকের ইমেল


5

PS1ম্যাক ব্যবহার করে এটি যুক্ত করুন :

PS1='\W@\u >`[ -d .git ] && git branch | grep  ^*|cut -d" " -f2`> $ '

উপরের কমান্ডটি চালনার আগে:

এখানে চিত্র বর্ণনা লিখুন

কমান্ড চালানোর পরে:

এখানে চিত্র বর্ণনা লিখুন

চিন্তা করবেন না, এটি যদি জিআইটি সংগ্রহস্থল না হয় তবে এটি ত্রুটি প্রদর্শন করবে না কারণ [-d .git]কোন .gitফোল্ডারটি উপস্থিত রয়েছে কিনা তা যাচাই করে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.