স্থানীয় শাখা কোন দূরবর্তী শাখা ট্র্যাক করছে তা সন্ধান করুন


842

আরও দেখুন:
আমি কীভাবে দেখতে পারি যে কোন গিট শাখাগুলি কোন দূরবর্তী / প্রবাহ শাখা ট্র্যাক করছে?

স্থানীয় শাখা কোন দূরবর্তী শাখা ট্র্যাক করছে তা আমি কীভাবে জানতে পারি?

আমার কি git configআউটপুট বিশ্লেষণ করতে হবে , বা এমন কোনও আদেশ আছে যা আমার জন্য এটি করবে?


18
Sheesh। এই না একটি সঠিক ডুপ্লিকেট। এর ফলে অন্য একটি উপসেট, কিন্তু মত, আউট প্রশ্ন করতে অন্যান্য উপায় আছে git remote show origin। অন্যান্য প্রশ্নের মূল উত্তর হ'ল এখানে সরল উত্তরের চারপাশে মোড়ানো বাশ লিপি, যা কারওর পক্ষে কার্যকর হতে পারে। আশা করি এই প্রশ্নটি পুরোপুরি বন্ধ হবে না।
cdunn2001

5
সম্মতি জানানো হয়েছে, এটি অবশ্যই ডুপে হওয়া উচিত নয়। এটি লিঙ্কযুক্ত প্রশ্নের চেয়ে সম্পূর্ণ আলাদা কিছু জিজ্ঞাসা করছে
অ্যাডাম বাটকিন

উত্তর:


1002

এখানে একটি আদেশ রয়েছে যা আপনাকে সমস্ত ট্র্যাকিং শাখা দেয় ('টান' জন্য কনফিগার করা), দেখুন:

$ git branch -vv
  main   aaf02f0 [main/master: ahead 25] Some other commit
* master add0a03 [jdsumsion/master] Some commit

আপনাকে এসএএএ এবং যে কোনও দীর্ঘ-মোড়ক প্রতিশ্রুতিবদ্ধ বার্তাগুলির মধ্য দিয়ে w

আপনার যদি প্রতিটি শাখা 'টান' এবং 'পুশ' কনফিগারেশন উভয়ের তথ্য প্রয়োজন হয় তবে অন্য উত্তরটি দেখুন git remote show origin


হালনাগাদ

গিট সংস্করণ 1.8.5 এ শুরু করে আপনি git statusএবং এর সাথে প্রবাহিত শাখাটি প্রদর্শন করতে পারেনgit status -sb


6
এই আউটপুট চেয়ে বেশি সরাসরি git branch -avবা git remote show originযা আপনি ডাটা অনেকটা দিতে,, শুধু দূরবর্তী ট্র্যাক
SimplGy

60
বিটিডাব্লু, গিটের সর্বশেষতম সংস্করণ (1.8.5.x) এছাড়াও এখন প্রবাহিত শাখাটি দেখায় git statusএবং git status -sb- সুতরাং একবার আপনি 1.8.5.x আপগ্রেড করার পরে, এই প্রশ্নটি (এবং উত্তর) অপ্রাসঙ্গিক।
jdsumsion

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

এই কমান্ডটির আউটপুট বিভ্রান্তিকর হতে পারে যেহেতু কমিট কমেন্ট বার্তা সহজেই "[আমার বৈশিষ্ট্য] ..." দিয়ে শুরু হতে পারে। দয়া করে @ cdunn2001 এর উত্তর দেখুন যা কেবলমাত্র প্রবাহ শাখা (যদি থাকে) এবং অন্য কিছুই দেখায় না।
জোনাস বার্লিন 16

1
আমি @ জোনাস-বার্লিনের সাথে একমত - সিডুন ২০০200 এর উত্তরটি আপনি ফলাফলটি বিশ্লেষণ করতে চাইলে আরও ভাল - আপনি যদি একটি সাধারণ কমান্ড সন্ধান করেন এবং আউটপুট দৃশ্যত স্ক্যান করতে ইচ্ছুক হন তবে আমার উত্তর ভাল
jdussion

372

দুটি পছন্দ:

% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline

অথবা

% git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"
origin/mainline

12
নিস! কোনও কিছুই ট্র্যাক না করা হলে প্রথমটি কুৎসিত ত্রুটি দেয় তবে দ্বিতীয়টি স্ক্রিপ্টিংয়ের জন্য বিশেষভাবে সহায়ক। বিটিডাব্লু %(refname:short)হ'ল বর্তমান রেফের নাম --format
টিনো

