আপনি কোন গিট ট্যাগে আছেন তা দেখান?


216

বর্তমানে কোন ট্যাগটি চেক আউট হয়েছে তা খুঁজে পেতে আমার সমস্যা হচ্ছে।

যখন আমি করি:

git checkout tag1
git branch

আমি কোন ট্যাগে রয়েছি তা খুঁজে বের করতে পারি না। এটি কেবল লগ করে:

* (no branch)
master

কোন ট্যাগগুলি চেক আউট করা হয়েছে তা খুঁজে পাওয়া সম্ভব? উপরের উদাহরণে, এটি হবে tag1

উত্তর:


326

সম্পাদনা : জাকুব নরবস্কির আরও গিট-ফু রয়েছে। নিম্নলিখিত আরও সাধারণ কমান্ড নিখুঁতভাবে কাজ করে:

git describe --tags

(অথবা --tagsআপনি যদি কোনও টীকাকৃত ট্যাগটি পরীক্ষা করে দেখে থাকেন তবে tag আমার ট্যাগটি হালকা ওজনের so

মূল উত্তর নিম্নলিখিত:

git describe --exact-match --tags $(git log -n1 --pretty='%h')

আরও গিট-ফুযুক্ত কারও কাছে আরও মার্জিত সমাধান হতে পারে ...

এটি git-logআপনার চেক আউট থেকে শুরু হওয়া লগটিকে রিপোর্ট করে এমন সত্যটি উপস্থাপন করে। %hসংক্ষিপ্ত হ্যাশ মুদ্রণ। তারপরে git describe --exact-match --tagsট্যাগটি খুঁজে পাওয়া যায় (লাইটওয়েট বা টীকায়িত) যা প্রতিশ্রুতির সাথে মেলে।

$()সিনট্যাক্স উপরে অনুমান আপনি ব্যাশ বা অনুরূপ ব্যবহার করছেন।


22
git describeআপনি ঠিক (টীকাযুক্ত) ট্যাগে থাকলে বা <tag>-<n>-g<shortened sha-1>না থাকলে, <n>যেহেতু কমিটের সংখ্যা কোথায় তা কেবল ট্যাগের নাম ব্যবহার করেই দেখানো হবে <tag>
জাকুব নরবস্কি

1
@ জাকুব - ধন্যবাদ আমি --exact-matchআপনার মন্তব্যের আগে আমার উত্তর সেকেন্ডে যুক্ত করেছি। আপনি এটিকে সরাতে পারবেন এবং ফাজির ইনপুট থেকে এখনও ভাল তথ্য পেতে পারেন তা জেনে ভাল লাগছে।
bstpierre

ধন্যবাদ, আমি ঠিক এটিই খুঁজছিলাম। বিটিডব্লিউ, এমনকি গিট-বর্ণনা - সঠিক-ম্যাচ (--tags ছাড়াই) আমার জন্য কাজ করে।
গ্রামীণ

3
ব্যবহার git rev-parse HEADকরা এর চেয়ে আরও ভাল সমাধান git log -n1 --pretty='%h'... তবে কেন আপনি কেবল লেখেন না HEAD(বা কিছুই git describeহ্যান্ডের ডিফল্ট হিসাবে )?
জাকুব নারেবস্কি


71

এটি আমার পক্ষে কাজ করেছে git describe --tags --abbrev=0


2
হ্যাঁ. আপনি ঠিক সেই ট্যাগটিতে না থাকলেও এটি কাজ করে! :)
মার্টিন মুজতকো

13
Uhhh। ... আপনি যদি ট্যাগের পরে তিনটি হ্যাশটি চেকআউট করেন তবে আপনি "সেই ট্যাগে" নন। এটি আপনাকে সর্বশেষ ট্যাগটি আগে বা প্রতিশ্রুতিতে বলেছে যা পরীক্ষা করা হয়েছে। সুতরাং এটি ভুল।
20'7

উইন্ডোজেও কাজ করে :)
কাপলিনেটর

49

বর্তমান হেডে সমস্ত ট্যাগ দেখান (বা প্রতিশ্রুতিবদ্ধ)

git tag --points-at HEAD

1
মনে রাখবেন যে ফলাফলটি খালি উঠে আসার পরেও এই কমান্ডটি কমান্ড-লাইনে একটি ত্রুটির খবর দেয় না। বাগ? যদি সেই স্থানে একাধিক ট্যাগ থাকে তবে এটি একটি তালিকাও ফিরিয়ে দেয়। এটি সর্বোত্তম উত্তর তবে স্ক্রিপ্টাররা এই সতর্কতাগুলি মাথায় রেখে সতর্কতার সাথে এগিয়ে যেতে হবে।
ingyhere

