Git মধ্যে FETCH_HEAD কি মানে?




git-fetch (4)

FETCH_HEAD শেষ ফ্যাক্টের টিপের একটি রেফারেন্স, যে Fetch সরাসরি fetch কমান্ড বা পুলের অংশ হিসাবে ব্যবহার করা হয়েছিল। FETCH_HEAD এর বর্তমান মানটি নামের একটি ফাইলের .git ফোল্ডারে সংরক্ষিত হয়, আপনি এটি অনুমান করেছেন, FETCH_HEAD

তাই যদি আমি ইস্যু করি:

git fetch https://github.com/ryanmaxwell/Fragaria

FETCH_HEAD থাকতে পারে

3cfda7cfdcf9fb78b44d991f8470df56723658d3        https://github.com/ryanmaxwell/Fragaria

যদি রিমোট রিপো রিমোট ট্র্যাকিং শাখা হিসাবে কনফিগার করা থাকে তবে আমি ট্র্যাকিং শাখার মার্জ সহ আমার fetch অনুসরণ করতে পারি। আমি যদি FETCH_HEAD ব্যবহার করে সরাসরি সরাসরি ফিক্সের টিপটি একত্রিত করতে পারি না।

git merge FETCH_HEAD

git pull --help বলেছেন:

তার ডিফল্ট মোডে, গিট টান Git fetch এর জন্য shorthand হয় যা Git merge FETCH_HEAD অনুসরণ করে।

এই FETCH_HEAD কি, এবং আসলে কি FETCH_HEAD সময় মার্জ করা হয়?


আমি আবিষ্কার করেছি এবং FETCH_HEAD ব্যবহার FETCH_HEAD । আমি একটি সার্ভার থেকে কিছু সফটওয়্যার একটি স্থানীয় কপি চেয়েছিলেন এবং আমি করেছি

git fetch gitserver release_1

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

 git tag release_1 FETCH_HEAD 

স্থানীয় এক থেকে রিমোট রিপোজিটরি থেকে ট্যাগকৃত চেইন অফ কাইটস (রিলিজ_1) অনুলিপিটি সম্পূর্ণ করতে। রিমোট রিমোট ট্যাগটি পেয়েছে, আমার স্থানীয় মেশিনে এই FETCH_HEAD অনুলিপি অনুলিপি করেছে, স্থানীয় ট্যাগ তৈরি করে নি , তবে FETCH_HEAD সেট FETCH_HEAD , যাতে আমি এটি খুঁজে পেতে এবং ব্যবহার করতে পারি। আমি তখন একটি স্থানীয় ট্যাগ তৈরি করতে FETCH_HEAD ব্যবহার FETCH_HEAD যা দূরবর্তী ট্যাগটি মিলেছে। এটি FETCH_HEAD কী এবং এটি কীভাবে ব্যবহার করা যেতে পারে তার একটি বাস্তব চিত্রণ এবং এটি FETCH_HEAD কাছে কী কাজে FETCH_HEAD পারে তা অবাক হওয়ার কিছু নেই।

আমার মতে এটি সেই উদ্দেশ্যে এবং আমি যা করার চেষ্টা করছিলাম তা অর্জনের একটি ভাল উপায়ের জন্য ভালভাবে এড়িয়ে যাওয়া হয়

git fetch gitserver release_1:release_1

অর্থাৎ release_1 আনতে এবং এটি স্থানীয়ভাবে release_1 কল। (এটি উৎস: dest, https://git-scm.com/book/en/v2/Git-Internals-The-Refspec ; ঠিক আছে যদি আপনি এটি একটি পৃথক নাম দিতে চান!)

আপনি যদিও মাঝে মাঝে FETCH_HEAD ব্যবহার করতে চাইতে পারেন: -

git fetch gitserver bugfix1234
git cherry-pick FETCH_HEAD

আপনার জিটি সার্ভার থেকে বাগ ফিক্স নম্বর 1২34 ব্যবহার করার এবং আপনার বর্তমান শাখায় চেরি-সিলেক্ট হওয়া একবার সার্ভার থেকে কপি নিষ্পত্তি করার জন্য গিটের আবর্জনা সংগ্রহটি ব্যবহার করার একটি দুর্দান্ত উপায় হতে পারে। (আমি বিশ্বাস করছি যে একটি চমৎকার পরিচ্ছন্ন ট্যাগযুক্ত কমিটি রয়েছে যা সার্ভারের সম্পূর্ণ ত্রুটি সংশোধন করে!)


FETCH_HEAD রিমোট রিপোজিটরি থেকে প্রাপ্ত করা হয়েছে তার ট্র্যাক রাখতে, একটি স্বল্পকালীন রেফারেন্স। git pull প্রথম রিমোট থেকে একটি শাখা আনয়ন স্বাভাবিক ক্ষেত্রে, git fetch invokes; FETCH_HEAD এই শাখাটির FETCH_HEAD নির্দেশ করে (এটি শাখাগুলির মতো শাখাটির SHA1 সঞ্চয় করে)। FETCH_HEAD git pull তারপর বর্তমান শাখায় FETCH_HEAD git merge , FETCH_HEAD মার্জ FETCH_HEAD

ফলাফলটি আপনি যা আশা করেন ঠিক তা হল: যথাযথ রিমোট শাখাটির টিপসটি আপনার বর্তমান শাখার টিপটিতে সংঘটিত হয়।

এটি আপনার FETCH_HEAD শাখাগুলিকে আপডেট করার পরে git merge origin/<branch> FETCH_HEAD করার মতো কিছুটা (বা git remote update ), তারপর git merge origin/<branch> , তবে অভ্যন্তরীণভাবে FETCH_HEAD ব্যবহার করে FETCH_HEAD পরিবর্তে কোন একক রেফারেন্স আনা হয়েছে তা উল্লেখ করার মতো জিনিষ নাম।


জনাথন এর উত্তর হিসাবে উল্লিখিত, FETCH_HEAD ফাইল অনুরূপ। .git/FETCH_HEAD । সাধারণত, ফাইলটি এভাবে দেখতে পাবে:

71f026561ddb57063681109aadd0de5bac26ada9                        branch 'some-branch' of <remote URL>
669980e32769626587c5f3c45334fb81e5f44c34        not-for-merge   branch 'some-other-branch' of <remote URL>
b858c89278ab1469c71340eef8cf38cc4ef03fed        not-for-merge   branch 'yet-some-other-branch' of <remote URL>

সব শাখা কিভাবে এক কিন্তু নোট not-for-merge হয় নোট করুন। অদ্ভুত এক আউট শাখা আগে পরীক্ষা করা হয় যে শাখা। সারসংক্ষেপে: FETCH_HEAD মূলত শাখাটির রিমোট সংস্করণের অনুরূপ যা বর্তমানে চেক আউট।





git-fetch