গিট সুইচ এবং গিট চেকআউট <ব্র্যাঞ্চ> এর মধ্যে পার্থক্য কী


146

গিট ২.২৩ একটি নতুন কমান্ড প্রবর্তন করেছে git switch- দস্তাবেজগুলি পড়ার পরে, এটি দেখতে অনেকটা একই বলে মনে হচ্ছে git checkout <branchname>কেউ পার্থক্য বা ব্যবহারের ক্ষেত্রে কী ব্যাখ্যা করতে পারে?

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


4
এই বিষয়টি সম্পর্কে ইনফিউকিউতে একটি ভাল নিবন্ধ রয়েছে: ইনকিউকিউ নিউজ
২০১৮

উত্তর:


160

ভাল, আপনি যে ডকুমেন্টেশনের সাথে লিঙ্ক করেছেন তার অনুসারে এর একমাত্র উদ্দেশ্য হ'ল এর দুটি পৃথক ব্যবহারকে আলাদা করে স্পষ্ট করা git checkout:

  • git switchএখন যেমন শাখা পরিবর্তন করতে ব্যবহৃত হতে git checkout <branchname>পারে
  • git restoreফাইলগুলি কিছু নির্দিষ্ট সংশোধনীতে পুনরায় সেট করতে ব্যবহার করা যেতে পারে git checkout --<path_to_file>does

লোকেরা ব্যবহারের এই বিভিন্ন উপায় দ্বারা বিভ্রান্ত হয় git checkout, যেমন আপনি git checkoutস্ট্যাকওভারফ্লো সম্পর্কে এখানে প্রচুর প্রশ্ন থেকে দেখতে পারেন । গিট বিকাশকারীরা মনে হয় এটি এটিকে গ্রহণ করেছে।


30
এটি একটি ভাল পরিবর্তন বলে মনে হচ্ছে। একটি শাখা তৈরি? git checkoutশাখা সুইচ? git checkoutএকটি ফাইলের একটি নির্দিষ্ট সংস্করণ পাবেন? git checkoutএকটি ফাইলের পরিবর্তনগুলি সরাবেন? git checkoutসত্যিই আমি ভাবছি যে সাধারণ গিট ওয়ার্কফ্লো কতগুলি বিভিন্ন পতাকা দিয়ে করা যেতে পারে git checkout
ক্যাপ্টেন ম্যান

4
সুতরাং এখন ধারণাটি git checkoutকি প্রযুক্তিগতভাবে আর কোনও কিছুর জন্য প্রয়োজন হয় না? অথবা এটি এখনও কিছু নির্দিষ্ট জিনিসের জন্য যেমন ব্যবহার করা হচ্ছে যেমন কোনও শাখা প্রধান নয় এমন প্রতিশ্রুতি পরীক্ষা করা ("বিচ্ছিন্ন মাথা" মোডে চলে যাওয়া)?
পিটারনয়েটস

4
@ ক্যাপ্টেনম্যান, একটি নতুন শাখা তৈরির কাজটি সম্পন্ন হয়েছে git branch। যা তবে কেবল শাখা তৈরি করে এবং এটিতে স্যুইচ করে না (অন্য এক অদ্ভুত নকশার সিদ্ধান্ত)। আপনি যদি নতুন শাখায় কাজ চালিয়ে যেতে চান তবে আপনাকে checkoutএটিতে প্রবেশ করতে হবে। checkout -b <branch name>একটি বিকল্প আছে যা git branch+ এর শর্টকাট git checkout। তবুও, checkoutঅপারেশন প্রযুক্তিগতভাবে একটি নতুন শাখা তৈরি করে না।
মাইক

4
@ মাইক আপনি কীভাবে বলতে পারেন চেকআউট শাখা করে না বলার পরে চেকআউট শাখাগুলি একটি বাক্য করে না? -bপতাকার অভ্যন্তরীণ কাজটি কোনও ব্যাপার নয় । এটি এখনও একটি শাখা তোলে।
ক্যাপ্টেন ম্যান

