আমি বিভিন্ন ফাইলগুলিতে বেশ কয়েকটি কমিট করেছি, তবে এখন পর্যন্ত আমি আমার দূরবর্তী সংগ্রহস্থলটিতে কেবল একটি নির্দিষ্ট প্রতিশ্রুতি রাখতে চাই।
এটা কি সম্ভব?
আমি বিভিন্ন ফাইলগুলিতে বেশ কয়েকটি কমিট করেছি, তবে এখন পর্যন্ত আমি আমার দূরবর্তী সংগ্রহস্থলটিতে কেবল একটি নির্দিষ্ট প্রতিশ্রুতি রাখতে চাই।
এটা কি সম্ভব?
উত্তর:
ধাক্কা মাধ্যমে আপ একটি প্রদত্ত কমিট আপনি লিখতে পারেন:
git push <remotename> <commit SHA>:<remotebranchname>
সরবরাহ করা <remotebranchname>
ইতিমধ্যে দূরবর্তীটিতে বিদ্যমান। (যদি তা না হয় তবে আপনি এটি git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
অটোক্রিয়েট করতে ব্যবহার করতে পারেন ))
আপনি যদি পূর্ববর্তী কমিটগুলি না ঠেকিয়ে কোনও প্রতিশ্রুতি চাপতে চান তবে আপনার প্রথমে git rebase -i
কমিটগুলি পুনরায় অর্ডার করার জন্য ব্যবহার করা উচিত ।
git push <remotename> <commit SHA>:<remotebranchname>
কাজ করে। কৌশলটি হ'ল এটির সাথে একত্রিত git rebase -i
হোন আপনি যে প্রতিশ্রুতিটি প্রথম প্রতিশ্রুতি হিসাবে সরিয়ে নিতে চান এবং সেই কমিট-
git push <remotename> <commit SHA>:refs/heads/<new remote branch name>
। এর পরে, উত্তর বর্ণনার সাথে সাথে চাপ দিন।
git push origin HEAD~1:master
।
-f
পতাকা ব্যবহার করুন ।
অন্যান্য উত্তরগুলির পুনঃক্রমের বিবরণগুলির অভাব রয়েছে।
git push <remotename> <commit SHA>:<remotebranchname>
একটি একক প্রতিশ্রুতি ঠেলে দেবে, তবে সেই প্রতিশ্রুতিটি আপনার স্থানীয়, পূর্ব-ধাক্কা দেওয়া, প্রতিশ্রুতিবদ্ধ হওয়া শীর্ষস্থানীয়, প্রথম বা টিপ কমিটের সাথে বিভ্রান্ত হওয়ার দরকার নেই, যা আমার মতে সমস্ত অস্পষ্ট বর্ণনীয় বর্ণনা। আপনার প্রতিশ্রুতিগুলির মধ্যে সবচেয়ে পুরানো প্রতিশ্রুতিটির প্রয়োজন, অর্থাৎ আপনার সাম্প্রতিক প্রতিশ্রুতি থেকে সবচেয়ে দূরে। যদি এটি সবচেয়ে পুরানো প্রতিশ্রুতি না থাকে তবে আপনার প্রাচীনতম, স্থানীয়, অ-চাপিত এসএইচএ থেকে নির্দিষ্ট এসএইচএ-তে সমস্ত প্রতিশ্রুতি ঠেলে দেওয়া হবে। কমিটগুলি ব্যবহার পুনরায় অর্ডার করতে:
git rebase -i HEAD~xxx
প্রতিশ্রুতিটি পুনরায় অর্ডার করার পরে আপনি এটিকে নিরাপদে দূরবর্তী সংগ্রহস্থলে রেখে দিতে পারেন।
সংক্ষেপে বলতে গেলে, আমি ব্যবহার করেছি
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
আমার রিমোট মাস্টার শাখায় একক প্রতিশ্রুতিবদ্ধ।
তথ্যসূত্র:
আরো দেখুন:
আমি ব্যবহার করার পরামর্শ দিই git rebase -i
; আপনি যে কমিট করেছেন তা শীর্ষে নিয়ে যেতে চাইছেন এমন প্রতিশ্রুতিটি সরান। তারপরে git log
প্রত্যাবর্তিত প্রতিশ্রুতিটির SHA পেতে ব্যবহার করুন , এটি পরীক্ষা করে দেখুন এবং এটি চাপ দিন। রিবেসটি নিশ্চিত করবে যে আপনার অন্যান্য সমস্ত প্রতিশ্রুতি এখন আপনি যেটির দিকে ধাক্কা দিয়েছিলেন তার সন্তান, সুতরাং ভবিষ্যতের ধাক্কাও খুব ভাল কাজ করবে।
git log
পদক্ষেপ?
নির্দিষ্ট প্রতিশ্রুতি দেওয়ার সময় চেরি-পিক অন্যান্য সমস্ত পদ্ধতির তুলনায় সেরা কাজ করে।
এটি করার উপায় হ'ল:
একটি নতুন শাখা তৈরি করুন -
git branch <new-branch>
আপনার মূল শাখার সাথে আপনার নতুন শাখা আপডেট করুন -
git fetch
git rebase
এই ক্রিয়াগুলি নিশ্চিত করবে যে আপনার উত্সের মতো ঠিক একই জিনিস আপনার আছে stuff
sha id
আপনি যে ধাক্কা দিতে চান তা চেরি-বাছাই করুন -
git cherry-pick <sha id of the commit>
আপনি sha id
চালিয়ে পেতে পারেন
git log
এটি আপনার উত্সে ঠেলাও -
git push
gitk
আপনি যেভাবে চান ঠিক একইভাবে সবকিছু দেখতে দেখতে ছুটে যান।
git rebase -i
উপরের সমাধানগুলিতে প্রস্তাবিত হিসাবে ব্যবহার করা আদর্শ সমাধান হবে। আপনি যখন কমিটের নকল করতে চান তখনই চেরি পিকটি ব্যবহার করতে হবে be
আমি বিশ্বাস করি আপনাকে সেই প্রতিশ্রুতিতে "গিট রিভার্ট" করতে হবে এবং তারপরে এটি চাপ দিতে হবে। অথবা আপনি cherry-pick
একটি নতুন শাখায় অঙ্গীকারবদ্ধ করতে পারেন এবং এটিকে দূরবর্তী সংগ্রহস্থলের শাখায় ঠেলাতে পারেন। কিছুটা এইরকম:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
নিজের প্রতিশ্রুতি রাখতে পারেন।
আপনি অন্য ডিরেক্টরিতেও করতে পারেন: