গিট চেকআউটগুলি আসলে কী বোঝায়?


96

কি আছে checkoutগিট মধ্যে ?

আমি জানি আপনি একবার checkoutকোনও নির্দিষ্ট শাখায় যা করেন, সেই শাখার HEADপয়েন্টগুলি। কিন্তু এটা সত্যিই কি মানে? এর অর্থ কি আমি তখন সেই শাখায় কাজ করতে পারি? যদি হ্যাঁ, তবে, কোনও শাখা পরীক্ষা না করেই আমি এতে কাজ করতে পারছি না?

এছাড়াও, remote checkoutমানে কি? এটা কিভাবে দরকারী?


4
কেউ নেওয়া হয়নি। হ্যাঁ আমার আছে এবং আমি এটির অর্থটি বোঝাতে পেরেছি। যেমন হেড ইত্যাদির দিকে নির্দেশ করুন তবে আমি "চেকআউট কোড - পরিবর্তনগুলি করা - চেক ইন" দৃষ্টিকোণ থেকে জানতে চাই বা এটি আলাদা?
দেহাই

25
@ এন্টোনিজন - আমি প্রশ্নটি গুগল করার চেষ্টা করেছি - এটিই প্রথম ফলাফল - এক ধরনের দুঃখের বিষয় যে আমি একবার এখানে এসে দেখলাম প্রশ্নটি বন্ধ ছিল এবং এই পাগল মনোভাব সবার রয়েছে - আমি টিএফএস ব্যাকগ্রাউন্ড থেকে এসেছি এবং "চেকআউট" সন্দেহ করা শুরু করা মানে জিআইটিতে সম্পূর্ণ আলাদা কিছু। গিট-জমিতে এর অর্থ কী তা আমি জানতে চাই ।
ব্রেইনস্লাগস 83

উত্তর:


60

যেমন আপনি লক্ষ করেছেন, প্রতিশ্রুতিযুক্ত HEADগাছটিতে আপনি কোথায় রয়েছেন তা উল্লেখ করার একটি লেবেল। যখন আপনি একটি প্রতিশ্রুতি থেকে অন্য প্রতিশ্রুতিবদ্ধ হন এটি আপনার সাথে সরে যায়। git checkout <commit>প্রতিশ্রুতিবদ্ধ গাছের চারদিকে ঘোরাঘুরি করার জন্য আপনার মনোনিবেশ ( HEAD) কে নির্দিষ্ট প্রতিশ্রুতিতে স্থানান্তরিত করার জন্য মৌলিক প্রক্রিয়া ।

কমিট উপায়ে একটি সংখ্যা কোন দ্বারা নির্দিষ্ট করা যেতে পারে, হ্যাশ, শাখা নাম, ট্যাগ নাম, আপেক্ষিক সিনট্যাক্স (কমিট HEAD^, HEAD~1ইত্যাদি) ইত্যাদি। চেকআউটটি শাখা পরিবর্তন করার জন্য বিবেচনা করা প্রায়শই দরকারী এবং কিছু বিকল্প রয়েছে যা সেই দৃষ্টিকোণ থেকে কাজ করে তবে তারা সমস্ত রেফারেন্স কমিট করে।

একটি প্রতিশ্রুতি চেক আউট এর HEADচারপাশে ঘোরাফেরা ব্যতীত অন্যদিকে কিছুটা প্রভাব ফেলে ।

  • ওয়ার্কিং ডিরেক্টরিটি চেক আউট কমিটের স্থিতিতে আপডেট করা হয়।
  • যদি কোনও শাখার নাম নির্দিষ্ট করা থাকে, চেকআউট সেই শাখাকে সক্রিয় করে তোলে। সক্রিয় শাখা যুক্ত হওয়া যে কোনও নতুন কমিটের সাথে সরানো হবে।
    • সঙ্গে -bবিকল্প একটি নতুন শাখা বর্তমান উপর ভিত্তি করে কমিট তৈরি করা হবে এবং তারপর সক্রিয় প্রণীত।
    • সাথে --track বিকল্প চেক আউট শাখা একটি দূরবর্তী শাখার সচেতন করা যেতে পারে
    • সঙ্গে --orphanএকটি নতুন শাখা বিকল্প (মতো তৈরি করা হয় -b) কিন্তু কোনো বিদ্যমান কমিট উপর ভিত্তি করে করা হবে না।

আরও কয়েকটি অপশন রয়েছে, যা আপনি গিট চেকআউট ম্যান-পৃষ্ঠাতে পড়তে পারেন, এগুলি সমস্তই একটি থেকে অন্য প্রতিশ্রুতিবদ্ধ হয়ে ঘুরে বেড়াচ্ছে - চলন্তের পাশাপাশি এই পদক্ষেপের কী প্রভাব রয়েছে তা কেবল তারতম্য HEAD


