গিতের শাখার বিবরণ


282

গীটে শাখাগুলির জন্য 'বর্ননা' দেওয়ার কোনও উপায় আছে কি?

আমি বর্ণনামূলক নামগুলি ব্যবহার করার চেষ্টা করার সময়, যখন একটি একক শাখায় কিছু সময়ের জন্য কাজ করা কখনও কখনও কেন আমি অন্যান্য বিষয়ের শাখা তৈরি করি তা স্মরণে রাখে। আমি শাখাগুলির জন্য বর্ণনামূলক নামগুলি ব্যবহার করার চেষ্টা করি, তবে আমি মনে করি একটি 'বিবরণ' (শাখার উদ্দেশ্য সম্পর্কে সংক্ষিপ্ত নোট) ভাল লাগবে।


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

2
এটি সত্যিই দরকারী বৈশিষ্ট্য হবে। গিট শাখা -a শাখার নামের পাশের বর্ণনা প্রদর্শন করতে পারে। সম্ভবত গিট নোটগুলি শাখাগুলিতে নোটগুলি সমর্থন করবে পাশাপাশি ভবিষ্যতে কমিট করবে?
habাব্বট

1
শাখার বিবরণ ধাক্কা দেওয়া যায় না, সুতরাং আপনি নিজের কাছে বার্তা প্রেরণ না করতে পারলে এগুলি বেশ নিরর্থক।
নুরেটিন

@ নুরেটিন ট্রু তবে আমার অনুরোধটি যাইহোক প্রাইভেট স্টাফের জন্য ছিল। আমি শুধু মনে করতে চেয়েছিলাম কেন আমি শাখাটি কাটছি।
নওফাল ইব্রাহিম

উত্তর:


200

গিট 1.7.9 এটি সমর্থন করে। থেকে 1.7.9 রিলিজ নোট :

 * "গিট শাখা - সম্পাদনা-বিবরণ" বর্ণনামূলক পাঠ্য যোগ করতে ব্যবহৃত হতে পারে
   একটি বিষয় শাখা সম্পর্কে কি তা বোঝাতে।

আপনি সে বৈশিষ্ট্যটি ২০১১ সালের সেপ্টেম্বরে ফিরে দেখতে পাচ্ছেন , ff9a332 , 739453a3 , বি 7200e8 দিয়ে :

struct branch_desc_cb {
  const char *config_name;
  const char *value;
};

--edit-description::

অন্যান্য বিভিন্ন কমান্ড (যেমন, request-pull) ব্যবহার করার জন্য শাখাটি কী, তা বোঝাতে একটি সম্পাদক খুলুন এবং পাঠ্য সম্পাদনা করুন ।

মনে রাখবেন যে এটি বিচ্ছিন্ন হেড শাখার পক্ষে কাজ করবে না।

এই বিবরণটি স্ক্রিপ্ট অনুরোধ-টান দ্বারা ব্যবহৃত হয়েছে: দেখুন c016814783 কমিট করুন , কিন্তু git merge --log

request-pull স্ট্যান্ডার্ড আউটপুটে দুটি কমিটের মধ্যে পরিবর্তনের সংক্ষিপ্তসার হিসাবে ব্যবহৃত একটি স্ক্রিপ্ট এবং এতে উত্পন্ন সারসংক্ষেপে প্রদত্ত URL টি অন্তর্ভুক্ত থাকে।

[@ আঁচলডাভ থেকে] দুর্ভাগ্যক্রমে, আপনি কোনও বিবরণগুলি টিপতে পারবেন না যেহেতু সেগুলি আপনার কনফিগে সঞ্চিত রয়েছে, এটি একটি দলে শাখার ডকুমেন্ট করার জন্য এটি অকেজো করে তোলে।


