গিটে শিরোনাম এবং ORIG_HEAD


252

এই চিহ্নগুলি কী বোঝায় এবং এর অর্থ কী?

(আমি অফিসিয়াল ডকুমেন্টেশনে কোনও ব্যাখ্যা পাই না)


4
দ্রষ্টব্য: HEADএখন (আসন্ন git1.8.4) ' @'! দেখুন নীচের আমার সম্পাদিত উত্তর
VonC

নোট-বিস: ' @' (জন্য HEAD) এখনও আসছে, তবে সম্পাদিত ও সংশোধিত ১.৮.৪ উত্তরের জন্য নয় ।
ভনসি

1
দ্রষ্টব্য টের: ' @' HEADগিট 1.8.5 / 1.9 এর জন্য ফিরে এসেছে। উত্তর আবার সম্পাদিত
ভনসি

21
HEADএবং ORIG_HEADগীত মধ্যে মত $PWDএবং $OLDPWDব্যাশ হবে। :)
মুসফিল

উত্তর:


325

HEAD(প্রত্যক্ষ বা অপ্রত্যক্ষ অর্থ প্রতীকী) বর্তমান প্রতিশ্রুতি রেফারেন্স। এটি এমন একটি প্রতিশ্রুতি যা আপনি কার্যনির্বাহী ডিরেক্টরিতে পরীক্ষা করে দেখেছেন (যদি না আপনি কিছু পরিবর্তন, বা সমতুল্য না করেন), এবং এটি একটি অঙ্গীকার যা শীর্ষক "গিট কমিট" একটি নতুন করে তোলে। সাধারণত HEADনামযুক্ত অন্য কয়েকটি শাখার প্রতীকী রেফারেন্স হয়; এই শাখাটি বর্তমানে শাখা বা বর্তমান শাখা পরীক্ষা করে দেখেছে। HEADসরাসরি কোন প্রতিশ্রুতিতে নির্দেশ করতে পারে; এই রাজ্যটিকে "বিচ্ছিন্ন হেড" বলা হয় এবং এটি নামবিহীন, বেনামে শাখা হিসাবে থাকা হিসাবে বোঝা যায়।

আর @একা জন্য একটি শর্টকাট HEAD, গীত 1.8.5 থেকে

ORIG_HEADপূর্ববর্তী অবস্থাটি হ'ল HEADকমান্ড দ্বারা সেট করা যা সম্ভবত বিপজ্জনক আচরণ রয়েছে, এগুলি ফিরিয়ে দেওয়া সহজ be গিটের রিফ্লগ রয়েছে এটি এখন কম দরকারী: HEAD@{1}মোটামুটি সমান ORIG_HEAD( বিপদজনক অপারেশনের আগে HEAD@{1}সর্বদা সর্বশেষ মান HEAD, ORIG_HEADসর্বশেষ মান HEAD) value

আরও তথ্যের জন্য গিট (1) ম্যানপেজ , গিট ব্যবহারকারীর ম্যানুয়াল , গিট কমিউনিটি বই এবং গিট গ্লোসারি পড়ুন


2
হাই জাকুব ব্যাখ্যার জন্য +1। আপনি কি HEAD @ {1} এর "মোটামুটি সমতুল্য" অংশটি বিশদ বলতে পারেন? আমি আমার উত্তরটি থ্রেড. gmane.org/gmane.comp.version-control.git/38379 (আপনি এতে ছিলেন, ফেব্রুয়ারী 2007 এ ফিরে এসেছিলেন ) এর উত্তরটি উল্লেখ করে দেখছি এবং আপনি যে লোকেরা আশেপাশে আলোচনা করছিলেন তা আমি ঠিক বুঝতে পারি নি @ {...} সিনট্যাক্স।
ভোনসি