4
@ ক্যাপিটেনম্যান, checkout অপারেশনটি একটি শাখা তৈরি করে না, এটি কেবল একটি বিদ্যমান শাখায় স্যুইচ করতে পারে। -bবিকল্প checkout কমান্ড অভ্যন্তরীণভাবে একটি সঞ্চালিত git branchআগে এটি আসলে চেকআউট করে। এটির মতোই + এর git pullশর্টকাট । git fetchgit merge
মাইক

65

git checkout এটি একটি সুইস সেনা ছুরি একটি বিট যা এর সাথে সম্পর্কিত নয় অনেকগুলি ব্যবহার।

আপনি যদি কোনও ফাইল পরিবর্তন করেন তবে পরিবর্তনটি পর্যায়ক্রমে না নিলে তা পরিবর্তনের git checkout <filename>বিপরীত হবে ... একটি ফাইলের পরিবর্তনগুলি বাতিল করার একটি দ্রুত এবং সহজ উপায়। আপনি একই শাখায় রয়েছেন।

git checkout <branchname> (যেমন আপনি উল্লেখ করেছেন) শাখাগুলি স্যুইচ করে।

দুটি সম্পূর্ণ ভিন্ন উদ্দেশ্য, যা কোনও ফাইলের নাম এবং একটি শাখার নাম একই রকম হলে বিভ্রান্তির কারণ হতে পারে।

দুটি কমান্ড হিসাবে এটি থাকা আরও পরিষ্কার।


আপনি যেমন একই নাম দিয়ে একটি শাখা এবং ফাইল থাকার বিষয়টি বিভ্রান্তিকর বলে উল্লেখ করেছেন। আমি ধরে নিয়েছি শাখাটি ফাইলটির চেয়ে বেশি অগ্রাধিকার নেয়, কারণ এটি প্রায়শই বেশি পছন্দসই হবে? বা কিভাবে কাজ করে?
এজেন্টএম

@ এজেন্টএম হ্যাঁ, এটি সঠিক is যদি একটি শাখা এবং একটি ফাইলের একই নাম থাকে তবে করা git checkout <name>ফাইলের পরিবর্তে শাখাটিকে অগ্রাধিকার দেয়।
কার্তিক সোনজি

3

switchকিছু সীমাবদ্ধতা রয়েছে: এই মুহুর্তে আপনি যে কোনও প্রতিশ্রুতি থেকে স্যুইচ করতে পারেন <branch name>, তবে বিচ্ছিন্ন হেডের একটি স্ট্যাটাস সহ একটি বিশেষ কমিট থেকে স্যুইচ করা অসম্ভব । সুতরাং আপনাকে ব্যবহার করতে হবে (যেখানে 5efb স্বেচ্ছাসেবীর প্রতিশ্রুতি দেওয়ার জন্য একটি হ্যাশ উল্লেখের উদাহরণ)<branch name>git checkout 5efb


4
আমি যুক্তি দেব যে এটি তাত্পর্যপূর্ণভাবে একটি বৈশিষ্ট্য এবং কোনও বাগ (সীমাবদ্ধতা) নয়। switchশাখা পরিবর্তনের একক উদ্দেশ্যে তৈরি করা হয়েছে, এবং আপনি যখন এটি করেন, আপনি সেই শাখার প্রধান হতে চান be checkoutএটি একটি আরও সাধারণ ক্রিয়াকলাপ যা ইতিহাসের প্রদত্ত রাজ্যের সাথে আপনার কাজের অনুলিপি নিয়ে আসে (= কমিট)। যেহেতু যে কোনও শাখার নাম সেই শাখার হেড কমিটের একটি উপনাম, তাই কোনও শাখা পরীক্ষা করা অন্য কোনও প্রতিশ্রুতি পরীক্ষা করার চেয়ে প্রযুক্তিগতভাবে আলাদা নয়।
মাইক

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