17
@ ওউইন: এই মুহুর্তে আমার একমাত্র উপায়টি হ'ল git config branch.topic.descriptionশাখার বিবরণ দেখানোর জন্য ব্যবহার করা topic। এটি .git/configফাইলটিতে সঞ্চিত ।
গ্রেগ হিউগিল

12
@ গ্রেগ হিউগিল আপনাকে ধন্যবাদ কয়েকটি অ্যালিয়াস সহ এটি দেখার কোনও খারাপ উপায় নয়। এখন যদি কেবলমাত্র git branchতালিকার বিবরণগুলি দেখায় ...
ওভেন

4
এই মুহুর্তে, পূর্ববর্তী মন্তব্যে উদ্ধৃত উদ্ধৃতিটি
pfalcon

166
দুর্ভাগ্যক্রমে, আপনি বিবরণগুলি ধাক্কা দিতে পারবেন না কারণ এটি আপনার কনফিগারেশনে সঞ্চিত রয়েছে, এটি একটি দলে শাখাগুলির ডকুমেন্ট করার জন্য এটি অকেজো করে তোলে।
অচল দ্যাভ

2
@ পেড্রোড্রিগস দুঃখজনকভাবে আপনার সংক্ষিপ্ত লিঙ্কটি নষ্ট হয়ে গেছে
এ্যাডাম

40

আপনি যদি README ব্যবহার করে শেষ না করেন , একটি গিট ওরফে সংশোধনকারী তৈরি করুন git checkoutযাতে আপনি যখনই শাখাগুলি স্যুইচ করেন তখন আপনার README প্রদর্শিত হয়।

উদাহরণস্বরূপ, এটিকে ~ / .gitconfig এ [ওরফে] এর অধীনে যুক্ত করুন

cor = !sh -c 'git checkout $1 && cat README' -

এর পরে, আপনি git cor <branch_name>শাখাটি স্যুইচ করতে দৌড়াতে পারেন এবং আপনি যে শাখায় সরিয়ে চলেছেন তার README প্রদর্শন করতে পারেন।


আমার জন্য $ 1 ভেরিয়েবল কাজ করছে না - এতে কিছুই নেই। আমি জানি না কেন (আমি সংস্করণ ব্যবহার করছি 1.7.11-msysgit.1)। আমি পরিবর্তে $ 0 ব্যবহার করছি। এবং সবকিছু ঠিক আছে।
shytikov

@ শাইটিকভ গিট এলিয়াসের জন্য যা যুক্তি ব্যবহার করে, বহনযোগ্যতার জন্য, আমি " sh -c" এর পরিবর্তে একটি দ্রুত ফাংশন ব্যবহার করি ; যেমন ,. alias = "!f() { git checkout "${1}" && cat README.md; }; f" (এই ক্ষেত্রে বন্ধনী এবং উদ্ধৃতিগুলি অপ্রয়োজনীয়, কেবল আরও জটিল কিছু করার জন্য তাদের প্রয়োজনের সম্পূর্ণতার জন্য অন্তর্ভুক্ত করা হয়েছে))
মাইকেল 25


কেবল সমস্যাটি হ'ল যদি README ফোল্ডারে না থাকে আপনি যখন চেকআউট করেন তখন এটি অভিযোগ করে।
আপএন্ডএডাম

@ ইউপএন্ডএডাম এটি একটি গিট ওরফে, সংজ্ঞায়িত ~/.gitconfig, অধীনে [alias]এবং উলের নামটি আসলে (এবং বোধগম্যভাবে বিভ্রান্তিকরভাবে) aliasআমার প্রকৃত কনফিগারেশন থেকে আহ্বান করা হয়েছে ( corএই উদাহরণটি সামঞ্জস্যপূর্ণ হওয়ার জন্য আমার নামটির নামকরণ করা উচিত ছিল)। আমার আসল aliasনাম: alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f" ব্যবহার: git alias {alias_name}বা git alias {alias_regexp}। ব্যাশ অনুরূপ aliasকমান্ড, যেমন, $ alias llউৎপাদনের (আমার জন্য): alias ll='ls -l'; এবং $ git alias brফলন: alias.br branch -v --list(এছাড়াও ব্যবহার করতে পারে $ git alias 'b.*':)
মাইকেল 25