19
ORIG_HEAD সেট করা আছে (আমি মনে করি) কেবল 'বিপজ্জনক' কমান্ড দ্বারা, যা হেডকে একাধিক প্রতিশ্রুতিবদ্ধ। সুতরাং ORIG_HEAD সর্বদা সেট করা থাকে না, যখন HEAD @ {1} সর্বদা সেট থাকে। @। 1} হ'ল g (গিট সিম্বলিক-রেফ হেড) @ {1}, অর্থাৎ এটি বর্তমান শাখার জন্য রিফ্লোগ ব্যবহার করে, হেড রিফ্লগ নয়।
জাকুব নরবস্কি

রিয়াইট ... আমি এখনই পেয়েছি :) সেই স্পষ্টির জন্য আপনাকে ধন্যবাদ। এটি মূল্যবান জন্য, আমি আপনার মন্তব্যও upvated!
ভনসি

1
"এবং হেড হ'ল একটি প্রতিশ্রুতি যার উপরে" গিট কমিট "একটি নতুন রূপ তৈরি করে" "- মনে রাখা ভাল, ধন্যবাদ! @ ভনসি থেকেও, 'এটি প্রতিশ্রুতিবদ্ধ "গিট কমিট" শীর্ষে তৈরি করে এবং "গিট ডিফার - ক্যাচড" এবং "গিট স্ট্যাটাস" এর তুলনা করে।'
মিনকি প্যান

1
গিট সহায়তা সংশোধনগুলি git-scm.com/docs/gitrevisions এনেছে , যা কমিটগুলি রেফারেন্সের সমস্ত উপায় (সহ HEADএবং সহ ORIG_HEAD) বর্ণনা করে।
dahlbyk

104

গিট রিসেট থেকে

"টান" বা "মার্জ" সর্বদা বর্তমান শাখার আসল টিপটি ভিতরে রেখে দেয় ORIG_HEAD

git reset --hard ORIG_HEAD

এতে কঠোরভাবে পুনরায় সেট করা আপনার সূচি ফাইল এবং কার্যকারী গাছটিকে সেই অবস্থায় ফিরিয়ে আনবে এবং শাখার ডগাটিকে সেই প্রতিশ্রুতিতে পুনরায় সেট করে।

git reset --merge ORIG_HEAD

সংশ্লেষের ফলাফল পরিদর্শন করার পরে, আপনি দেখতে পাবেন যে অন্য শাখায় পরিবর্তনটি সন্তোষজনক নয়। " git reset --hard ORIG_HEAD" চালানো আপনাকে যেখানে ছিল সেখানে ফিরে যেতে দেবে, তবে এটি আপনার স্থানীয় পরিবর্তনগুলি বাতিল করবে, যা আপনি চান না। " git reset --merge" আপনার স্থানীয় পরিবর্তনগুলি রাখে।


কোনও প্যাচ প্রয়োগ করার আগে, ORIG_HEAD বর্তমান শাখার ডগায় সেট করা আছে।
আপনার যদি একাধিক কমিটের সমস্যা হয় যেমন git amভুল শাখায় ' ' চালানো বা মেলবক্স পরিবর্তন করে আরও সহজেই স্থির করা কমিটিতে কোনও ত্রুটি যেমন ("থেকে:" লাইনগুলিতে + ত্রুটি) থাকে তবে এটি কার্যকর।

তদ্ব্যতীত, মার্জ সর্বদা ' .git/ORIG_HEAD' HEAD এর মূল স্থানে সেট করে যাতে ' git reset ORIG_HEAD' ব্যবহার করে সমস্যাযুক্ত মার্জটি অপসারণ করা যায় ।


দ্রষ্টব্য: থেকে এখানে

শিরোনাম একটি চলমান পয়েন্টার। কখনও কখনও এটি বর্তমান শাখা বোঝায়, কখনও কখনও এটি হয় না।

সুতরাং হেড ইতিমধ্যে সর্বত্র সর্বত্র "বর্তমান শাখা" এর প্রতিশব্দ নয়

হেডের অর্থ গিটের সর্বত্র "বর্তমান" তবে এটি প্রয়োজনীয়ভাবে "বর্তমান শাখা" (অর্থাত্ পৃথক হেড) বোঝায় না।

