ট্র্যাকিং শাখা কী?


173

গিটের সাথে প্রযোজ্য কেউ কি "ট্র্যাকিং শাখা" ব্যাখ্যা করতে পারেন?

এখানে git-scm.com থেকে সংজ্ঞা দেওয়া হয়েছে :

গিটের একটি 'ট্র্যাকিং শাখা' একটি স্থানীয় শাখা যা প্রত্যন্ত শাখার সাথে সংযুক্ত। আপনি যখন সেই শাখাকে ধাক্কা দিয়ে টানেন, তখন এটি স্বয়ংক্রিয়ভাবে পুশ হয় এবং এটির সাথে সংযুক্ত যে দূরবর্তী শাখায় টান দেয়।

আপনি যদি একই প্রবাহের শাখা থেকে সর্বদা নতুন শাখায় টানেন এবং আপনি যদি "গিট টান" স্পষ্টভাবে ব্যবহার করতে না চান তবে এটি ব্যবহার করুন।

দুর্ভাগ্যক্রমে, গিমে নতুন হওয়া এবং এসভিএন থেকে আসা, এই সংজ্ঞাটি আমার কাছে একেবারেই অর্থবোধ করে না।

আমি " দ্য প্রিম্যাটিক গাইড টু গিট " (দুর্দান্ত বই, উপায় দ্বারা) পড়ছি এবং তারা মনে করছে যে ট্র্যাকিং শাখাগুলি একটি ভাল জিনিস এবং এটি আপনার প্রথম রিমোট (উত্স, এই ক্ষেত্রে) তৈরি করার পরে, আপনার উচিত ট্র্যাকিং শাখা হিসাবে আপনার মাস্টার ব্রাঞ্চ স্থাপন করুন, তবে দুর্ভাগ্যক্রমে এটি কভার করে না যে কেন একটি ট্র্যাকিং শাখা একটি ভাল জিনিস বা আপনার মাস্টার শাখাটি আপনার উত্স সংগ্রহস্থলের ট্র্যাকিং শাখা হিসাবে স্থাপন করে আপনি কী উপকার পাবেন

কেউ দয়া করে আমাকে ইংরেজিতে আলোকিত করতে পারেন?


6
একটি পরিভাষা নোট: গিটের মধ্যে ট্র্যাক শব্দটি খুব খারাপভাবেই বোঝা গেছে। কিছু ফাইল ট্র্যাক করা হয় এবং কিছু কিছু না ট্র্যাক করা হয় ; কিছু শাখার নামকে রিমোট-ট্র্যাকিং শাখা বলা হয় ; এবং আপনি ব্যবহার করতে পারেন --trackএকটি (স্থানীয়) শাখা এই দূরবর্তী-ট্র্যাকিং শাখা তার হিসাবে সেট এক যে তৈরি করার বিকল্পও আপস্ট্রিম । 2006 এবং 2019 এর মধ্যে পরিভাষাটি কিছুটা বিকশিত হয়েছে, তাই বিভিন্ন ব্যক্তি কখনও কখনও এই শব্দের দ্বারা আলাদা কিছু বোঝাতে পারেন
torek

দূরবর্তী ট্র্যাকিং শাখাগুলির জায়গায় আমি ব্যক্তিগতভাবে বাক্যাংশটি রিমোট-ট্র্যাকিংয়ের নামটি ব্যবহার করার পরামর্শ দিচ্ছি , কারণ শাখাটি শব্দটি বরং অতিরিক্ত বোঝা হয়ে গেছে। রিমোট-ট্র্যাকিংয়ের নামগুলি হ'ল : এগুলি আপনার সংগ্রহশালায় রয়েছে তবে এগুলি অন্য গিট সংগ্রহস্থলে যেমন দেখা গেছে তেমনই আপনার গিটের শাখার নামগুলি স্মরণ করার উপায় । আপনি যদি আপ স্ট্রিম শব্দটি ব্যবহার করেন , যা আরও আধুনিক শব্দ, এটি আপনার প্রবাহ হিসাবে সেট করা হয়েছে বলে আপনি এই সমস্ত পরিভাষা বিভ্রান্তি এড়াতে পারবেন। origin/masteroriginmasterorigin/master
torek

উত্তর:


141

ProGit বই রয়েছে একটি খুব ভাল ব্যাখ্যা :

ট্র্যাকিং শাখা

