এখানে দীর্ঘ উত্তর।
remotes:
আপনি যদি গিটকে সহযোগিতামূলকভাবে ব্যবহার করছেন, আপনার সম্ভবত অন্যান্য মেশিন বা অবস্থানের সাথে আপনার কমিটগুলি সিঙ্ক করতে হবে। প্রতিটি মেশিন বা অবস্থানকে বলা হয় কগিটের পরিভাষায় রিমোট এবং প্রত্যেকের একটি বা একাধিক শাখা থাকতে পারে। প্রায়শই, আপনি কেবল একটি নাম রাখবেন origin
। সমস্ত রিমোটের তালিকা করতে, চালান git remote
:
$ git remote
bitbucket
origin
এই দূরবর্তী নামগুলি কোন জায়গাগুলির জন্য শর্টকাট রয়েছে তা চালিয়ে আপনি দেখতে পারবেন git remote -v
:
$ git remote -v
bitbucket git@bitbucket.org:flimm/example.git (fetch)
bitbucket git@bitbucket.org:flimm/example.git (push)
origin git@github.com:Flimm/example.git (fetch)
origin git@github.com:Flimm/example.git (push)
প্রতিটি রিমোটের নীচে একটি ডিরেক্টরি থাকে git/refs/remotes/
:
$ ls -F .git/refs/remotes/
bitbucket/ origin/
আপনার মেশিনে শাখা:
টিএলডিআর: আপনার স্থানীয় মেশিনে, আপনি তিন ধরণের শাখা পেয়েছেন: স্থানীয় অ-ট্র্যাকিং শাখা, স্থানীয় ট্র্যাকিং শাখা এবং দূরবর্তী ট্র্যাকিং শাখা। একটি রিমোট মেশিনে, আপনি কেবল এক ধরণের শাখা পেয়েছেন।
1. স্থানীয় শাখা
আপনি চালিয়ে আপনার মেশিনে সমস্ত স্থানীয় শাখার একটি তালিকা দেখতে পারেন git branch
:
$ git branch
master
new-feature
প্রতিটি স্থানীয় শাখায় একটি ফাইল রয়েছে .git/refs/heads/
:
$ ls -F .git/refs/heads/
master new-feature
আপনার মেশিনে দুই প্রকারের স্থানীয় শাখা রয়েছে: স্থানীয় শাখাগুলি অ-ট্র্যাক করা এবং স্থানীয় শাখাগুলি ট্র্যাক করা।
১.১ অ-ট্র্যাকিং স্থানীয় শাখা
অ-ট্র্যাকিং স্থানীয় শাখাগুলি অন্য কোনও শাখার সাথে সম্পর্কিত নয়। আপনি চালিয়ে একটি তৈরি করুন git branch <branchname>
।
1.2। স্থানীয় শাখা ট্র্যাকিং
স্থানীয় শাখাগুলি ট্র্যাকিং অন্য একটি শাখার সাথে সম্পর্কিত, সাধারণত একটি দূরবর্তী ট্র্যাকিং শাখা। আপনি চালিয়ে একটি তৈরি করুন git branch --track <branchname> [<start-point>]
।
আপনার স্থানীয় কোন শাখাটি ব্যবহার করে শাখাগুলি ট্র্যাক করছে তা আপনি দেখতে পারেন git branch -vv
:
$ git branch -vv
master b31f87c85 [origin/master] Example commit message
new-feature b760e04ed Another example commit message
এই কমান্ডের আউটপুট থেকে আপনি দেখতে পাচ্ছেন যে স্থানীয় শাখা master
দূরবর্তী ট্র্যাকিং শাখা ট্র্যাক করছে origin/master
এবং স্থানীয় শাখা new-feature
কোনও কিছুই ট্র্যাক করছে না।
কোন শাখাগুলি শাখাগুলি ট্র্যাক করছে তা দেখার আরেকটি উপায় হ'ল এক নজরে .git/config
।
স্থানীয় শাখা ট্র্যাকিং দরকারী useful কোন প্রবাহ শাখাটি ব্যবহার করবেন তা নির্দিষ্ট করে না দিয়ে তারা আপনাকে চালানোর অনুমতি দেয় git pull
এবং git push
। অন্য শাখাটি ট্র্যাক করার জন্য যদি শাখাটি সেট আপ না করা হয় তবে আপনি এর মতো একটি ত্রুটি পাবেন:
$ git checkout new-feature
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream new-feature <remote>/<branch>
2. রিমোট-ট্র্যাকিং শাখা (এখনও আপনার মেশিনে)
আপনি চালিয়ে আপনার মেশিনে সমস্ত রিমোট-ট্র্যাকিং শাখার একটি তালিকা দেখতে পারেন git branch -r
:
$ git branch -r
bitbucket/master
origin/master
origin/new-branch
প্রতিটি দূরবর্তী ট্র্যাকিং শাখার অধীনে একটি ফাইল রয়েছে .git/refs/<remote>/
:
$ tree -F .git/refs/remotes/
.git/refs/remotes/
├── bitbucket/
│ └── master
└── origin/
├── master
└── new-branch
রিমোট মেশিনে কী রয়েছে তার জন্য আপনার স্থানীয় ক্যাশে হিসাবে আপনার দূরবর্তী ট্র্যাকিং শাখাগুলি ভাবেন। আপনি git fetch
যা ব্যবহার করে আপনার দূরবর্তী ট্র্যাকিং শাখাগুলি আপডেট করতে পারেনgit pull
পর্দার আড়ালে ব্যবহার করে।
রিমোট-ট্র্যাকিং শাখার সমস্ত ডেটা স্থানীয়ভাবে আপনার মেশিনে (ক্যাশের মতো) সঞ্চিত থাকলেও এটিকে কখনও স্থানীয় শাখা বলা হয় না। (কমপক্ষে, আমি এটিকে ডাকব না!) এটিকে কেবল একটি দূরবর্তী ট্র্যাকিং শাখা বলা হয়।
রিমোট মেশিনে শাখা:
আপনি চালিয়ে সমস্ত দূরবর্তী শাখা (যা দূরবর্তী যন্ত্রের শাখাগুলি) দেখতে পারেন git remote show <remote>
:
$ git remote show origin
* remote origin
Fetch URL: git@github.com:Flimm/example.git
Push URL: git@github.com:Flimm/example.git
HEAD branch: master
Remote branches:
io-socket-ip new (next fetch will store in remotes/origin)
master tracked
new-branch tracked
Local ref configured for 'git pull':
master merges with remote master
new-branch merges with remote new-branch
Local ref configured for 'git push':
master pushes to master (up to date)
new-branch pushes to new-branch (fast-forwardable)
এই git remote
কমান্ডটি নেটওয়ার্কের দূরবর্তী মেশিনটিকে এর শাখা সম্পর্কে জিজ্ঞাসা করে। এটি আপনার স্থানীয় মেশিনে রিমোট-ট্র্যাকিং শাখাগুলি আপডেট করে না, ব্যবহার করুন git fetch
বা তার git pull
জন্য।
আউটপুট থেকে, আপনি রিমোট মেশিনে থাকা সমস্ত শাখা দেখতে পারবেন "রিমোট শাখা" শিরোনামের অধীনে ("বাসি" হিসাবে চিহ্নিত লাইনগুলি উপেক্ষা করুন)।
আপনি যদি রিমোট মেশিনে লগইন করতে পারেন এবং ফাইল সিস্টেমে সংগ্রহস্থলটি খুঁজে পেতে পারেন তবে এর নীচে সমস্ত শাখা দেখতে পারেন refs/heads/
।
ঠকানো শীট:
স্থানীয় শাখা মুছে ফেলার জন্য, ট্র্যাকিং বা অ-ট্র্যাকিং নিরাপদে, নিরাপদে:
git branch -d <branchname>
স্থানীয় শাখা মুছে ফেলতে, ট্র্যাকিং হোক বা অ-ট্র্যাকিং, জোর করে:
git branch -D <branchname>
একটি দূরবর্তী ট্র্যাকিং শাখা মুছতে:
git branch -rd <remote>/<branchname>
একটি নতুন স্থানীয় অ-ট্র্যাকিং শাখা তৈরি করতে:
git branch <branchname> [<start-point>]
একটি নতুন স্থানীয় ট্র্যাকিং শাখা তৈরি করতে: (মনে রাখবেন যে যদি <start-point>
নির্দিষ্ট করা হয় এবং এটি যেমন রিমোট-ট্র্যাকিং শাখা origin/foobar
, তবে --track
পতাকাটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত থাকে)
git branch --track <branchname> [<start-point]
উদাহরণ:
git branch --track hello-kitty origin/hello-kitty
রিমোট মেশিনে একটি শাখা মুছতে:
git push --delete <remote> <branchname>
বাসি সমস্ত দূরবর্তী ট্র্যাকিং শাখাগুলি মুছে ফেলার জন্য, যেখানে দূরবর্তী মেশিনে সম্পর্কিত শাখাগুলি আর বিদ্যমান নেই:
git remote prune <remote>
আপনি লক্ষ্য করেছেন যে কিছু কমান্ডে, আপনি <remote>/<branch>
এবং অন্যান্য কমান্ডগুলিতে, ব্যবহার করেন <remote> <branch>
। উদাহরণ: git branch origin/hello-kitty
এবং git push --delete origin hello-kitty
।
এটি নির্বিচারে মনে হতে পারে তবে স্ল্যাশ কখন ব্যবহার করবেন এবং কখন কোন স্থান ব্যবহার করবেন তা মনে রাখার একটি সহজ উপায় রয়েছে। আপনি যখন স্ল্যাশ ব্যবহার করছেন, আপনি নিজের মেশিনে একটি রিমোট ট্র্যাকিং শাখার কথা উল্লেখ করছেন, যখন আপনি কোনও স্থান ব্যবহার করছেন, আপনি আসলে নেটওয়ার্কের মাধ্যমে একটি রিমোট মেশিনে একটি শাখা নিয়ে কাজ করছেন।