9
git help revisions(দস্তাবেজের একটি অতি পরিচিত তবে সবচেয়ে দরকারী অংশগুলির মধ্যে একটি) এবং অনুসন্ধান করুন upstream
cdunn2001

15
এই উত্তরটি উপরের দুটি উত্তরের চেয়ে অনেক ভাল, বিশেষত যদি আপনি এর মতো কিছু করতে চানgit diff `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}`
জিয়ান

2
এটি সত্যিই দরকারীecho 'git for-each-ref --format=\'%(refname:short) -> %(upstream:short)\' refs/heads/$1' > ~/bin/git-show-upstream; chmod +x ~/bin/git-show-upstream
আলবফান

6
আপনি যদি অন্য কোনও শাখার জন্য প্রবাহটি সন্ধান করতে চান তবে দ্বিতীয় git for-each-ref --format='%(upstream:short)' $(git rev-parse --symbolic-full-name SOMEBRANCH)পছন্দটির একটি বৈকল্পিক হ'ল: কিছু শাখার পরিবর্তে শাখার নাম, বা বর্তমান শাখার জন্য "হেড"
জোনাস বার্লিন

220

আমি মনে করি git branch -avকেবল স্থানীয় শাখাগুলি কোন দূরবর্তী শাখাগুলি অনুসরণ করছে তা নির্ধারণ করতে আপনাকে ছেড়ে দিয়ে কোন শাখাগুলি রয়েছে এবং কোনটি তাদের প্রতিশ্রুতিবদ্ধ তা কেবল আপনাকে বলে দেয় tells

git remote show originকোন শাখাগুলি কোন দূরবর্তী শাখাগুলি ট্র্যাক করছে তা স্পষ্টভাবে আপনাকে বলে। এখানে একক প্রতিশ্রুতি এবং একটি প্রত্যন্ত শাখা সহ একটি সংগ্রহস্থল থেকে উদাহরণ আউটপুট abranch:

$ git branch -av
* abranch                d875bf4 initial commit
  master                 d875bf4 initial commit
  remotes/origin/HEAD    -> origin/master
  remotes/origin/abranch d875bf4 initial commit
  remotes/origin/master  d875bf4 initial commit

বনাম

$ git remote show origin
* remote origin
  Fetch URL: /home/ageorge/tmp/d/../exrepo/
  Push  URL: /home/ageorge/tmp/d/../exrepo/
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    abranch
    master
  Remote branches:
    abranch tracked
    master  tracked
  Local branches configured for 'git pull':
    abranch merges with remote abranch
    master  merges with remote master
  Local refs configured for 'git push':
    abranch pushes to abranch (up to date)
    master  pushes to master  (up to date)

3
আমার একটি কমান্ডের দরকার যা উজানের শাখাটি আবিষ্কার করে, সুতরাং ইনপুট হিসাবে 'উত্স' ব্যবহার করা একটি ধারণা তৈরি করছে, সুতরাং এটি আমার পক্ষে কার্যকর হয় না
আলেকজান্ডার মিলস

1
তবে এটি ওপিকে উত্তর দেয়। কমান্ডটি git remote show originআপনাকে স্থানীয় শাখাগুলি এবং তারা ধাক্কা এবং টান উভয়ের জন্য ট্র্যাক করে shows
দুদেওয়াদ

1
@ দেউদওয়াদ আমি মনে করি মূল বক্তব্যটি হ'ল এই কমান্ডটি রিমোট নামে ডাকে বলে ধরে নেওয়া হয়েছে origin, যদিও এটি আসলে কিছু হতে পারে (যেমন একাধিক রিমোট, বিভিন্ন শাখা বিভিন্ন রিমোট থেকে শাখা ট্র্যাক করে)।
Ruslan

74

আপডেট: আচ্ছা, আমি পোস্ট করার পরে বেশ কয়েক বছর কেটে গেছে! আমার প্রবাহের সাথে হেডের তুলনা করার নির্দিষ্ট উদ্দেশ্যে, আমি এখন ব্যবহার করি @{u}, যা একটি শর্টকাট যা প্রবাহের ট্র্যাকিং শাখার হেডকে বোঝায়। ( Https://git-scm.com/docs/gitrevisions#gitrevisions-mltbranchnamegtupstreamemegemmasterupstreamememuem দেখুন )।

আসল উত্তর: আমি এই সমস্যাটিও পেরেছি। আমি প্রায়শই একক ভাণ্ডারে একাধিক রিমোট ব্যবহার করি এবং আপনার বর্তমান শাখাটি কোনটির বিরুদ্ধে ট্র্যাক করছে তা ভুলে যাওয়া সহজ। এবং কখনও কখনও এটি জানার সুবিধাজনক যেমন আপনি যখন নিজের স্থানীয় কমিটগুলি এর মাধ্যমে দেখতে চান git log remotename/branchname..HEAD

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

LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`

আমার ক্ষেত্রে, যেহেতু আমি কেবলমাত্র আমার বর্তমান দূরবর্তীটির নাম অনুসন্ধান করতে আগ্রহী তাই আমি এটি করি:

git config branch.`git name-rev --name-only HEAD`.remote

2
আমার বর্তমান শাখা যা আছে তা পুনরায় ফিরিয়ে দিতে এটি একটি উপনাম তৈরিতে খুব দরকারী ছিল। ধন্যবাদ!
জাস্টিন স্পাহার-সামার্স

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

4
প্রকৃতপক্ষে আমি এটি আবিষ্কার করেছি git name-rev --name-only HEADযে আপনি আসলে কোন শাখায় আছেন তা আপনাকে জানায় না। তার জন্য আমি সবেমাত্র ব্যবহার করেছিgit branch | grep '^\*' | cut -d' ' -f2
আল্ট্রেয়াস

1
ধন্যবাদ! অনুরূপ প্রশ্নের অন্যান্য উত্তরগুলিতে @{u}ওরফে / শর্টকাট উল্লেখ করা হয়নি এবং আমি ঠিক এটিই খুঁজছিলাম! মাস্টার শাখার সাথে তুলনা করার কোনও কারণ নেই যদি আপনি কেবল এটি টানতে চান কিনা তা নির্ধারণ করতে চান not
ড্যান এম।

1
@{u}বোমা হয়। এবং ১.7.০ থেকে প্রায় হয়েছে, যার অর্থ এটি যদি 2018 সালে কেউ ব্যবহার করছেন এমন গিটটিতে এটি না পাওয়া যায় তবে তারা সম্ভবত আপগ্রেডের কারণে're
ক্রিস কিল্যান্ড 16

48

স্থানীয় শাখা এবং তাদের প্রত্যন্ত।

git branch -vv 

সমস্ত শাখা এবং ট্র্যাকিং রিমোটগুলি।

git branch -a -vv

দেখুন যেখানে স্থানীয় শাখাগুলি পুশ এবং টান দেওয়ার জন্য স্পষ্টভাবে কনফিগার করা আছে।

git remote show {remote_name}

21

এটি আপনাকে যে শাখায় রয়েছে তা দেখিয়ে দেবে:

$ git branch -vv

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

$ git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)

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

myremote/mybranch

আপনি যে রিমোটটি ব্যবহার করছেন তা বর্তমান শাখার দ্বারা ব্যবহৃত রিমোটের URL সন্ধান করতে পারেন :

$ git remote get-url $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)|cut -d/ -f1)

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

https://github.com/someone/somerepo.git

19

আপনি ব্যবহার করতে পারেন git checkout, অর্থাৎ "বর্তমান শাখাটি পরীক্ষা করে দেখুন"। বর্তমান শাখার জন্য ট্র্যাকিংয়ের তথ্য উপস্থিত থাকলে, উপস্থিত দেখানোর জন্য এটি কোনও পার্শ্ব-প্রতিক্রিয়াযুক্ত no

$ git checkout 
Your branch is up-to-date with 'origin/master'.

17

আমি জানি না যে এটি গিট কনফিগারেশনের আউটপুটকে বিশদ হিসাবে বিবেচনা করে তবে এটি যে মাস্টারটি অনুসরণ করছে তা দূরবর্তীটির URL নির্ধারণ করবে:

it গিট কনফিগার রিমোট $ (গিট কনফিগারেশন শাখা.মাষ্টার.রেমোট) .url

অথবা git config branch.$(git symbolic-ref -q HEAD).remoteআপনি যদি চান তবে ইউআরএলটির জন্য দূরবর্তীটির নামটি বর্তমান ব্রাঞ্চের ট্র্যাক করা git config remote.$(git config branch.$(git symbolic-ref -q HEAD).remote).url
আনখন্দ

আমার --shortবিকল্প যুক্ত করার দরকার ছিল তাই এটি কাজ করে। সুতরাং বর্তমান শাখার দূরবর্তী নাম git config branch.$(git symbolic-ref -q --short HEAD).remoteপাওয়ার জন্য : এবং বর্তমান শাখার রিমোটের URL পাওয়ার জন্য:git config remote.$(git config branch.$(git symbolic-ref -q --short HEAD).remote).url
নেলসন

13

তবুও অন্য উপায়

git status -b --porcelain

এই আপনাকে দেবে

## BRANCH(...REMOTE)
modified and untracked files

10

আর একটি সহজ উপায় হ'ল ব্যবহার করা

cat .git/config একটি গিট রেপো

এটি স্থানীয় শাখাগুলির জন্য বিশদ তালিকা দেবে


লিনাক্সে দুর্দান্ত কাজ করে। ইউনিক্সের মতো প্রম্পটে (যেমন সাইগউইন বা গিট ব্যাশ) না থাকলে উইন্ডোজে কাজ করবে না।
কনটাঙ্গো

উইন্ডোজ সাধারণ প্লেইন কমান্ড লাইনে অবশ্যই type .git/configপরিবর্তে ব্যবহার cat .git/configকরুন ..
খামারবায়েস

9

আর একটি পদ্ধতি (ধন্যবাদ ওসেস), আপনি যদি এটি জানতে চান তবে এটি বিদ্যমান আছে কি নেই:

if git rev-parse @{u} > /dev/null 2>&1
then
  printf "has an upstream\n"
else
  printf "has no upstream\n"
fi

কী ভাষা? এটি দেখতে লিনাক্স শেল স্ক্রিপ্টের মতো তবে অন্য কোনও তথ্য বা প্রসঙ্গ দেয় না।
সানকাট 2000

8

git branch -vv | grep 'BRANCH_NAME'

git branch -vv : এই অংশটি তাদের উজানের শাখার সাথে সমস্ত স্থানীয় শাখা প্রদর্শন করবে।

grep 'BRANCH_NAME' : এটি শাখার তালিকা থেকে বর্তমান শাখাটি ফিল্টার করবে।



5

স্থানীয় এবং দূরবর্তী উভয় শাখার তালিকাবদ্ধ করে:

$ git branch -ra

আউটপুট:

  feature/feature1
  feature/feature2
  hotfix/hotfix1
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

3

গিট-স্ট্যাটাস চীনামাটির বাসন (মেশিন-পঠনযোগ্য) ভি 2 আউটপুট এর মতো দেখাচ্ছে:

$ git status -b --porcelain=v2
# branch.oid d0de00da833720abb1cefe7356493d773140b460
# branch.head the-branch-name
# branch.upstream gitlab/the-branch-name
# branch.ab +2 -2

এবং কেবল শাখাটি উজানের দিকে পেতে:

$ git status -b --porcelain=v2 | grep -m 1 "^# branch.upstream " | cut -d " " -f 3-
gitlab/the-branch-name

যদি শাখার কোনও উজান না থাকে তবে উপরের কমান্ডটি একটি খালি আউটপুট তৈরি করবে (বা এর সাথে ব্যর্থ হবে set -o pipefail)।


2

আপনি যদি কোনও শাখার জন্য উজানের সন্ধান করতে চান (কেবলমাত্র আপনি যেটির উপরে রয়েছেন তার বিপরীতে), @ সিডুএন ২০০1 এর উত্তরে এখানে সামান্য পরিবর্তন করা হয়েছে:

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

এটি আপনাকে স্থানীয় ব্রাঙ্কের নামযুক্ত রিমোট শাখার নাম দেবে YOUR_LOCAL_BRANCH_NAME


2

আপনি এটি চেষ্টা করতে পারেন:

git remote show origin | grep "branch_name"

branch_name আপনার শাখা দিয়ে প্রতিস্থাপন করা প্রয়োজন


আপনার শাখার নাম অন্য শাখাগুলির সাথে মিলে গেলে কী হবে? আপনার শাখার নাম এর ফলাফলের সাথে অন্য কোনও পাঠ্যের সাথে কী মিলবে git remote show origin- যদি বলা হয় mergesবা configure?
টম সুইরিলি

তোমাকে পেলাম না আপনার অর্থ কী একাধিক শাখার একই নাম রয়েছে
xpioneer

1

আমি এই উপনামটি ব্যবহার করি

git config --global alias.track '!sh -c "
if [ \$# -eq 2 ]
 then
   echo \"Setting tracking for branch \" \$1 \" -> \" \$2;
   git branch --set-upstream \$1 \$2;
 else
   git for-each-ref --format=\"local: %(refname:short) <--sync--> remote: %(upstream:short)\" refs/heads && echo --URLs && git remote -v;
fi  
" -'

তারপর

git track

নোট করুন যে স্ক্রিপ্টটি ট্র্যাকিং সেটআপ করতেও ব্যবহৃত হতে পারে।

Https://github.com/orefalo/bash-profiles এ আরও দুর্দান্ত নামকরণ


0

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

pknotz @ s883422: (foo) ~ / ওয়ার্কস্পেস / বিডি
$ যেমন তথ্য
মোট কমিট: 175
স্থানীয় সংগ্রহস্থল: .git
নামযুক্ত দূরবর্তী সংগ্রহস্থল: (নাম -> অবস্থান)
  উত্স -> গিট: //sahp7577/home/pknotz/bd.git
বর্তমান শাখা: foo
  ক্রিপ্টোগ্রাফিক চেকসাম (sha1sum): bd248d1de7d759eb48e8b5ff3bfb3bb0eca4c5bf
  ডিফল্ট টান / পুশ সংগ্রহস্থল: উত্স
  ডিফল্ট টান / পুশ বিকল্পগুলি:
    শাখা.ফু.রেমোট = উত্স
    শাখা.ফু.মরম = রেফস / হেডস / এ্যাল_দেভেল_1
  অবদানকারীদের সংখ্যা: 3
  ফাইল সংখ্যা: 28
  ডিরেক্টরি সংখ্যা: 20
  বৃহত্তম ফাইলের আকার, বাইটে: 32473 (পাইগোগ্লেচার্ট -২.০.০ / কপি)
  কমিট: 62

0

এই উত্তরটির উন্নতি করে , আমি এই .gitconfigএলিয়াসগুলি নিয়ে এসেছি :

branch-name = "symbolic-ref --short HEAD"
branch-remote-fetch = !"branch=$(git branch-name) && git config branch.\"$branch\".remote || echo origin #"
branch-remote-push  = !"branch=$(git branch-name) && git config branch.\"$branch\".pushRemote || git config remote.pushDefault || git branch-remote-fetch #"
branch-url-fetch = !"remote=$(git branch-remote-fetch) && git remote get-url        \"$remote\" #"  # cognizant of insteadOf
branch-url-push  = !"remote=$(git branch-remote-push ) && git remote get-url --push \"$remote\" #"  # cognizant of pushInsteadOf

এটি কোন ভাষা?
ড্যানিয়েল ফারেল 15

3
@ ড্যান ফারেল: শেল কথায় কথায় আলিয়াস! ব্যবহার / বিন / শি গিটের কনফিগারেশনের জন্য ডাবল উদ্ধৃতি উদ্ধৃত হয়।
টম হেল

0

আপনি যদি গ্র্যাডল ব্যবহার করছেন,

def gitHash = new ByteArrayOutputStream()
    project.exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = gitHash
    }

def gitBranch = new ByteArrayOutputStream()
    project.exec {
        def gitCmd = "git symbolic-ref --short -q HEAD || git branch -rq --contains "+getGitHash()+" | sed -e '2,\$d'  -e 's/\\(.*\\)\\/\\(.*\\)\$/\\2/' || echo 'master'"
        commandLine "bash", "-c", "${gitCmd}"
        standardOutput = gitBranch
    }

-2

নিম্নলিখিত কমান্ড রিমোট উত্স বর্তমান কাঁটাচামচ উল্লেখ করা হচ্ছে

গিট দূরবর্তী -v

দূরবর্তী পথ যোগ করার জন্য,

গিট রিমোট অ্যাড উত্সের পথ_নাম


এখানে আপনি কোনও দূরবর্তী পাথ খুঁজে পাচ্ছেন না - আপনি যুক্ত করছেন
নভেম্বর'১২ এ সর্প আপ করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.