তবে এর প্রায়শই অর্থ "বর্তমান প্রতিশ্রুতি"।
এটি প্রতিশ্রুতি " git commit" এর উপরে নির্মিত এবং " git diff --cached" এবং " git status" এর তুলনা করে।
এর অর্থ কেবলমাত্র সীমিত প্রসঙ্গে বর্তমান শাখাটি (ঠিক যখন আমরা একটি শাখার নামটি পরিচালনা করতে চাই --- প্রতিশ্রুতি / পুনর্বাসনা / ইত্যাদি মাধ্যমে ব্রাঞ্চের টিপটি পুনরায় সেট করা এবং বৃদ্ধি করা)।

রিফ্লগ এমন একটি বাহন যা সময় এবং সময়ের সাথে ফিরে যায় এবং "কারেন্ট" ধারণার সাথে মেশিনের আকর্ষণীয় মিথস্ক্রিয়া হয়।

HEAD@{5.minutes.ago}"এখনই ডানদিকে আমরা কী শাখায় রয়েছি তা খুঁজে বের করার জন্য এবং পরে সেই শাখার টিপটি 5 মিনিট আগে কোথায় ছিল তা খুঁজে বের করার জন্য" শ্রদ্ধা শিরোনামের শিরোনামের অর্থ হতে পারে "।
বিকল্পভাবে এর অর্থ হতে পারে "আমি 5 মিনিট আগে হেড হিসাবে উল্লেখ করা হবে এমন প্রতিশ্রুতিটি কী, উদাহরণস্বরূপ যদি আমি" গিট শো হেড "ফিরে এসেছি"।


git1.8.4 (জুলাই 2013) প্রবর্তন একটি নতুন স্বরলিপি চালু !
(প্রকৃতপক্ষে, এটি 1.8.5 বা 1.9, Q4 2013 এর জন্য হবে: প্রতিশ্রুতি 9ba89f4 এর সাথে পুনঃপ্রবর্তিত )

চারটি মূল অক্ষর " HEAD" টাইপ করার পরিবর্তে আপনি @এখন
" git log @" উদাহরণস্বরূপ " " বলতে পারেন ।

কমিট cdfd948 দেখুন

টাইপিং ' HEAD' ক্লান্তিকর, বিশেষত যখন আমরা এর @পরিবর্তে ' ' ব্যবহার করতে পারি ।

' @' বাছাই করার কারণটি হ'ল এটি ref@opসিনট্যাক্স থেকে প্রাকৃতিকভাবে অনুসরণ করে (উদাহরণস্বরূপ HEAD@{u}), যদিও আমাদের কোনও রেফ নেই, এবং কোনও অপারেশন নেই, এবং যখন আমাদের কাছে এটি নেই, এটি অনুমান করার জন্য সংবেদন করে HEAD। '

সুতরাং এখন আমরা ' git show @~1' ব্যবহার করতে পারি , এবং সেই সমস্ত মঙ্গলময়তা।

এখন অবধি ' @' একটি বৈধ নাম ছিল তবে এটি এই ধারণার সাথে সাংঘর্ষিক, সুতরাং আসুন এটি অবৈধ করে তুলি। সম্ভবত খুব কম লোকই, যদি থাকে তবে এই নামটি ব্যবহার করেছেন।


1.8.4-আরসি 3 সময়কালের (14 ই আগস্ট, 2013) এর মধ্যে একটি ব্লগ পোস্ট ঘোষণা করেছে যে এই বৈশিষ্ট্যটি আবার ফিরিয়ে দেওয়া হয়েছে এবং বিলম্ব হয়েছে ( মাথা কাপানোর জন্য আপনাকে ধন্যবাদ কাপকেক )। আবার এটি কমিট 9ba89f4 (সেপ্টেম্বর 2013) এর সাথে আবারও পরিচয় হয়েছে ।

কমিট 2c2b664 দেখুন :

প্রত্যাবর্তন করুন "নতুন জুড়ুন @জন্য শর্টকার্ট HEAD"

