আমি কীভাবে আমার গিট সংগ্রহস্থলকে একটি বিশেষ প্রতিশ্রুতিতে স্যুইচ করতে পারি


189

আমার গিট ভাণ্ডারে, আমি আমার গিট লগের নীচের মত 5 টি কমিট করেছি:

commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc
Author: Michael 
Date:   Fri Feb 4 15:26:38 2011 -0800

commit b688d46f55db1bc304f7f689a065331fc1715079
Author: Michael
Date:   Mon Jan 31 10:37:42 2011 -0800

commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda
Author: Michael
Date:   Wed Jan 26 13:33:17 2011 -0800

commit 4771e26619b9acba3f059b491c6c6d70115e696c
Author: Michael 
Date:   Wed Jan 26 11:16:51 2011 -0800

commit 6e559cb951b9bfa14243b925c1972a1bd2586d59
Author: Michael 
Date:   Fri Jan 21 11:42:27 2011 -0800

আমি কীভাবে আমার পূর্ববর্তী 4 কমিটগুলি স্থানীয়ভাবে কোনও শাখায় ফিরে যেতে পারি? অন্য কথায়, আমি আমার সর্বশেষ 4 টি কমিট না করে কীভাবে একটি শাখা তৈরি করতে পারি (ধরে নিই যে গিট লগ থেকে আমার সেই কমিটের এসএইচএ আছে)?

উত্তর:


230

একটি নতুন শাখা তৈরি করতে (স্থানীয়ভাবে):

  • কমিট হ্যাশ (বা এর অংশ) সহ

    git checkout -b new_branch 6e559cb
    
  • বা হেড থেকে 4 টি কমিট ফিরে যেতে

    git checkout -b new_branch HEAD~4
    

আপনার নতুন শাখাটি একবারে (স্থানীয়ভাবে) তৈরি হয়ে গেলে আপনি একই নামের দূরবর্তীটিতে এই পরিবর্তনটি প্রতিলিপি করতে চাইতে পারেন: আমি কীভাবে আমার পরিবর্তনগুলিকে একটি দূরবর্তী শাখায় ঠেকাতে পারি?


শেষ তিনটি কমিটি বাতিল করার জন্য , নীচে লুনারিওরনের উত্তরটি দেখুন


জন্য নিদিষ্ট করার জন্য একটি নতুন শাখা তৈরি ছাড়া কমিট আপনার বর্তমান শাখা আলোচনার দেখুন নিচের Arpiagar এর উত্তর


153

উপরের সমস্ত কমান্ড একটি নতুন শাখা তৈরি করে এবং সর্বশেষ প্রতিশ্রুতিতে কমান্ডটিতে সুনির্দিষ্ট একটি হিসাবে চিহ্নিত করা হয়, তবে কেবলমাত্র আপনি যদি আপনার বর্তমান শাখাটি HEADনির্দিষ্ট প্রতিশ্রুতিতে যেতে চান তবে নীচের আদেশটি নীচে:

 git checkout <commit_hash>

এটি নির্দিষ্ট প্রতিশ্রুতিগুলিকে বিচ্ছিন্ন করে এবং নির্দেশ করে এবং ব্যবহারকারী যখন নির্দিষ্ট প্রতিশ্রুতি অবধিHEAD শাখা রাজ্যটি দেখতে চান তখন একটি নতুন শাখা তৈরি করা থেকে রক্ষা করে।


তারপরে আপনি সর্বশেষতম প্রতিশ্রুতিতে ফিরে যেতে এবং বিচ্ছিন্ন হেডকে ঠিক করতে চাইতে পারেন:

একটি গিট বিচ্ছিন্ন মাথা ঠিক করুন?


1
এটি মাথা বিচ্ছিন্ন হবে। সুবিধাজনক না.
ইগোরগানাপলস্কি

এমনকি যদি <commit_hash>সামনে বিভিন্ন শাখায় থাকে?
সিয়াস্তো পাইকার্জ

সংযুক্ত প্রশ্নটি কেবল এটিকে বলে git checkout master, এক বা দুটি প্রান্তের পাশাপাশি কিছু কিছু ক্ষেত্রে প্রযোজ্য।
i336_

66

আপনি যদি সর্বশেষ চারটি কমিট দূরে ফেলে দিতে চান তবে ব্যবহার করুন:

git reset --hard HEAD^^^^

বিকল্পভাবে, আপনি যে প্রতিশ্রুতিতে পুনরায় সেট করতে চান তা হ্যাশ নির্দিষ্ট করতে পারেন:

git reset --hard 6e559cb

4
এটি ব্রাঞ্চিং পদক্ষেপটি ছেড়ে দেয়। যদি এখানে দেখানো হয় ঠিক তেমন চালায় তবে তিনি স্থায়ীভাবে সেই শীর্ষস্থানীয় প্রতিশ্রুতি হারাবেন।
জিমি কুয়াদ্রা

3
ঠিক আছে, অগত্যা স্থায়ীভাবে নয় - কেউ আগের মাথাটির এসএইচএ পেতে পারে git reflogএবং এটিতে পুনরায় সেট করতে পারে - তবে এটি তাদের ফেলে দেবে, হ্যাঁ।
অ্যাম্বার

1
যদি কমিটগুলি প্রথমে ধাক্কা দেওয়া হয় তবে পুনরায় সেট করুন, কেবল একটি টান দিয়ে সেগুলি পুনরুদ্ধার করা যেতে পারে।
রিক স্মিথ

17

আপনার নতুন শাখাটি শুরু হতে চান এবং কেবল একটি নতুন শাখা তৈরি করতে চান সেই প্রতিশ্রুতিটি চেকআউট করুন

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