একটি দূরবর্তী শাখা থেকে স্থানীয় শাখা পরীক্ষা করা স্বয়ংক্রিয়ভাবে ট্র্যাকিং শাখা বলা হয়। ট্র্যাকিং শাখাগুলি এমন স্থানীয় শাখা যা প্রত্যন্ত শাখার সাথে সরাসরি সম্পর্ক রাখে। আপনি যদি কোনও ট্র্যাকিং শাখায় থাকেন এবং টাইপ করেন তবে git pushগিটটি স্বয়ংক্রিয়ভাবে জানে যে কোন সার্ভার এবং শাখাটি চালিত হবে। এছাড়াও, git pullএই শাখাগুলির একটিতে চলতে চলতে সমস্ত দূরবর্তী তথ্য পাওয়া যায় এবং তারপরে স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট দূরবর্তী শাখায় মার্জ হয়ে যায়।

আপনি যখন কোনও সংগ্রহস্থল ক্লোন করেন, তখন এটি স্বয়ংক্রিয়ভাবে একটি মাস্টার শাখা তৈরি করে যা উত্স / মাস্টারকে ট্র্যাক করে। সে কারণেই git pushএবং git pullবাকী কোনও তর্ক ছাড়াই কাজ করুন। তবে আপনি চাইলে অন্যান্য ট্র্যাকিং শাখাও সেট আপ করতে পারেন - যেগুলি শাখাগুলি উত্স অনুসারে ট্র্যাক করে না এবং মাস্টার শাখা ট্র্যাক করে না। সাধারণ ঘটনাটি হ'ল উদাহরণটি যা আপনি সবে দেখেছে, দৌড়াচ্ছেন git checkout -b [branch] [remotename]/[branch]। আপনার কাছে গিট সংস্করণ ১.6.২ বা তার পরে থাকলে আপনি --trackশর্টহ্যান্ড ব্যবহার করতে পারেন :

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

দূরবর্তী শাখার চেয়ে আলাদা নামের সাথে স্থানীয় একটি শাখা স্থাপন করতে, আপনি সহজেই আলাদা স্থানীয় শাখার নাম সহ প্রথম সংস্করণটি ব্যবহার করতে পারেন:

$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"

এখন, আপনার স্থানীয় শাখাটি sfস্বয়ংক্রিয়ভাবে চাপতে এবং এখান থেকে টানবে origin/serverfix

বোনাস: অতিরিক্ত git statusতথ্য

ট্র্যাকিং শাখার সাহায্যে git statusআপনাকে বলা হবে যে আপনি আপনার ট্র্যাকিং শাখার কতটা পিছনে রয়েছেন - আপনাকে স্মরণ করিয়ে দেওয়ার জন্য দরকারী যে আপনি এখনও আপনার পরিবর্তনগুলি ঠেকেননি! দেখে মনে হচ্ছে:

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

অথবা

$ git status
On branch dev
Your branch and 'origin/dev' have diverged,
and have 3 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)


21
কেবল এটি পরিষ্কার করতে চেয়েছিলেন: "একটি দূরবর্তী শাখা থেকে স্থানীয় শাখা পরীক্ষা করা স্বয়ংক্রিয়ভাবে ট্র্যাকিং শাখা বলা হয় creates" তা বিভ্রান্তিকর। --Track বিকল্প ব্যতীত আপনার তৈরি করা কোনও শাখা ট্র্যাকিং করবে না।
জন

@ জন, সম্ভবত প্রো গিট লোকটির সাথে এটি গ্রহণ করতে চাইবে। পুরো বইটি আইআইআরসি-র ব্যাপক সম্পাদনার ফলস্বরূপ।
আসফ লাভি

2
@ জনো, অনুসারে: sbf5.com/~cduan/technical/git/git-4.shtml - ট্র্যাক ডিফল্টরূপে চালু আছে এবং তাই এটি প্রয়োজনীয় নয়।
হ্যাঙ্ক লিন

50

নীচে জিআইটি ট্র্যাকিং শাখাগুলিতে আমার ব্যক্তিগত শেখার নোটগুলি রয়েছে, আশা করি এটি ভবিষ্যতের দর্শকদের জন্য সহায়ক হবে:

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


শাখা এবং "গিট আনতে" ট্র্যাকিং:

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


নোটের জন্য ধন্যবাদ! আপনি যদি সম্ভব হয় তবে সেগুলি ভাগ করে নিতে আপত্তি করবেন? ধন্যবাদ;
আদিত্য

@ আদিত্য: এই প্রশ্নটি শাখাগুলি ট্র্যাক করার জন্য এবং আমি এই বিষয়ে আমার সমস্ত নোট পোস্ট করেছি। যদি আমি আমার অন্যান্য জিআইটি নোটগুলি পোস্ট করতে পারি যেখানে অন্য কোনও প্রাসঙ্গিক প্রশ্ন খুঁজে পাই, তবে আমি এটি করতে পেরে খুশি হব।
হাগারওয়াল

ধন্যবাদ! আমি যা বোঝাতে চাইছি তা সেগুলি আপনার ব্লগে বা অন্য কিছুতে পোস্ট করা হয়েছিল :) সুন্দর নোটের জন্য আবার ধন্যবাদ!
আদিত্য