@ Ingyhere এর মন্তব্য অনুসরণ করছেন হ্যাঁ এটি ভাল তথ্য যে এটিতে ত্রুটি নেই এবং লোকেরা সেই অনুযায়ী ফলাফলটি পরিচালনা করতে হবে। তবে আমি এটিকে বাগ বলব না। আমার ক্ষেত্রে, "ট্যাগ না থাকলে খালি" বৈধ। অন্যান্য ক্ষেত্রে, কেউ এটিকে ভেরিয়েবলে সংরক্ষণ করতে পারে তারপরে এটি খালি কিনা তা পরীক্ষা করে দেখুন (বাশ নির্দেশাবলীর লিঙ্ক)
ড্রিফ্যাচ্যাচার

23

git describeএকটি চীনামাটির বাসন আদেশ, যা আপনার এড়ানো উচিত:

http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html

পরিবর্তে, আমি ব্যবহার করেছি:

git name-rev --tags --name-only $(git rev-parse HEAD)

11
এটি "অপরিজ্ঞাত" ফিরছে
অচেনা

4
এটি ^0ট্যাগগুলির সাথে মিলে কমিটগুলির জন্য পিছনে আউটপুট দেয় (উদাহরণস্বরূপ, ট্যাগ 1.0এটির আউটপুটগুলির জন্য 1.0^0)। শুধুমাত্র গিট আউটপুট থাকার কোনও উপায় আছে 1.0, বা এর জন্য আমার কী উপকার করা উচিত?
ড্যানিয়েল সেরোদিও

13
কিছু ধারণাগত নীটপিকিং: আমি মনে করি আপনি চীনামাটির বাসন এবং নদীর গভীরতানির্ণয়ের অর্থগুলি উল্টিয়ে দিয়েছেন। চীনামাটির বাসন ব্যবহার করা ঠিক আছে, এটি উচ্চ স্তরের এবং সাধারণ ব্যবহারের জন্য বোঝানো হয় । নদীর গভীরতানির্ণয় ist অভ্যন্তরীণ (নাম হিসাবে বোঝা যায়) এবং শুধুমাত্র সুপারিশ করা হয় না কারণ গিট বিকাশকারীরা তাদের আর্গুমেন্ট এবং আউটপুট পরিবর্তন করার অধিকার সংরক্ষণ করে। সুতরাং আপনার প্রথম পরামর্শটি আসলে কিছুটা বেশি উপযুক্ত one
লিও অ্যান্টুন

5
সংযুক্ত নিবন্ধটি "গিট শাখা" ব্যবহার এড়াতে বলেছে কারণ এটি এই ব্যবহারের ক্ষেত্রে কাজ করে না। গিট বিবরণ ব্যবহার এড়াতে কোনও ভাল কারণ আমি ভাবতে পারি না। লিও যেমন বলেছেন, "পোরসিলাইন" কমান্ডগুলি হ'ল কমান্ডগুলি হ'ল আপনার ব্যবহার করা উচিত। প্লাম্বিং কমান্ডগুলি এড়িয়ে চলুন যতক্ষণ না আপনি সত্যিই জানেন যে আপনি কী করছেন। "গিট বর্ণনা" দুর্দান্ত কাজ করে।
ড্যানি

4
"চীনামাটির" কমান্ডগুলি হ'ল আপনার ব্যবহার করা উচিত, আপনার এড়ানো উচিত নয়। এগুলি হ'ল কমান্ডগুলি যার আউটপুট মেশিনটি পঠনযোগ্য এবং ভবিষ্যতের সংস্করণগুলিতে পরিবর্তিত হবে না, তাই স্ক্রিপ্টগুলিতে নির্ভর করা যেতে পারে Non পাঠযোগ্য, কারণ গুরুত্বপূর্ণ কিছু আসলে পরিবর্তিত হয়েছে।
rjmunro

22

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

আপনি কোনও সম্পাদনা করতে না চাইলে ট্যাগটি পরীক্ষা করা ঠিক আছে okay আপনি যদি কেবল ফাইলের বিষয়বস্তুগুলি পরীক্ষা করে দেখেন, বা আপনি কোনও ট্যাগটি আপনার প্রকল্পটি তৈরি করতে চান তবে যতক্ষণ আপনি কোনও কমিট না করেন ততক্ষণgit checkout my_tag ফাইলগুলির সাথে কাজ করা ঠিক আছে । আপনি যদি ফাইলগুলি সংশোধন শুরু করতে চান তবে আপনার ট্যাগের উপর ভিত্তি করে একটি শাখা তৈরি করা উচিত:

$ git checkout -b my_tag_branch my_tag

my_tag_branchথেকে শুরু করে একটি নতুন শাখা তৈরি করবে my_tag। এই শাখায় পরিবর্তন করা নিরাপদ।


1
চমত্কার উত্তর।
প্যানোস ফিলিয়ানোস

9

git log --decorate

এটি আপনাকে জানিয়ে দেবে যে রেফগুলি বর্তমানে চেক করা কমিটের দিকে কী নির্দেশ করছে to

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