সুতরাং, দেখে মনে হচ্ছে "চেকআউট" এর অর্থ পুরোপুরি আলাদা কিছু রয়েছে (যাইহোক টিএফএসের তুলনায় - টিএফএস সমতুল্য একটি "বিশেষ" চেঞ্জসেট "পাবে")। খুশী আমি এই তাকিয়ে! - "সর্বশেষ" জন্য কোন জাদু ধ্রুবক আছে? (টিএফএসে এটি "টি") - এইভাবে আমরা "হেড" লেবেল না জেনে কোডের সর্বশেষ সংস্করণটি ডাউনলোড করতে পারি?
BrainSlugs83

4
আপনি যদি একটি শাখায় থাকেন তবে শাখার নামটি সেই শাখার সর্বশেষ প্রতিশ্রুতি - আপনি যদি কোনও শাখায় না থাকেন তবে আপনি সর্বশেষ প্রতিশ্রুতিতে রয়েছেন। আমি শাখা বিবেচনা না করেই সংগ্রহস্থলের সর্বাধিক সাম্প্রতিক প্রতিশ্রুতি সন্ধান করার জন্য লগ কমান্ডটি ব্যবহার করব এবং তারপরে ম্যানুয়ালি এটিতে স্থানান্তরিত করব - তবে আমি নিশ্চিত যে প্রয়োজন হলে এটি স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে।
ডেভিড কাল্প

শেষ অনুচ্ছেদ সম্পর্কে: দয়া করে নোট করুন যে git checkout <commit> <path>শাখাগুলি পরিবর্তন করে না।
galath

তোমার ব্যাখ্যা ভুল নয় কিন্তু আপনি একটি খুব গুরুত্বপূর্ণ (এবং সম্ভাব্য বিপজ্জনক) ব্যবহারের ক্ষেত্রে ভুলে গেছি: git checkout <path>
এরিক ডুমিনিল

24

ফাইল, ফোল্ডার এবং শাখাগুলি দিয়ে চেকআউটের কয়েকটি ব্যবহারের ক্ষেত্রগুলিকে আমি ব্যাখ্যা করব যাতে এটি বুঝতে সহায়তা করতে পারে।

ধরা যাক আমাদের ফোল্ডারের নাম দেওয়া আছে devএবং index.htmlসবকিছুই ট্র্যাক করা হয়েছে এবং ওয়ার্কিং ডিরেক্টরিটি পরিষ্কার।

যদি আমি দুর্ঘটনাক্রমে ফাইলের নাম পরিবর্তন করি index.htmlএবং আমি পূর্বাবস্থায় ফিরে যেতে চাই তবে এটি কেবলমাত্র ব্যবহার করব git checkout index.htmlতা বর্তমানে নির্বাচিত শাখার সংগ্রহস্থল থেকে সেই ফাইলের অবস্থাটি পুনরুদ্ধার করবে।

এখন যদি আমি devফোল্ডারে কিছু পরিবর্তন করে তা পুনরুদ্ধার করতে চাই। আমি ব্যবহার করতে পারি git checkout devতবে যদি সেখানে devফোল্ডারটি পরীক্ষা করার পরিবর্তে ইতিমধ্যে নামকরণ করা ব্রাঞ্চ থাকে তবে এটি সেই শাখাটি নীচে টানবে। এড়াতে আমি বরং করতাম git checkout -- dev

এখন এখানে খালি ডাবল ড্যাশ বর্তমান শাখা এবং devবর্তমানে নির্বাচিত শাখা থেকে ফোল্ডারের জন্য গিট জিজ্ঞাসা করে ।

একইভাবে যদি আমি করি git checkout alpha dev এটি এটি আলফা শাখা থেকে ডেভ ফোল্ডারটি নীচে টানবে।

এই উত্তরটি আপনার প্রথম প্রশ্নের জন্য 'গিট চেকআউটটি আসলে বোঝায়' for


4
আপনার শেষ লাইনে এই উত্তরটি আপনার প্রথম প্রশ্নের জন্য 'গিট চেকআউটটি আসলেই বোঝা যাচ্ছে' for আপনি কি 'গড়' শাখা থেকে 'সত্যই' ফোল্ডারটি পরীক্ষা করছেন: পি
পরমবীর সিং কারওয়াল

22

"চেক আউট" এর অর্থ আপনি ভাণ্ডার থেকে প্রদত্ত যে কোনও প্রতিশ্রুতি গ্রহণ করেন এবং ওয়ার্কিং ডিরেক্টরিতে সম্পর্কিত ফাইল এবং ডিরেক্টরি গাছের স্থিতি পুনরায় তৈরি করেন।

যখন আপনি চেক আউট একটি কমিট যে না একটি শাখা মাথা (যেমনgit checkout HEAD~2 ), আপনি একটি তথাকথিত হয় বিচু্যত মাথা। আপনি এখানে কমিটগুলি তৈরি করতে পারেন, তবে একবার আপনি অন্য কোনও শাখায় স্যুইচ করলে, সেই কমিটিগুলি কোনও শাখার নাম অনুসারে পুনরুদ্ধারযোগ্য হবে না এবং এমনকি কিছু সময়ের পরে আবর্জনা সংগ্রহকারী দ্বারা অপসারণ করা যেতে পারে।

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