আপনি গিট ডকুমেন্টেশন দেখতে পছন্দ করেন
শাখাটি পুরোপুরি হেডে মার্জ করতে হবে।
তবে গিট HEAD
ঠিক কী?
আপনি গিট ডকুমেন্টেশন দেখতে পছন্দ করেন
শাখাটি পুরোপুরি হেডে মার্জ করতে হবে।
তবে গিট HEAD
ঠিক কী?
উত্তর:
আপনি হেডকে "বর্তমান শাখা" হিসাবে ভাবতে পারেন। আপনি যখন এর সাথে শাখাগুলি স্যুইচ করেন git checkout
, HEAD সংশোধনটি নতুন শাখার ডগায় নির্দেশ করতে পরিবর্তিত হয়।
আপনি কি করিয়া হেড ইঙ্গিত করিয়া দেখিতে পারেন:
cat .git/HEAD
আমার ক্ষেত্রে, আউটপুটটি হ'ল:
$ cat .git/HEAD
ref: refs/heads/master
হেডের পক্ষে কোনও নির্দিষ্ট সংশোধনী উল্লেখ করা সম্ভব যা কোনও শাখার নামের সাথে সম্পর্কিত নয়। এই পরিস্থিতিতে একটি বিচ্ছিন্ন হেড বলা হয় ।
অন্যান্য লোকের উদ্ধৃতি দিতে :
মাথা হ'ল কমিটমেন্ট অবজেক্টের একটি রেফারেন্স। প্রতিটি মাথার একটি নাম (শাখার নাম বা ট্যাগের নাম ইত্যাদি) রয়েছে। ডিফল্টরূপে, প্রতিটি ভাণ্ডারে একটি প্রধান থাকে যার নাম মাস্টার। একটি সংগ্রহস্থলে অনেক সংখ্যক মাথা থাকতে পারে। যে কোনও সময়ে, একটি প্রধানকে "বর্তমান প্রধান" হিসাবে নির্বাচিত করা হয়। এই মাথাটি সর্বদা রাজধানীতে "হেড" এর সাথে যুক্ত হয়।
এই পার্থক্যটি নোট করুন: একটি "মাথা" (ছোট হাতের) সংরক্ষণাগারের মধ্যে নাম দেওয়া যে কোনও একটিকে বোঝায়; "হেড" (বড় হাতের) ব্যাক্তিগতভাবে সক্রিয় মাথাটিকে কেবলমাত্র বোঝায়। এই পার্থক্যটি গিট ডকুমেন্টেশনে প্রায়শই ব্যবহৃত হয়।
আরও একটি ভাল উত্স যা গিটের অভ্যন্তরীণ ক্রিয়াকলাপগুলি দ্রুত coversেকে দেয় (এবং এর জন্য মাথা / হেড সম্পর্কে আরও ভাল বোঝার জন্য) এখানে পাওয়া যাবে । রেফারেন্স (রেফ :) বা প্রধান বা শাখাগুলি প্রতিশ্রুতিবদ্ধ ইতিহাসের কমিটগুলিতে আটকে থাকা নোট-এর মতো বিবেচনা করা যেতে পারে। সাধারণত তারা ধারাবাহিক কমিটের ডগায় ইশারা করে তবে তাদের সাথে git checkout
বা git reset
অন্যত্র সরানো যেতে পারে etc.
git checkout HEAD~2
), যা কোনও পরিচিত মাথার প্রতিশ্রুতি আইডি নয়। আরও পুঙ্খানুপুঙ্খ ব্যাখ্যার জন্য নিবন্ধটি eagain.net/articles/git-for- কম্পিউটার কম্পিউটার বিজ্ঞানীদের দেখুন।
git revert
ডানাটি না থাকার জন্য একটি শাখা স্থানান্তরিত করার ভাল উদাহরণ নয়, কারণ git revert
কিছু নতুন কমিট তৈরি করে এবং এখনও নতুন শাখাটি (নতুন) ডগায় ছেড়ে দেয়।
commit
, এস reset
ইত্যাদি গুলি,
আমি গিথুব বিকাশকারী স্কট চকন [ ভিডিও রেফারেন্স ] এর এই সংজ্ঞাটি প্রস্তাব করছি :
প্রধান আপনার বর্তমান শাখা। এটি প্রতীকী রেফারেন্স। এটি একটি শাখার রেফারেন্স। আপনার সর্বদা শিরোনাম রয়েছে, তবে আপনি যে শাখাগুলিতে চলেছেন তার মধ্যে হেড এই অন্য পয়েন্টারগুলির মধ্যে একটিকে নির্দেশ করবে। এটি আপনার পরবর্তী প্রতিশ্রুতির পিতামাতা। আপনার ওয়ার্কিং ডিরেক্টরিতে যা যা শেষ বার যাচাই করা হয়েছিল তা হওয়া উচিত ... এটি আপনার কার্যকরী ডিরেক্টরি কী ছিল তার সর্বশেষ জ্ঞাত রাষ্ট্র।
পুরো ভিডিওটি পুরো গিট সিস্টেমটির ন্যায্য পরিচয় দেবে তাই সময় দেওয়ার সাথে সাথে সমস্ত কিছু দেখার জন্য আমি আপনাকেও সুপারিশ করি।
হেড হ'ল একটি বিশেষ পয়েন্টার যা আপনার বর্তমানে অবস্থিত স্থানীয় শাখায় নির্দেশ করে।
থেকে প্রো গীত বই, অধ্যায় 3.1 গীত শাখাবিন্যাস - সংক্ষেপে শাখা , বিভাগে একটি নতুন শাখা তৈরি করা হচ্ছে :
নতুন শাখা তৈরি করলে কী হবে? ঠিক আছে, এটি করা আপনার চারদিকে ঘোরাতে নতুন পয়েন্টার তৈরি করে। ধরা যাক আপনি টেস্টিং নামে একটি নতুন শাখা তৈরি করেছেন। আপনি গিট শাখা কমান্ড দিয়ে এটি করুন:
$ git branch testing
আপনি বর্তমানে যে একই প্রতিশ্রুতি দিচ্ছেন এটি একটি নতুন পয়েন্টার তৈরি করে
গিট কীভাবে জানতে পারে আপনি বর্তমানে কোন শাখায় আছেন? এটি হেড নামে একটি বিশেষ পয়েন্টার রাখে। মনে রাখবেন যে অন্যান্য ভিসিএসগুলিতে যেমন আপনি সাবভারশন বা সিভিএস ব্যবহার করতে পারেন সেগুলিতে এটি হেডের ধারণার চেয়ে অনেক আলাদা। গিটে, আপনি বর্তমানে যে স্থানীয় শাখায় রয়েছেন এটি এটি পয়েন্টার। এই ক্ষেত্রে, আপনি এখনও মাস্টার রয়েছেন। গিট শাখা কমান্ড কেবল একটি নতুন শাখা তৈরি করেছে - এটি সেই শাখায় স্যুইচ করে না।
34ac2
উপরের উদাহরণে চেকআউট করেন, এখন শিরোনাম সেই প্রতিশ্রুতিটির দিকে নির্দেশ করবে এবং এটিকে একটি বিচ্ছিন্ন হেড বলে। এই অবস্থায় আপনি পরিবর্তন করতে পারবেন, পরীক্ষা করতে পারবেন এবং খুব বেশি পরিবর্তনও করতে পারবেন, তবে একবার আপনি অন্য একটি শাখা চেকআউট করে নিলে আপনি আপনার সমস্ত পরিবর্তন হারাবেন, অবশ্যই যদি আপনি একটি নতুন শাখা তৈরি না করেন।
git log
এবং ভালো কিছু পেয়েছিলাম commit ad0265... HEAD -> foo ...
যে অর্থ হবে foo
শাখা আইডি কমিট করার জন্য একটি রেফারেন্স ad0265
। পাঠ্য রেফারেন্সের একটি চেকআউট করা foo
কোনও বিচ্ছিন্ন মাথা নয়। কমিট আইডির একটি চেকআউট করার ad0265
ফলে কোনও মাথা আলাদা হয়ে যায়। আপনি যে কথা বলছেন তার কিছু সূক্ষ্মতা আমি মিস করছি। আমি আশা করি পাঠ্যের এই প্রাচীরটি আমি কোথায় হারিয়েছি তা আবিষ্কার করতে সহায়তা করে।
ধরে নেওয়া, এটি "বিচ্ছিন্ন হেড" নামে একটি বিশেষ মামলা নয়, তারপরে ও'রিলি গিট বইতে বলা হয়েছে, দ্বিতীয় তৃতীয় সংস্করণ, পি .6,, এর HEAD
অর্থ:
HEAD
সর্বদা বর্তমান শাখায় সাম্প্রতিকতম প্রতিশ্রুতি বোঝায়। আপনি যখন শাখা পরিবর্তন করেন,HEAD
নতুন শাখার সর্বশেষ প্রতিশ্রুতি উল্লেখ করার জন্য আপডেট করা হয়।
সুতরাং
HEAD
হয় বর্তমান শাখার "টিপ" ।
নোট করুন যে আমরা HEAD
অতি সাম্প্রতিক প্রতিশ্রুতিগুলি উল্লেখ করতে এবং HEAD~
টিপটির আগে প্রতিশ্রুতি হিসাবে ব্যবহার করতে পারি , HEAD~~
বা HEAD~2
আরও আগেও প্রতিশ্রুতি হিসাবে ব্যবহার করি।
এই উত্তরগুলির একটিতে সম্ভবত একটি সূক্ষ্ম, তবে গুরুত্বপূর্ণ ভুল ধারণা রয়েছে। আমি ভেবেছিলাম আমার উত্তরটি এটি সাফ করার জন্য যুক্ত করব।
কী
HEAD
?
HEAD
আপনি আপনার প্রতিশ্রুতিবদ্ধ ইতিহাসে যেখানেই থাকুন না কেন এমন এক প্রতীকী রেফারেন্স। আপনি যেখানেই যান না কেন, ছায়ার মতো এটি আপনাকে অনুসরণ করে। যদি আপনি কোন অঙ্গীকার করেন, HEAD
সরানো হবে। যদি আপনি কিছু চেকআউট করেন HEAD
তবে সরানো হবে। আপনি যা-ই করুন না কেন, যদি আপনি আপনার প্রতিশ্রুতিবদ্ধ ইতিহাসের কোনও নতুন জায়গায় HEAD
চলে এসেছেন , আপনার সাথে চলে এসেছেন। একটি সাধারণ ভ্রান্ত ধারণা মুছে ফেলার জন্য: আপনি নিজেকে এড়াতে পারবেন নাHEAD
। এটি কোনও বিচ্ছিন্ন হেড রাষ্ট্র নয়। যদি আপনি নিজেকে কখনই ভাবছেন: "ওহ না, আমি আলাদা হেড অবস্থায় আছি! আমি আমার মাথা হারিয়েছি!" মনে রাখবেন, এটি আপনার মাথা। মাথা আপনি। আপনি হেড থেকে বিচ্ছিন্ন হননি, আপনি এবং আপনার হেড অন্য কোনও বিষয় থেকে পৃথক হয়েছেন।
HEAD
হ্যাঁ, একটি প্রতিশ্রুতিবদ্ধ নির্দেশ করতে পারেন, কিন্তু সাধারণত এটি না। আমাকে এটা আবার বলতে দাও। সাধারণত HEAD
কোন প্রতিশ্রুতি নির্দেশ করে না। এটি একটি শাখার রেফারেন্সকে নির্দেশ করে। এটি সেই শাখার সাথে সংযুক্ত থাকে এবং আপনি যখন কিছু নির্দিষ্ট কাজ করেন (যেমন, commit
বা reset
), তখন সংযুক্ত শাখাটি পাশাপাশি চলে যাবে HEAD
। হুডের নীচে তাকিয়ে আপনি এটি কী নির্দেশ করছেন তা দেখতে পারেন।
cat .git/HEAD
সাধারণত আপনি এই জাতীয় কিছু পাবেন:
ref: refs/heads/master
কখনও কখনও আপনি এই জাতীয় কিছু পাবেন:
a3c485d9688e3c6bc14b06ca1529f0e78edd3f86
HEAD
প্রত্যক্ষভাবে প্রতিশ্রুতিবদ্ধ পয়েন্ট যখন পয়েন্ট। একে বিযুক্ত হেড বলা হয়, কারণ HEAD
শাখার রেফারেন্স ব্যতীত অন্য কোনও বিষয়কে নির্দেশ করা হচ্ছে। আপনি যদি এই রাজ্যে master
কোনও প্রতিশ্রুতি দেন, তবে আর সংযুক্ত HEAD
থাকবেন না, আর আপনার সাথে চলবে না। যেখানে প্রতিশ্রুতিবদ্ধ তা বিবেচ্য নয়। আপনি আপনার মাস্টার শাখার মতো একই প্রতিশ্রুতিতে থাকতে পারেন, তবে যদি HEAD
শাখার চেয়ে কমিটের প্রতি ইঙ্গিত করা হয় তবে এটি আলাদা করা হয়েছে এবং একটি নতুন কমিট শাখা রেফারেন্সের সাথে যুক্ত হবে না।
আপনি নিম্নলিখিত অনুশীলন চেষ্টা করে দেখলে আপনি এটিকে গ্রাফিকভাবে দেখতে পারেন। গিট সংগ্রহস্থল থেকে, এটি চালান। আপনি কিছুটা আলাদা পাবেন তবে সেগুলি কী কী হবে। কমিটিকে সরাসরি চেক আউট করার সময় হলে প্রথম আউটপুট থেকে আপনি যা সংক্ষেপিত হ্যাশ পাবেন কেবল তা ব্যবহার করুন (এটি এখানে a3c485d
)।
git checkout master
git log --pretty=format:"%h: %d" -1
# a3c485d: (HEAD -> master)
git checkout a3c485d -q # (-q is for dramatic effect)
git log --pretty=format:"%h: %d" -1
# a3c485d: (HEAD, master)
ঠিক আছে, সুতরাং এখানে আউটপুট একটি ছোট পার্থক্য আছে। প্রতিশ্রুতি সরাসরি (শাখার পরিবর্তে) পরীক্ষা করা আমাদের একটি তীরের পরিবর্তে কমা দেয়। আপনি কী ভাবেন, আমরা কি কোনও বিচ্ছিন্ন হেড অবস্থায় রয়েছি? হেড এখনও একটি নির্দিষ্ট সংশোধনী উল্লেখ করছে যা একটি শাখার নামের সাথে সম্পর্কিত। আমরা এখনও করছি উপর আমরা মাস্টার শাখা, কেন?
এখন চেষ্টা করুন:
git status
# HEAD detached at a3c485d
নাঃ। আমরা 'বিচ্ছিন্ন হেড' অবস্থায় আছি।
আপনি (HEAD -> branch)
বনামের (HEAD, branch)
সাথে একই উপস্থাপনা দেখতে পারেন git log -1
।
HEAD
তুমি কি এটি আপনি যেখানেই থাকুন না কেন যা যাচাই করে দেখেছেন points সাধারণত এটি প্রতিশ্রুতিবদ্ধ নয়, এটি একটি শাখা। যদি HEAD
কোনও প্রতিশ্রুতি (বা ট্যাগ) নির্দেশ করে, এমনকি যদি এটি একই কমিট (বা ট্যাগ )ও একটি শাখাও নির্দেশ করে, আপনি (এবং HEAD
) সেই শাখা থেকে বিচ্ছিন্ন হয়ে গেছেন। যেহেতু আপনার সাথে কোনও শাখা সংযুক্ত নেই তাই আপনি নতুন কমিট করার সময় শাখাটি আপনার সাথে চলবে না। HEAD
তবে, হবে।
.git/HEAD
সফ্টওয়্যার যা হেড হিসাবে বিবেচনা করে।
HEAD
বর্তমান প্রতিশ্রুতি বোঝায় যা আপনার কার্যকরী অনুলিপি নির্দেশ করে, অর্থাত্ আপনি যে প্রতিশ্রুতিটি বর্তমানে পরীক্ষা করেছেন। গিট সংশোধনগুলি নির্দিষ্ট করার বিষয়ে অফিসিয়াল লিনাক্স কার্নেল ডকুমেন্টেশন থেকে :
HEAD
কার্যনির্বাহী গাছের পরিবর্তনগুলির ভিত্তিতে আপনি যে প্রতিশ্রুতিবদ্ধ সেটির নাম দিন।
তবে নোট করুন, আসন্ন সংস্করণে 1.8.4 গিট-এর @
জন্যও শর্টহ্যান্ড হিসাবে ব্যবহার করা যেতে পারে HEAD
, যেমন গিট অবদানকারী জুনিও সি হামানো তাঁর গিট ব্ল্লে ব্লগে উল্লেখ করেছেন :
"HEAD" টাইপ করার পরিবর্তে আপনি "@" বলতে পারেন, যেমন "গিট লগ @" @
ওভারফ্লো ব্যবহারকারী ভোনসি স্ট্যাক করুন আরও একটি প্রশ্নের উত্তরে শর্টহ্যান্ড হিসাবে কেন @
বেছে নেওয়া হয়েছিল সে সম্পর্কে কিছু আকর্ষণীয় তথ্যও পেয়েছিলেন ।
আগ্রহের বিষয়, কিছু পরিবেশে এটির মূলধন তৈরি করা প্রয়োজন হয় না HEAD
, বিশেষত অপারেটিং সিস্টেমে কেস-সংবেদনশীল ফাইল সিস্টেমগুলি বিশেষত উইন্ডোজ এবং ওএস এক্স ব্যবহার করে।
শাখাগুলি তৈরি করা এবং খেলতে দেখুন
HEAD আসলে এমন একটি ফাইল যার বিষয়বস্তু নির্ধারণ করে যে কোথায় HEAD ভেরিয়েবলটি উল্লেখ করে:
$ cat .git/HEAD
ref: refs/heads/master
$ cat .git/refs/heads/master
35ede5c916f88d8ba5a9dd6afd69fcaf773f70ed
এই সংগ্রহস্থলে, HEAD ফাইলের সামগ্রীগুলি রেফ / হেড / মাস্টার নামের একটি দ্বিতীয় ফাইলকে বোঝায় । ফাইল রেফ / হেড / মাস্টার মাস্টার শাখায় সাম্প্রতিক হ্যাশ রয়েছে।
ফলাফলটি .git / রেফস / হেড / মাস্টার ফাইল থেকে মাস্টার শাখা কমিটের জন্য প্রধান পয়েন্ট ।
গ্রেগ হিউগিলের গৃহীত উত্তরের কয়েকটি বিষয় সম্পর্কে আমি কেবল বিবরণ দিতে চাই। গিট পকেট গাইড অনুসারে
শাখা:
শাখা নিজেই নামযুক্ত কমিট (শাখার "টিপ") থেকে কমিট গ্রাফের সমস্ত পয়েন্ট হিসাবে পৌঁছনীয় হিসাবে সংজ্ঞায়িত হয়।
মাথা: একটি বিশেষ ধরণের রেফ
বিশেষ রেফ হেড নির্ধারণ করে যে আপনি কোন শাখায় আছেন ...
refs
গিট দুটি ধরণের রেফারেন্স বা নামকরণ করা পয়েন্টার সংজ্ঞায়িত করে, যা এটি "রেফস" বলে:
- একটি সাধারণ রেফ, যা সরাসরি কোনও অবজেক্ট আইডির দিকে নির্দেশ করে (সাধারণত কমিট বা ট্যাগ)
- একটি প্রতীকী রেফ (বা সিমরেফ), যা অন্য রেফকে নির্দেশ করে (সরল বা প্রতীকী)
গ্রেগ যেমন উল্লেখ করেছেন, হেড একটি "বিচ্ছিন্ন অবস্থায়" থাকতে পারে। সুতরাং হেড হয় সাধারণ রেফ (কোনও বিচ্ছিন্ন হেডের জন্য) বা সিমরেফ হতে পারে।
যদি হেড একটি বিদ্যমান শাখার জন্য প্রতীকী রেফ হয়, তবে আপনি সেই শাখায় "চালু" রয়েছেন। অন্যদিকে, হেড হ'ল একটি সহজ রেফ সরাসরি তার SHA-1 আইডি দ্বারা প্রতিশ্রুতিটির নামকরণ করে, তবে আপনি কোনও শাখায় "চালু" নন, বরং "বিচ্ছিন্ন হেড" মোডে রয়েছেন, যখন আপনি কিছুটা আগে পরীক্ষা করে দেখেন প্রতিশ্রুতিবদ্ধ
আমি মনে করি যে 'হেড' বর্তমান চেক আউট কমিট। অন্য কথায় 'হেড' বর্তমানে প্রতিশ্রুতিবদ্ধ যে প্রতিশ্রুতিবদ্ধ।
আপনি যদি সবেমাত্র ক্লোন করেছেন এবং চেক আউট না করে থাকেন তবে আমি জানি না এটি কীসের দিকে লক্ষ্য করে, সম্ভবত কিছু অবৈধ অবস্থান।
HEAD
আপনি বর্তমানে যা যা প্রতিশ্রুতিবদ্ধ করেছেন তা বিশেষ রেফারেন্স । বিশদগুলির জন্য ম্যানুয়ালটি দেখুন (প্রাসঙ্গিক অনুচ্ছেদটি তাত্ক্ষণিক চিত্র 3.4 অনুসরণ করে)।
master
শাখাটি পরীক্ষা করে দেখবে - সুতরাং হেড প্রধানকে নির্দেশ করবে।
master
, তবে এটি সর্বদা হয় না। দেখুনremote set-head
remote set-head
, যা কেবল স্থানীয় ডিফল্ট শাখাকেই প্রভাবিত করে এবং সার্ভারে ডিফল্টটি পরিবর্তন করবে না।
বর্তমানে সন্ধান করা শাখার ডগায় মাথা নির্দেশ করুন।
আপনার সংগ্রহস্থলে একটি .git ফোল্ডার রয়েছে। এই অবস্থানে ফাইলটি খুলুন: .git \ refs। মাথা। (SHA-1 হ্যাশ) যে ফাইল (বেশিরভাগ ক্ষেত্রেই মাস্টার) কোড কমান্ডের আউটপুট দেখা এক সাম্প্রতিকতম কমিট হবে, অর্থাত git log
। .Git ফোল্ডারে আরও তথ্য: http://gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html
git reset HEAD^
এবং তারপরে সর্বাধিক সাম্প্রতিক প্রতিশ্রুতি (পূর্ববর্তী টিপ) আর শাখার ডগা দ্বারা চিহ্নিত করা হয় না।
পূর্ববর্তী সমস্ত উত্তর পড়ার পরেও আমি আরও স্পষ্টতা চেয়েছিলাম। অফিসিয়াল গিট ওয়েবসাইটে এই ব্লগটি http://git-scm.com/blog আমাকে যা চেয়েছিল তা দিয়েছে:
গিট-এ হেড হ'ল বর্তমান শাখা রেফারেন্সের পয়েন্টার , যা আপনার করা শেষ প্রতিশ্রুতি বা আপনার কার্যনির্বাহী ডিরেক্টরিতে যাচাই করা সর্বশেষ প্রতিশ্রুতি হিসাবে নির্দেশক a এর অর্থ হ'ল এটি আপনার পরবর্তী প্রতিশ্রুতির পিতা-মাতা হবেন। এটিকে হেড হিসাবে মনে করা আপনার পক্ষে সর্বশেষতম প্রতিশ্রুতির স্ন্যাপশট generally
HEAD
কোন অঙ্গীকার নয়; এটা স্থানটিকে করুন।
checkout HEAD^
, এখন হেড এমনকি কোনও শাখায় শেষ প্রতিশ্রুতি স্ন্যাপশটটিও নির্দেশ করে না।
commit
, merge
, rebase
, log
, ইত্যাদি কিন্তু ধারণার দিক থেকে হয়তো "(পয়েন্টার) বর্তমান অবস্থান" একটি ভাল সারাংশ।
দেখে মনে HEAD
হচ্ছে এটি সর্বশেষ প্রতিশ্রুতির জন্য একটি ট্যাগ যা আপনি পরীক্ষা করে দেখেছেন।
এটি কোনও নির্দিষ্ট শাখার টিপ হতে পারে (যেমন "মাস্টার") বা কোনও শাখার অভ্যন্তরীণ প্রতিশ্রুতি ("বিচ্ছিন্ন মাথা")
সমস্ত সংজ্ঞা ছাড়াও, আমার মনে যে বিষয়টি আটকে গিয়েছিল তা হল, আপনি যখন কোন প্রতিশ্রুতি দেন তখন জিআইটি সংগ্রহস্থলের মধ্যে একটি কমিট অবজেক্ট তৈরি করে। প্রতিশ্রুতিবদ্ধ অবজেক্টগুলির একটি পিতা বা মাতা থাকতে হবে (বা একাধিক অভিভাবক যদি এটি মার্জ কমিট হয়)। এখন, গিট কীভাবে বর্তমান প্রতিশ্রুতিবদ্ধতার পিতামাতাকে জানতে পারে? সুতরাং শিরোনাম হ'ল সর্বশেষ কমিটের (রেফারেন্সের) পয়েন্টার যা বর্তমান কমিটের পিতামাতা হবে।
এই দুজন আপনাকে বিভ্রান্ত করতে পারে:
মাথা
সম্প্রতি জমা দেওয়া একটি শাখা নামের রেফারেন্সের দিকে ইঙ্গিত করছে। আপনি প্যাকেজ রেফারেন্সটি ব্যবহার না করে, মাথাগুলি সাধারণত $ GIT_DIR / রেফারেন্স / হেডস / এ সংরক্ষণ করা হয়।
মস্তক
বর্তমান শাখা, বা আপনার কার্যকরী গাছ সাধারণত সেই গাছ থেকে উত্পন্ন হয় যা হেড নির্দেশ করে। হেডকে অবশ্যই একটি মাথার দিকে নির্দেশ করতে হবে, আপনি পৃথক হেড ব্যবহার না করেই।
Http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is এ একবার দেখুন
চিত্র 3-5। আপনি যে শাখায় আছেন সেদিকে নির্দেশ করে হেড ফাইল।
একটি শাখা আসলে একটি পয়েন্টার যা প্রতিশ্রুতি আইডি যেমন 17a5 ধারণ করে । ব্যবহারকারী বর্তমানে যে শাখায় কাজ করছে সেগুলির জন্য শিরোনাম একটি পয়েন্টার।
মস্তক একটি রেফারেন্স filw ভালো দেখায় যা আছে:
সুত্র:
আপনি .git/HEAD
.git/refs
যে ভাণ্ডারে কাজ করছেন সেগুলিতে প্রবেশ করে আপনি এই ফাইলগুলি পরীক্ষা করতে পারেন ।
Git
সব কমিট সম্পর্কে।
এবং Head
আপনি বর্তমানে যে প্রতিশ্রুতিটি পরীক্ষা করে দেখেছেন তা নির্দেশ করে।
$ git cat-file -t HEAD
commit
যখনই আপনি একটি শাখা চেকআউট করেন, হেডটি সেই শাখায় সর্বশেষ প্রতিশ্রুতি দেয় points হেডের বিষয়বস্তু নীচে হিসাবে (মাস্টার শাখার জন্য) পরীক্ষা করতে পারবেন:
$ cat .git/refs/heads/master
b089141cc8a7d89d606b2f7c15bfdc48640a8e25
একটি ধারণা হিসাবে, মাথাটি একটি শাখার সর্বশেষ সংশোধন। যদি প্রতি নামী শাখায় আপনার একাধিক মাথা থাকে তবে আপনি সম্ভবত এটি তৈরি করেছিলেন যখন কোনও সংযোজন ছাড়াই স্থানীয় কমিটগুলি করেন, কার্যকরভাবে একটি নামহীন শাখা তৈরি করে।
"পরিষ্কার" সংগ্রহস্থল রাখার জন্য, প্রতি নামক শাখায় আপনার এক মাথা থাকা উচিত এবং আপনি স্থানীয়ভাবে কাজ করার পরে সর্বদা একটি নামী শাখায় মার্জ হওয়া উচিত।
এটি মার্চুরিয়ালের ক্ষেত্রেও সত্য ।