31

git branch --edit-descriptionকোনও শাখার বিবরণ সেট করতে বা সম্পাদনা করতে ব্যবহার করুন ।

এখানে শেল ফাংশনটি দেখতে শাখাগুলি দেখতে অনুরূপ git branchতবে সংযুক্ত বিবরণ যুক্ত রয়েছে।

# Shows branches with descriptions
function gb() {
  current=$(git rev-parse --abbrev-ref HEAD)
  branches=$(git for-each-ref --format='%(refname)' refs/heads/ | sed 's|refs/heads/||')
  for branch in $branches; do
    desc=$(git config branch.$branch.description)
    if [ $branch == $current ]; then
      branch="* \033[0;32m$branch\033[0m"
     else
       branch="  $branch"
     fi
     echo -e "$branch \033[0;36m$desc\033[0m"
  done
}

gbচিত্রটি দণ্ডিত হওয়ার ক্ষেত্রে এখানে এখানে টেক্সট হিসাবে প্রদর্শিত হচ্ছে যা দেখতে দেখতে এখানে রয়েছে :

$ gb
* logging Log order details.  Waiting for clarification from business.
  master 
  sprocket Adding sprockets to the parts list.  Pending QA approval.

এবং একটি চিত্র হিসাবে, যাতে আপনি রঙগুলি দেখতে পারেন:

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


এটি কীভাবে গৃহীত উত্তর থেকে আলাদা (এক বছরেরও বেশি আগে পোস্ট করা)?
পিটার মর্টেনসেন


28

READMEদ্বারা প্রস্তাবিত ক্রিস জে , কাজ করতে পারেন এটা একটা দিয়ে সেটআপ দেওয়া কাস্টম একত্রীকরণ চালক একটি সংজ্ঞায়িত.gitattribute
এইভাবে, মার্জের সময়ে স্থানীয় সংস্করণটি READMEসর্বদা সংরক্ষণ করা হয়।

শাখাগুলির জন্য "বিবরণ" সেই মেটা ডেটার সাথে যুক্ত "মন্তব্য" হিসাবেও জানে এবং এটি সমর্থিত নয়।

কমপক্ষে, একটি READMEফাইল সহ, আপনি যে কোনও শাখার জন্য, এটি করতে পারেন:

$ git show myBranch:README

যদি আপনার README আপনার REPO এর মূল ডিরেক্টরিতে থাকে তবে এটি যে কোনও পথ থেকে কাজ করবে, যেহেতু ব্যবহৃত পথটি git showরেপোর শীর্ষ ডিরেক্টরি থেকে নিখুঁত।


3
দলের প্রত্যেককে কি এ সম্পর্কে সচেতন হতে হবে এবং তারা চান তা স্বতন্ত্রভাবে তাদের .gitattribute এ সেট করতে হবে? যদি তা হয় তবে আমার পক্ষে এটি পরিচালনা করা কঠিন হবে বলে মনে হয় এবং লোকেদের এটি করার সম্ভাবনা খুব কম।
ডন হ্যাচ

@ ডনহ্যাচ: আপনি সাধারণত .gitattributesআপনার সংগ্রহস্থলটিতে ফাইলটি পরীক্ষা করেন , তাই না, এটি কেবল সবার জন্য কাজ করে। দুর্ভাগ্যক্রমে কিছু ওয়েব-ভিত্তিক ইন্টারফেসগুলির মাধ্যমে মার্জ করার সময় এটি কাজ করছে বলে মনে হয় না, যেমন, অ্যাজুরি ডিওঅ্যাপসে টানুন অনুরোধগুলি ব্যবহার করার সময়।
সোরেন জর্নস্ট্যাড