@ আদিত্য: আহ, আমি দেখছি। আপনি কী বোঝাতে চেয়েছেন সে সম্পর্কে এখন আপনি পরিষ্কার। আমি নিজের ওয়েবসাইটে তৈরি করতে এখনও পিছনে ছুটছি।
হাগারওয়াল

43

প্রো গিট বইয়ের উল্লেখ রয়েছে :

ট্র্যাকিং শাখাগুলি এমন স্থানীয় শাখা যা প্রত্যন্ত শাখার সাথে সরাসরি সম্পর্ক রাখে

বেপারটা এমন না. SO প্রশ্নের " একটি হার্ড সময় বোঝা থাকারgit-fetch " অন্তর্ভুক্ত:

স্থানীয় ট্র্যাকিং শাখার মতো ধারণা নেই , কেবল দূরবর্তী ট্র্যাকিং শাখা।
তাই origin/masterজন্য একটি দূরবর্তী ট্র্যাকিং শাখা masterমধ্যে originরেপো।

তবে বাস্তবে, একবার আপনি এর মধ্যে একটি প্রবাহ শাখা সম্পর্ক স্থাপন করেন:

  • একটি স্থানীয় শাখা মত master
  • এবং একটি দূরবর্তী ট্র্যাকিং শাখা origin/master

তারপরে আপনি masterএকটি স্থানীয় ট্র্যাকিং শাখা হিসাবে বিবেচনা করতে পারেন : এটি রিমোট ট্র্যাকিং শাখাকে ট্র্যাক করে origin/masterযা ফলস্বরূপ আপস্ট্রিম রেপোর মাস্টার শাখা ট্র্যাক করে origin

বিকল্প পাঠ


চিত্রের স্পষ্টতা: আমার কম্পিউটারটি উত্সের চেয়ে 2 টি আগে কমিট করে। এই যে দুটি মাস্টার অফ মাস্টার থেকে আসা আসে। চিত্র: progit.org/book/ch3-5.html
idbrii

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

3
@ শেরিলহোমান নং: একটি স্থানীয় শাখা "প্রত্যক্ষ" বা "অপ্রত্যক্ষভাবে" কিছুই ট্র্যাক করবে না। এটি যে রিমোট ট্র্যাকিং শাখাটি আপনি তাকে অর্পণ করবেন এটি ট্র্যাক করবে। কাঁটাচামড়ার ক্ষেত্রে, সর্বোত্তম অনুশীলন হ'ল সাধারণ শাখার (যেমন মাস্টার) ওপেন স্ট্রিম (মূল রেপো) এবং নতুন শাখার (আপনার পিআর বা বৈশিষ্ট্যযুক্ত শাখাগুলির) মূল (আপনার রিমোট কাঁটা) ট্র্যাক করা: দেখুন স্ট্যাকওভারফ্লো.com/ এ / 21847690/6309
ভোনসি

2
@ ভনসি - বিবৃতিতে "স্থানীয় ট্র্যাকিং শাখাগুলির কোনও ধারণা নেই, কেবল দূরবর্তী ট্র্যাকিং শাখাগুলি।" আকর্ষণীয় খ / গ এর শাখাগুলির চারপাশে এ জাতীয় বিরোধী পরিভাষা রয়েছে। এটি প্রায়শই রেফারেন্সযুক্ত লিঙ্ক web.archive.org/web/20130419172453/http://www.gitguys.com/… "ট্র্যাকিং শাখা" এবং "দূরবর্তী ট্র্যাকিং শাখা" এর মধ্যে পার্থক্য করে। তারা উত্স / মাস্টারকে একটি "রিমোট ট্র্যাকিং শাখা" বলে - আমি সম্মত - তবে তারা "মাস্টারকে" একটি "ট্র্যাকিং শাখা" বলে। মাস্টার ট্র্যাকিং কি? তারা ভুল বা এটি একটি পরিভাষা সমস্যা?
হাওইক্যাম্প

2
@ হাওইক্যাম্প যা তারা "মাস্টার নামে ট্র্যাকিং শাখা" ডাকে কেবল স্থানীয় রিং ট্র্যাকিং শাখার উত্স / মাস্টার সহ স্থানীয় শাখা মাস্টার, এটির প্রত্যন্ত মাস্টার শাখা সম্পর্কিত উত্স থেকে প্রাপ্ত শেষ এসএএএ 1 মুখস্ত করতে। সুতরাং এটি "একটি উজানের শাখা সহ একটি স্থানীয় শাখা" হিসাবে মনোনীত করার জন্য "শর্টকাট"
ভোনসি

7

এভাবেই আমি একটি ট্র্যাকিং শাখা যুক্ত করেছি যাতে আমি এটি থেকে আমার নতুন শাখায় টানতে পারি:

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