এটি cdfd948 প্রতিশ্রুতি ফেরায় , কারণ এটি কেবল " @" প্রযোজ্য নয় (এবং @{u}এটির মতো প্রয়োগকারীগুলির সাথে ফর্মগুলিও প্রয়োগ করে না), তবে উদাহরণস্বরূপ " refs/heads/@/foo" এটিও প্রভাবিত করে যা এটি করা উচিত নয়।

সংক্ষিপ্ত হাত দেওয়ার প্রাথমিক ধারণাটি ভাল হতে পারে এবং বিষয়টি পরে আবার চেষ্টা করা যেতে পারে তবে আসন্ন মুক্তির জন্য আপাতত বিদ্যমান ব্যবহারের ক্ষেত্রে প্রভাব ফেলতে এড়াতে ফিরে আসি।


গিট চালানোর পরে ORIG_HEAD পুনরায় সেট করুন এবং প্রতিশ্রুতিবদ্ধ। ORIG_HEAD এখনও HEAD এর পাশের রেফারেন্সের অধীনে রয়েছে। কেন এটি দৃশ্য থেকে সরানো হয়নি?
পাউডার366

@ পাউডার366 তবে একটি git resetউত্পন্ন করবে ORIG_HEAD। সুতরাং আপনার rmএটি ম্যানুয়ালি প্রয়োজন । উদাহরণস্বরূপ stackoverflow.com/a/12418078/6309 দেখুন ।
ভোনসি

1
@ ভনসির @উপনামটি গিট ১.৮.৪ রিলিজের জন্য (অস্থায়ীভাবে?) ফেরানোHEAD হচ্ছে ! এটি আজই ঘোষণা করা হয়েছিল!

"হেড-আপ" মন্তব্য উপভোগ করেছেন!
রবিনো

2

আমার উপলব্ধি হ'ল হেড বর্তমান শাখাটিকে নির্দেশ করে, যখন "বিপজ্জনক" ক্রিয়াকলাপ করার আগে পূর্বের হেড সংরক্ষণ করার জন্য ওআরআইজি_ইএইডি ব্যবহৃত হয়।

উদাহরণস্বরূপ গিট-রিবেস এবং গিট-এমএম শাখার মূল টিপটি কোনও পরিবর্তন প্রয়োগ করার আগে রেকর্ড করুন।


4
হেড সর্বদা বর্তমান শাখায় নির্দেশ করে না (এটি পৃথক করা যায়)
ভোনসি

1
সুতরাং যখন "হেড" আলাদা করা হয় তখন "বর্তমান শাখা" কী?
সিজেএস

@ কার্টজে.স্যাম্পসন এটি "কোনও শাখা নয়"। এই কারণেই যখন আপনি বিচ্ছিন্ন হয়ে যান, তখন আপনি git branch foo -bঅনাথদের জন্য একটি শাখা "তৈরি" করার জন্য করেন।
রই নমির

1

থেকে man 7 gitrevisions:

হেড শৃঙ্খলার নাম দেয় যার ভিত্তিতে আপনি কার্যনির্বাহী গাছের পরিবর্তনের উপর ভিত্তি করে। FETCH_HEAD আপনার শেষ গিট আনার অনুরোধের মাধ্যমে আপনি একটি রিমোট রিপোজিটরি থেকে যে শাখাটি নিয়ে এসেছেন তা রেকর্ড করে। ওআরআইজিএইইডিএইড কমান্ড দ্বারা তৈরি করা হয় যা আপনার হেডকে কঠোর উপায়ে সরিয়ে নিয়ে যায়, তাদের পরিচালনার আগে হেডের অবস্থানটি রেকর্ড করতে, যাতে আপনি শাখার টিপটি সহজে চালিয়ে যাওয়ার আগে রাজ্যে ফিরে যেতে পারেন। MERGE_HEAD আপনি গিট সংহতকরণের সময় আপনার শাখায় মার্জ হওয়া কমিটগুলি রেকর্ড করে। CHERRY_PICK_HEAD আপনি গিরি চেরি-বাছাই করার সময় চেরি-বাছাই করা প্রতিশ্রুতিটি রেকর্ড করে।

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