19

এখানে দুটি জনপ্রিয় পরামর্শ রয়েছে:

  1. git branch --edit-description: আমরা এটি পছন্দ করি না কারণ আপনি এটি চাপতে পারেন না। আমি স্মরণ করতে পারি যে আমি যে শাখাগুলি তৈরি করেছি তা কী করতে পারে তবে আমার দল নিশ্চিত করতে পারে না।
  2. READMEফাইল জনসংযোগ শাখা। মার্জ হওয়ার সময় এটি একটি ব্যথা: সংঘাতগুলি মার্জ করার জন্য সুপার-প্রবণ এবং READMEযখন আমরা বৈশিষ্ট্যগুলি শাখাগুলি মার্জ করি তখন আমরা শাখাগুলি থেকে সরে যাব । শাখাগুলির মধ্যে পার্থক্যগুলিও একটি ব্যথা।

আমরা অনাথ branches-readmeশাখা তৈরির সিদ্ধান্ত নিয়েছি । এতিম শাখাগুলি তাদের নিজস্ব পৃথক ইতিহাসের শাখা - আপনি এগুলি গিতুবের gh-pagesশাখা থেকে জানতে পারেন । এই অনাথ শাখায় একটি READMEফাইল রয়েছে । এটিতে এর মতো সামগ্রী রয়েছে:

master:
    The default branch
mojolicious:
    Start using Mojolicious
branch-whatever:
    Description of the whatever branch

এটি পুশ-সক্ষম এবং মার্জ-বান্ধব। এর READMEসাথে যে কোনও শাখা থেকে দেখুন :

git show branches-readme:README

অসুবিধাগুলি হ'ল যখন আপনি আপডেটটি আপডেট করতে চান তখন অদ্ভুত এতিম শাখাটি চেকআউট করা দরকার READMEএবং READMEশাখাগুলি নাম বদলে দেওয়া, আসা বা যাওয়ার সাথে সাথে স্বয়ংক্রিয় আপডেট হয় না। যদিও এটি আমাদের পক্ষে ঠিক আছে।

এটি পছন্দ করুন:

git checkout --orphan branches-readme
# All the files from the old branch are marked for addition - skip that
git reset --hard
# There are no files yet - an empty branch
ls
vi README
# put in contents similar to above
git add README
git commit -m "Initial description of the branches we already have"
git push origin branches-readme
# get all your original files back
git checkout master

সিমিলারি, পৃথক দলের সদস্যরা branches-$userতারা চাইলে তাদের নিজস্ব ব্যক্তিগত শাখা বর্ণনা করে তাদের নিজস্ব অনাথ শাখাও তৈরি করতে পারবেন , যতক্ষণ না তারা দলে না যান।

পরবর্তী সরঞ্জামের সাহায্যে এটি আউটপুটটির সাথেও সংহত করা যায় git branch। সেই লক্ষ্যে, সম্ভবত README.yamlএকটি সমতল পরিবর্তে একটি ফাইল বিবেচনা করা যেতে পারে README


একজনের কেবলমাত্র মাস্টারটিতে README থাকতে পারে । এটি বিশৃঙ্খলা যুক্ত করবে তবে সর্বদা অ্যাক্সেসযোগ্য হবে।
পিটার - মনিকার পুনরায়

2
@ পিটারএ.স্নাইডার: অবশ্যই, তবে তারপরে একটি নতুন শাখা যুক্ত করার জন্য মাস্টারের প্রতিশ্রুতি আবশ্যক হবে যদিও পরিবর্তনটির সাথে মাস্টারটির সাথে যা করার কিছুই নেই। এছাড়াও, মাস্টার ছাড়ার সময়, আপনার কাছে সমস্ত শাখায় README এর একটি অনুলিপি থাকবে যা আইএ মেস।
পিটার ভি।

