মধ্যে পার্থক্য কি HEAD
এবং master
গীত কি?
আমি গিটহাবের একটি প্রকল্পের ক্লোন করেছি এবং আমার পরিবর্তনগুলি দূরবর্তীতে ঠেলাতে চাই। তবে আমি কার দিকে ঠেলব?
মধ্যে পার্থক্য কি HEAD
এবং master
গীত কি?
আমি গিটহাবের একটি প্রকল্পের ক্লোন করেছি এবং আমার পরিবর্তনগুলি দূরবর্তীতে ঠেলাতে চাই। তবে আমি কার দিকে ঠেলব?
উত্তর:
master
একটি শাখার শেষে একটি রেফারেন্স। কনভেনশন দ্বারা (এবং ডিফল্টরূপে) এটি সাধারণত প্রধান একীকরণ শাখা, তবে এটি হওয়ার দরকার নেই।
HEAD
আসলে একটি বিশেষ ধরণের রেফারেন্স যা অন্য রেফারেন্সকে নির্দেশ করে। এটি নির্দেশ করতে পারে master
বা এটি নাও করতে পারে (এটি বর্তমানে যে কোনও শাখায় যাচাই করা আছে তা নির্দেশ করবে)। আপনি যদি জানেন যে আপনি master
শাখায় প্রতিশ্রুতিবদ্ধ হতে চান তবে এটিতে চাপ দিন।
এখানে একটি চাক্ষুষ উদাহরণ:
আপনার নিজস্ব সংগ্রহস্থলে আপনি এটি HEAD
চালিয়ে যে দিকে ইশারা দিচ্ছে তা পরীক্ষা করতে পারেন :
$ git symbolic-ref HEAD
refs/heads/master
যাইহোক, কোথায় remotes/origin/HEAD
নির্দেশ করছে এটি সন্ধান করা আরও জটিল কারণ এটি দূরবর্তী মেশিনে রয়েছে।
গিট রেফারেন্সগুলির জন্য এখানে দুর্দান্ত একটি টিউটোরিয়াল রয়েছে:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
এর সহজ উত্তরটি হ'ল HEAD
আপনি বর্তমানে যে শাখায় রয়েছেন তার অতি সাম্প্রতিক কমিটের জন্য একটি পয়েন্টার / লেবেল। master
যখন আপনি গিট সংগ্রহস্থল (উদাঃ git init
) শুরু করেন তখন তৈরি করা ডিফল্ট শাখা হয় ।
আপনি master
শাখাটি মুছতে পারেন (উদাঃ git branch -D master
)। আপনি HEAD
পয়েন্টার মুছতে পারবেন না ।
HEAD
আপনি বর্তমানে যে শাখায় রয়েছেন তার অতি সাম্প্রতিক কমিটের জন্য একটি পয়েন্টার / লেবেল।" আমি মনে করি এটি সর্বোত্তমভাবে বিভ্রান্তিকর। যদি আপনি কোনও পুরানো প্রতিশ্রুতি চেকআউট করেন, তবে শিরোনাম এখন সেই পুরানো প্রতিশ্রুতির দিকে নির্দেশক, সাম্প্রতিক প্রতিশ্রুতি নয়। রাইট?
checkout
কমান্ডটি অন্যান্য সাধারণ এসসিএম সিস্টেমে শাখা পরিবর্তন করার সমতুল্য।
HEAD
পয়েন্টারটি আসলে কী তা সম্পর্কে আরও ভাল ধারণা পাওয়ার জন্য যে কেউ আপনার মন্তব্যটি একটি দুর্দান্ত ব্যাখ্যা । আমি আপনার মন্তব্যের প্রশংসা করি এবং মনে করি অন্যরাও তা করবে। আপনার ফলোআপ মন্তব্য সহ আমার মূল পোস্টের সামগ্রী একে অপরের পরিপূরক। ধন্যবাদ।
আপনার বর্তমান শাখার পরিবর্তনগুলি কেবল ধাক্কা দিন
git push origin
এবং এটি আপনার শাখাকে ' B
' পরিবর্তন করে ' origin/B
' তে চাপ দেবে।
আপনি যদি আপনার master
শাখায় থাকেন তবে গিটটি এগিয়ে যাবে origin/master
।
প্রকৃতপক্ষে এটি স্থানীয় শাখাগুলির সমস্ত পরিবর্তনগুলিকে ঠেলে দেবে যাতে দূরবর্তী শাখাগুলির সাথে মিল রয়েছে origin
। এটি কনফিগারেশন সেটিংস পুশ.ডিফল্ট দ্বারা নিয়ন্ত্রিত হয় । প্রো গিট বইয়ের রেফস্পেসকে চাপ দেওয়াও
দেখুন ।
আপনি কি দেখতে পান পার্শ্বদন্ডে সব আপনার রিমোটের রেপো এর refspecs প্রতিনিধিত্বমূলক হয় এক্সপেরিমেন্টাল GitX কাঁটাচামচ এর GitX প্রকল্পের ।
এই HEAD
রিমোটটির জন্য ডিফল্ট শাখা নির্ধারণ করবে। ম্যান পৃষ্ঠা
দেখুন :git remote set-head
রিমোটের জন্য একটি ডিফল্ট শাখা থাকা প্রয়োজন হয় না, তবে নির্দিষ্ট শাখার পরিবর্তে দূরবর্তীটির নাম নির্দিষ্ট করার অনুমতি দেয়।
উদাহরণস্বরূপ, যদি এর জন্য ডিফল্ট শাখাorigin
সেট করা থাকেmaster
তবেorigin
আপনি যেখানে নির্দিষ্টভাবে নির্দিষ্ট করবেন সেখানে নির্দিষ্ট করা যেতে পারেorigin/master
।