উত্তর:
git checkout <sha1>একটি নির্দিষ্ট প্রতিশ্রুতি চেক আউট ব্যবহার করুন ।
git logএখন কেবল প্রথম প্রতিশ্রুতি দেখায়, আমি কি পরবর্তী প্রতিশ্রুতিটির sha1 খুঁজে পেতে পারি?
git log --onelineরেফারেন্সের জন্য পাঠ্য ফাইলে আউটপুট চালানো এবং আটকে দেওয়া উচিত (সংক্ষিপ্ত আকারের এটির শংসাগুলি যা এটি সরবরাহ করে তা অনন্য হওয়ার গ্যারান্টিযুক্ত)। আরেকটি বিকল্প, যদি আপনার ইতিহাস রৈখিক হয়, কত করে প্রথম পর্যন্ত কমিট থেকে আছে জিনিসটা হয় masterএবং ব্যবহারের git checkout master~543(যদি সেখানে 543 করে হয়), তারপর git checkout master~542, ইত্যাদি
একটি নির্দিষ্ট সংস্করণে যেতে / কমান্ড নিম্নলিখিত কমান্ড চালাতে। আপনি পেতে পারেন হ্যাশ-কোডgit log --oneline -n 10
git reset --hard HASH-CODE
দ্রষ্টব্য - নির্দিষ্ট সংস্করণে পুনরায় সেট করার পরে / প্রতিশ্রুতিবদ্ধ আপনি চালাতে পারেন git pull --rebase, যদি আপনি বাতিল সমস্ত কমিটগুলি ফিরিয়ে আনতে চান।
resetগ্রাফের কোনও নির্দিষ্ট পয়েন্ট কেবলমাত্র চেকআউট করে না এটি আপনার বর্তমানে চেক আউট শাখাটিও সরিয়ে ফেলবে
reset, আপনার সমস্ত মুলতুবি পরিবর্তনগুলি বাতিল করা হয়েছে।
git pull --rebaseআপনার রেপোর জন্য কোনও রিমোট থাকলে এবং তা আপ টু ডেট থাকে কেবল তখনই কাজ করে ।
আপনি প্রকল্পের ইতিহাসের মতো সরঞ্জাম সহ গ্রাফিকাল ভিউ পেতে পারেন gitk। শেষ ঘন্টা:
gitk --all
আপনি যদি একটি নির্দিষ্ট শাখা চেকআউট করতে চান:
git checkout <branch name>
নির্দিষ্ট অঙ্গীকারের জন্য, শাখার নামের পরিবর্তে SHA1 হ্যাশ ব্যবহার করুন। (দেখুন Treeishes মধ্যে গীত কমিউনিটি বুক , যা একটি ভাল পঠিত, আপনার গাছ নেভিগেট করার জন্য অন্যান্য অপশন দেখতে।)
git log বিস্তারিত বা সংক্ষিপ্ত ইতিহাস প্রদর্শন করার জন্য বিকল্পগুলির পুরো সেট রয়েছে।
প্রতিশ্রুতিবদ্ধ ইতিহাসে এগিয়ে যাওয়ার সহজ উপায় আমি জানি না । লিনিয়ার ইতিহাস সহ প্রকল্পগুলি সম্ভবত সমস্ত সাধারণ নয়। আপনার "এসভিএন" বা সিভিএসের মতো "রিভিশন" ধারণাটি গিতের সমস্ত কিছুকে মানচিত্র দেয় না।
কমিটের SHA1 কী ব্যবহার করে আপনি নিম্নলিখিতটি করতে পারেন:
প্রথমে একটি নির্দিষ্ট ফাইলের জন্য আপনি যে প্রতিশ্রুতিবদ্ধ তা সন্ধান করুন:
git log -n <# commits> <file-name>
এটি, আপনার উপর ভিত্তি করে <# commits> , একটি নির্দিষ্ট ফাইলের জন্য কমিটের একটি তালিকা তৈরি করবে।
টিপ: আপনি কী প্রতিশ্রুতি সন্ধান করছেন তা যদি নিশ্চিত না হন তবে নিম্নলিখিত কমান্ডটি ব্যবহার করার একটি উত্তম উপায়: git diff <commit-SHA1>..HEAD <file-name> । এই কমান্ডটি কমিটের বর্তমান সংস্করণ এবং একটি নির্দিষ্ট ফাইলের জন্য প্রতিশ্রুতি দেওয়ার পূর্ববর্তী সংস্করণের মধ্যে পার্থক্য প্রদর্শন করবে show
দ্রষ্টব্য: কমিটের SHA1 কী git log -nএর তালিকায় ফর্ম্যাট করা আছে :
সমর্পণ করা
<SHA1 id>
দ্বিতীয়ত, পছন্দসই সংস্করণটি চেকআউট করুন:
আপনি যে পছন্দসই প্রতিশ্রুতি / সংস্করণ চান তা যদি খুঁজে পেয়ে থাকেন তবে কেবল কমান্ডটি ব্যবহার করুন: git checkout <desired-SHA1> <file-name>
এটি আপনার মঞ্চে নির্দিষ্ট করা ফাইলটির সংস্করণ স্থাপন করবে। স্টেজিং এরিয়া থেকে বেরিয়ে আসার জন্য কমান্ডটি কেবল ব্যবহার করুন:reset HEAD <file-name>
দূরবর্তী সংগ্রহস্থলের দিকে নির্দেশিত যেখানে ফিরে যেতে, কেবল কমান্ডটি ব্যবহার করুন: git checkout HEAD <file-name>
আমি এমন পরিস্থিতিতে ছিলাম যেখানে আমাদের একটি মাস্টার শাখা আছে এবং তারপরে আর একটি শাখা 17.0 নামে পরিচিত এবং এই 17.0 এর অভ্যন্তরে একটি কমিট হ্যাশ নেই "XYZ" বলে নেই । এবং গ্রাহককে সেই এক্সওয়াইজেড রিভিশন পর্যন্ত একটি বিল্ড দেওয়া হবে। এখন আমরা একটি বাগ জুড়ে এসেছি এবং এটি সেই গ্রাহকের জন্য সমাধান করা দরকার। সুতরাং আমাদের সেই "xyz" হ্যাশ পর্যন্ত সেই গ্রাহকের জন্য আলাদা শাখা তৈরি করা দরকার। আমি এখানে এটি কিভাবে।
প্রথমে আমি আমার স্থানীয় মেশিনে সেই গ্রাহকের নামের একটি ফোল্ডার তৈরি করেছি। এই ফোল্ডারটির ভিতরে কমান্ডের পরে ফোল্ডারটি সমস্যা তৈরি হয়ে গেলে গ্রাহকের নামটি "এএএ" হয়:
একটি উপায় হ'ল প্যাচগুলিতে করা সমস্ত কমিট তৈরি করা। প্রাথমিক প্রতিশ্রুতি চেকআউট করুন এবং তারপরে প্যাচগুলি পড়ার পরে প্রয়োগ করুন।
ব্যবহার git format-patch <initial revision>এবং তারপর git checkout <initial revision>। আপনার পরিচালকের মধ্যে ফাইলের একটি স্তূপ পাওয়া উচিত যা চারটি অঙ্কের সাথে শুরু হয় যা প্যাচগুলি।
আপনি যখন আপনার রিভিশনটি পড়া শেষ করেন ঠিক তেমনটি করুন git apply <filename>যা দেখতে হবে
git apply 0001-* এবং গণনা করা ।
তবে আমি সত্যিই অবাক হয়েছি কেন আপনি কেবল তার পরিবর্তে প্যাচগুলি পড়তে চান না? দয়া করে আপনার মন্তব্যে এটি পোস্ট করুন কারণ আমি আগ্রহী।
গিট ম্যানুয়ালটি আমাকে এটি দেয়:
git show next~10:Documentation/READMEডকুমেন্টেশন / README ফাইলের বিষয়বস্তুগুলি দেখায় যেহেতু তারা পরবর্তী শাখার 10 তম শেষ কমিটিতে বর্তমান ছিল।
আপনি দেখতে পেতে পারেন git blame filenameযা আপনাকে এমন একটি তালিকা দেয় যেখানে প্রতিটি লাইন কমিট হ্যাশ + লেখকের সাথে যুক্ত।
একটি নির্দিষ্ট প্রতিশ্রুতিবদ্ধ কোডটি পেতে আপনার সেই কমিটের হ্যাশ কোড দরকার । আপনি এই হ্যাশ কোডটি দুটি উপায়ে পেতে পারেন:
git logএবং সেই শাখায় আপনার সাম্প্রতিক কমিটগুলি পরীক্ষা করুন। এটি আপনাকে আপনার প্রতিশ্রুতি দেওয়ার হ্যাশ কোড এবং আপনি নিজের কোডটি সম্পাদন করার সময় আপনি যে বার্তাটি রেখেছিলেন তা প্রদর্শিত হবে। শুধু কপি করুন এবং তারপর করুনgit checkout commit_hash_codeসেই কোডটিতে যাওয়ার পরে, আপনি যদি এটিতে কাজ করতে চান এবং পরিবর্তন করতে চান তবে আপনার সাথে অন্য একটি শাখা তৈরি করা উচিত git checkout -b <new-branch-name>, অন্যথায়, পরিবর্তনগুলি ধরে রাখা যাবে না।
git log -n1। তবে যদিgit checkoutব্যর্থ না হয় তবে এটি প্রচেষ্টা ব্যর্থ।