10
git config --global --add alias.about '!describe() { git config branch."$1".description; }; describe'

কমান্ড alias.aboutশেল এক্সপ্রেশন হিসাবে একটি বিশ্বব্যাপী বিকল্পকে সংজ্ঞায়িত করবে । git about <branch>একটি সঞ্চিত্রে চালানো হলে সেট করা থাকলে শাখার বিবরণ প্রদর্শন করা হবে।


4
ধন্যবাদ! আমি এটি পরিবর্তন করেছি যাতে এটি কেবল আমার যে শাখায় চলছে তা "!describe() { git config branch.\"$(git symbolic-ref --short -q HEAD)\".description; }; describe"
দেখবে

1
@ অগ - এটিকে কাজ করার জন্য আমাকে যুক্তির উক্তিগুলির সামনে ব্যাকস্ল্যাশ ফেলে দিতে হবে:git config --global --add alias.about '!describe() { git config branch."$(git symbolic-ref --short -q HEAD)".description; }; describe'
টম ট্রেসানস্কি

5

git branchesগ্রেগ হিউগিল কমান্ডটির সম্ভাব্য প্রয়োগ এখানে দেওয়া হয়েছে:

#!/usr/bin/perl

sub clean {
    map { s/^[\s\*]*\s// } @_;
    map { s/\s*$// } @_;
    return @_;
}

sub descr {
    $_ = `git config branch.@_.description`;
    s/\s*$//;
    return $_;
};
sub indent {
    $_ = shift;
    s/^/      /mg;
    return $_;
};

my @branches = clean `git branch --color=never --list`;
my %merged = map { $_ => 1 } clean `git branch --color=never --merged`;

for my $branch (@branches) {
    my $asis = `git branch --list --color=always $branch`;
    $asis =~ s/\s*$//;
    print "  $asis";
    print " \033[33m(merged)\033[0m" if ($merged{$branch} and $branch ne "master");
    print "\n";

    print indent descr $branch;
    print "\n";
    print "\n";
}

4

এখানে একটি git aliasযা আপনাকে উভয়কে বর্তমান শাখায় বর্ণনা সেট এবং পড়তে দেয়:

git config --global --add alias.about '!describe() { msg="$1"; git config branch."$(git rev-parse --abbrev-ref HEAD)".description ${msg:+"$msg"}; }; describe'

ব্যবহার / উদাহরণ:

(develop) $ git about
(develop) $ git about message
(develop) $ git about
message
(develop) $ git about "this is a new message"
(develop) $ git about
this is a new message
(develop) $ git checkout -b test_branch
Switched to a new branch 'test_branch'
(test_branch) $ git about
(test_branch) $ git about "this is the test branch"
(test_branch) $ git about
this is the test branch
(test_branch) $ git checkout -
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
(develop) $ git about
this is a new message

আমাকে উত্তর দেওয়া শুরু করার জন্য @ ফেলিসিওকে বিশেষ ধন্যবাদ।


নিস! এটি শেল বা ohmyzsh সংকলন করা যেতে পারে?
মিকলিটি

2

আপনি ট্যাগগুলিতে মন্তব্যগুলি সংযুক্ত করতে পারেন:

git tag -m 'this was a very good commit' tag1

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


13
এটি আদর্শ নয় কারণ এটি শাখার প্রধানকে ট্র্যাক করে না
অ্যান্ডি

1

বলুন আপনি একটি শাখা তৈরি করতে চান

git branch branch-20200328
git notes add branch-20200328 -m "This branch is for whatever"
git notes show branch-20200328

0

আমি নিশ্চিত যে বৈশিষ্ট্যটি বর্তমানে সমর্থিত নয়। আমি মনে করি আপনার সেরা বেট হ'ল একটি শাখায় একটি বিবরণ পাঠ্য ফাইল তৈরি করা, যা আপনি চান সেই তথ্য রয়েছে।


4
আমাকে এই ফাইলটি শাখাগুলিতে মার্জ করার বিষয়ে (না) চিন্তা করতে হবে। আমি না?
নওফাল ইব্রাহিম

1
@ ক্যাসপার্ভেনডেন বার্গ: সম্ভবত -1-কার্ডটি বের করার পরিবর্তে একটি মন্তব্য রেখে কিছুক্ষণ অপেক্ষা করুন, এবং যদি প্রশ্নকারী পোস্টটি পরিবর্তন করতে রাজি না হন তবে আপনি দেখেন যে তিনি / তিনি / ইতিমধ্যে এই সাইটটি পরিদর্শন করেছেন, বানান করো. বা আপনার দেওয়া সমস্ত উত্তরগুলি এখনও সঠিক কিনা তা আপনি নিয়মিত পরীক্ষা করেন?
সেবাস্তিয়ান মাচ

1
@ ফ্রেসনেল: ভাল পয়েন্ট; আমার উদ্দেশ্যটি ছিল ভবিষ্যতে এই প্রশ্নকারীদের জিজ্ঞাসাবাদীদের সহায়তা করা এবং ভাল উত্তরগুলি শীর্ষে এবং ভুলগুলি নীচে যেতে হবে, ক্রিস জে "সাজা" দেওয়া এবং তাকে খ্যাতি অর্জনের কারণ নয়। দুর্ভাগ্যবশত সাইটটি বলে আমার ভোট লক করা আছে :(।
ক্যাস্পার ভ্যান ডেন বার্গ

1
@ ক্যাসপার্ভেনডেনবার্গ: আপনাকে শাস্তি দেওয়ার বিষয়ে আমি সন্দেহ করতে পেরেছিলাম, দুঃখিত।
সেবাস্তিয়ান মাচ

0

নির্বাচিত উত্তরটি আমার কাছে ওভারকিলের মতো বলে মনে হচ্ছে। আমি প্রতি শাখা বিবরণের ফাইল যে একটি স্বাভাবিক উৎস নিয়ন্ত্রিত ফাইল, বলে বজায় রাখার জন্য আনত করা চাই master.txt, dev.txtইত্যাদি এবং যদি একটি জবরজং নম্বর বা শাখা হল আমি ভাল করার জন্য একটি অনুক্রমের তৈরি চাই এটা সংগঠিত করতে পারেন।


6
তারপরে আপনাকে এই ফাইলগুলি অন্য প্রতিটি শাখায় মার্জ করার বিষয়ে চিন্তা করতে হবে বা git show master:dev.txtনির্বাচিত উত্তরের চেয়ে সহজ কোনও নয় যা ব্যবহার করতে ভুলবেন না।
শ্রীধর রত্নকুমার

0

শুধু ব্যবহার করুন:

git config branch.<branch name>.description

যেখানে creditণ জমা আছে সেখানে creditণ দেওয়ার জন্য: https://glebbahmutov.com/blog/git-branches-with-desifications/


আমি প্রশ্ন যোগ করার পরে এটি প্রকাশিত গিটের একটি সংস্করণে এটি যুক্ত হয়েছিল। গৃহীত উত্তরে এর উল্লেখ রয়েছে।
নওফাল ইব্রাহিম

অই হ্যাঁ. এটি মন্তব্যে উল্লেখ করা হয়েছে।
কালেব মিলার


-3

ব্যবহার

git branch --list -v

একটি প্রবাহ শাখা দেখানোর জন্য:

git branch --list -vv

যোগ -rশুধুমাত্র remotes ব্যবহার দেখানোর জন্য বা -aremotes ব্যবহার এবং স্থানীয় দেখানোর জন্য।


এই হিসাবে দরকারী, আমি কিছু কাস্টম খুঁজছি। কোনও রেফারেন্সের সাথে সংযুক্ত কোনও ধরণের একটি নোট।
নওফাল ইব্রাহিম

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