[git] কিভাবে বিদ্যমান পরিবর্তন, unpushed commits?



12 Answers

git commit --amend
Question

আমি একটি প্রতিশ্রুতি বার্তা ভুল জিনিস লিখেছেন। অন্যথায়, আমি কিছু ফাইল অন্তর্ভুক্ত ভুলে গেছি।

আমি কিভাবে বার্তা প্রেরণ / ফাইল পরিবর্তন করতে পারি? কমিটি এখনও ধাক্কা না করা হয়েছে।




আপনি যদি জিআইটি GUI টুলটি ব্যবহার করেন তবে শেষ কমিট সংশোধনের নামে একটি বোতাম রয়েছে। যে বাটন ক্লিক করুন এবং তারপর এটি আপনার শেষ কমিট ফাইল এবং বার্তা প্রদর্শন করা হবে। শুধু সেই বার্তাটি সম্পাদনা করুন এবং আপনি এটি নতুন প্রতিশ্রুতি বার্তা সহ প্রেরণ করতে পারেন।

অথবা কনসোল / টার্মিনাল থেকে এই কমান্ড ব্যবহার করুন:

$ git rebase bbc643cd^ --interactive



আপনি যে জন্য গিট filter-branch ব্যবহার করতে পারেন।

git commit --amend -c <commit ID>

এটি একটি তুচ্ছ git commit --amend হিসাবে সহজ নয় - git commit --amend , তবে এটি বিশেষত দরকারী, যদি আপনার ইতিমধ্যে ভুল বার্তা পাঠানোর পরে কিছু মার্জ থাকে।

মনে রাখবেন যে এটি HEAD এবং ত্রুটিযুক্ত HEAD মধ্যে প্রতিটি প্রতিশ্রুতি পুনর্লিখন করার চেষ্টা করবে, তাই আপনাকে আপনার msg-filter কমান্ডটি খুব বিজ্ঞাপনে নির্বাচন করতে হবে ;-)




এই প্রশ্নে অনেকগুলি উত্তর রয়েছে কিন্তু ভিআইএম ব্যবহার করে পুরানো প্রতিশ্রুতি বার্তাগুলি কীভাবে পরিবর্তন করবেন তা বিস্তারিতভাবে ব্যাখ্যা করে না। আমি নিজেকে এই কাজ করার জন্য আটকে ছিলাম, তাই এখানে আমি বিস্তারিতভাবে লিখব কিভাবে আমি এটি বিশেষ করে তাদের জন্য যারা ভিআইমে কোন অভিজ্ঞতা নেই!

আমি আমার পছন্দের পাঁচটি পরিবর্তনগুলি পরিবর্তন করতে চেয়েছি যা আমি ইতিমধ্যে সার্ভারে ধাক্কা দিয়েছি। এটি বেশ বিপজ্জনক কারণ কারণ যদি কেউ ইতিমধ্যে এই থেকে টানা তবে আপনি বার্তা প্রেরণ করে জগাখিচুড়ি জিনিস আপ করতে পারেন। তবে যখন আপনি নিজের ছোট্ট শাখায় কাজ করছেন এবং নিশ্চিত হন যে কেউ এটি টেনে নেয়নি তবে আপনি এটির মতো এটি পরিবর্তন করতে পারেন:

ধরুন আপনি আপনার পাঁচটি সর্বশেষ কাজগুলি পরিবর্তন করতে চান, তাহলে আপনি এটি টার্মিনালে টাইপ করুন:

git rebase -i HEAD~5* যেখানে 5 টি পাঠ্য বার্তা আপনি পরিবর্তন করতে চান। (তাই যদি আপনি 10 ম পরিবর্তন করতে চান তবে শেষ টাইমটি 10 ​​টাইপ করুন)

এই কমান্ডটি আপনাকে ভিআইএম-এ নিয়ে যাবে যেখানে আপনি আপনার কমিটির ইতিহাস সম্পাদনা করতে পারেন। আপনি শীর্ষে আপনার শেষ 5 টিটি দেখতে পাবেন:

pick <commit hash> commit message

পরিবর্তে pickআপনি লিখতে হবে reword। আপনি ভিআইএম এ টাইপ করে iএটি করতে পারেন, যা আপনাকে ইনসার্ট-মোডে যেতে দেয়। (আপনি নীচে INSERT শব্দ দ্বারা সন্নিবেশ মোডে আছেন তা দেখেন) আপনি rewordপরিবর্তে টাইপ পরিবর্তন করতে চানpick

তারপরে আপনাকে এই স্ক্রিনটি সংরক্ষণ এবং ছেড়ে দিতে হবে, আপনি প্রথমে এসসি বাটন টিপে 'কমান্ড মোড' এ যান। (আপনি কমান্ড-মোডে আছেন কিনা তা পরীক্ষা করতে পারেন যদি নীচের অংশে INSERT শব্দটি অদৃশ্য হয়ে যায়)। তারপর আপনি টাইপ করে একটি কমান্ড টাইপ করতে পারেন :, সংরক্ষণ এবং কমান্ডের কমান্ডটি wq। তাই আপনি যদি টাইপ করেন তবে :wqতিনি সঠিক ট্র্যাক করবেন।

তারপরে ভিআইএম আপনি যে প্রতিমূর্তি পুনঃব্যবহার করতে চান তার উপরে যান, এখানে আপনি আসলে বার্তা প্রেরণ করতে পারেন। আপনি INSERT মোডে গিয়ে, প্রেরণ বার্তাটি পরিবর্তন করে, কমান্ড-মোডে গিয়ে এবং সংরক্ষণ এবং প্রস্থান করে এটি করবেন। এই 5 বার করুন এবং আপনি ভিআইএম আউট!

তারপরে, যদি আপনি ইতিমধ্যে আপনার ভুল কাজগুলি ধাক্কা দেন তবে আপনাকে git push --forceসেগুলি ওভাররাইট করতে হবে। মনে রাখবেন যে git push --forceএটি বেশ বিপজ্জনক ব্যাপার, তাই আপনার ভুল কাজগুলি চালানোর পরে সার্ভার থেকে কেউ টেনে নিল না তা নিশ্চিত করুন!

এখন আপনি আপনার প্রতিশ্রুতি বার্তা পরিবর্তন করেছেন!

(যেমন আপনি দেখেন আমি ভিআইএম তে অভিজ্ঞ নই, তাই যদি আমি কী ঘটতেছি তা ব্যাখ্যা করতে ভুল 'লিংগো' ব্যবহার করি, তাহলে আমাকে সংশোধন করতে বিনা দ্বিধায়!)




  1. আপনি যদি শুধুমাত্র আপনার শেষ কমিটির বার্তাটি সংশোধন করতে চান তবে তা করুন:

    git rebase -i HEAD~3
    

    এটি আপনাকে আপনার পাঠ্য বহির্বিশ্বে ফেলে দেবে এবং আপনি শেষ প্রতিশ্রুতি বার্তাটি পরিবর্তন করতে দিন।

  2. যদি আপনি শেষ 3 টি বার্তা প্রেরণ করতে চান, অথবা যে বিন্দু পর্যন্ত কোনও প্রেরণ বার্তা পরিবর্তন করতে চান তবে git rebase -i কমান্ডটি HEAD~3 সরবরাহ করুন:

    git filter-branch -f --msg-filter \
    'sed "s/<old message>/<new message>/g"' -- --all
    



আপনি যদি জিআইটি GUI ব্যবহার করেন তবে আপনি শেষ কমিটটি সংশোধন করতে পারেন যা দিয়ে ধাক্কা দেওয়া হয়নি:

git commit --amend -o -m "New commit message"



আমি নিম্নলিখিত ব্যবহার করতে চান:

  1. git status
  2. git add --all
  3. git commit -am "message goes here about the change"
  4. git pull <origin master>
  5. git push <origin master>



আমি যতটা সম্ভব জিটি জিওআই ব্যবহার করি, এবং এটি আপনাকে শেষ কমিটির সংশোধন করার বিকল্প দেয়:

এছাড়াও, git rebase -i origin/master একটি চমৎকার মন্ত্র যা সর্বদা আপনাকে মাস্টারের শীর্ষস্থানে সম্পন্ন করে উপস্থাপন করে এবং আপনাকে সংশোধন, মুছে ফেলার, পুনর্বিন্যাস বা স্কোয়াশ করার বিকল্প দেয়। প্রথম যে হ্যাশ হোল্ড পেতে কোন প্রয়োজন।




আপনি ব্যবহার করা উচিত আপনি শুধুমাত্র আপনার শেষ বার্তা পরিবর্তন করতে চান --onlyপতাকা বা তার শর্টকাট -oদিয়ে commit --amend:

git commit --amend -m "your new commit message"

এটি আপনি স্টেজড স্টাফের সাথে আপত্তিজনকভাবে আপনার প্রতিশ্রুতি উন্নত করবেন না তা নিশ্চিত করে। অবশ্যই এটি সঠিক $EDITORকনফিগারেশন আছে। তারপরে আপনি -mবিকল্পটি ছেড়ে যেতে পারেন এবং জিটি পুরানোটির সাথে প্রেরণ বার্তাটি প্রাক-পূরণ করবে। এই ভাবে এটি সহজে সম্পাদনা করা যেতে পারে।




ব্যবহার

git commit --amend

বিস্তারিতভাবে বুঝতে, একটি চমৎকার পোস্ট 4. গিট ইতিহাস পুনর্বিবেচনারgit commit --amend ব্যবহার না করার সময় এটি সম্পর্কে আলোচনা - git commit --amend




আপনি git-rebase-reword ব্যবহার করতে পারেনgit-rebase-reword

এটি কোন কমিটি (শুধু শেষ নয়) সম্পাদনা করার জন্য ডিজাইন করা হয়েছে commit --amend

$ git rebase-reword b68f560
$ git rebase-reword HEAD^

এটি একটি কমিট সংশোধন করার জন্য ইন্টারেক্টিভ রিবেস উপর কর্মের পরে নামকরণ করা হয়: "reword"। এই পোস্টটি দেখুন এবং man সেকশন ইন্টারেক্টিভ মোড-

উদাহরণ:

git commit --amend -m "T-1000, advanced prototype"
git push --force



পূর্ববর্তী কমিটির সংশোধন করতে, আপনার যে পরিবর্তনগুলি চান তা করুন এবং সেগুলি পরিবর্তন করুন এবং তারপরে চালান

git commit --amend -C HEAD

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

পূর্ববর্তী কমিটি সংশোধন এবং একই লগ বার্তা রাখা, রান

git reset --hard HEAD^

সম্পূর্ণরূপে অপসারণ করে পূর্ববর্তী কমিট ঠিক করতে, চালান

git rebase -i HEAD~commit_count

আপনি একাধিক কমিটি বার্তা সম্পাদনা করতে চান, চালান

git commit --amend
git rebase --continue

( Comm_count প্রতিস্থাপন করুন যা আপনি সম্পাদন করতে চান তার সংখ্যা সহ।) এই কমান্ডটি আপনার এডিটরটি চালু করে। "পিক" এর পরিবর্তে "সম্পাদনা" হিসাবে প্রথম কমিটির (আপনি যেটি পরিবর্তন করতে চান) চিহ্নিত করুন, তারপরে সংরক্ষণ করুন এবং আপনার সম্পাদক থেকে প্রস্থান করুন। আপনি পরিবর্তন করতে চান পরিবর্তন করুন এবং তারপর চালানো

git commit -a --amend -m "My new commit message"

দ্রষ্টব্য: আপনি git commit --amend দ্বারা সম্পাদিত সম্পাদক থেকে "আপনি চান এমন পরিবর্তন করুন" করতে পারেন




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

git commit --amend -m 'one line message'

অথবা

git rebase -i <hash of one commit before the wrong commit>

কিন্তু যদি আপনি সারিতে বেশ কয়েকটি সম্পাদনা সম্পাদনা করতে চান তবে আপনাকে পরিবর্তে রিবাজিং ব্যবহার করতে হবে:

git commit --amend

উপরের একটি ফাইলের মতো একটি এডিট সম্পাদনা / ই বা অন্য একটি বিকল্প লিখুন এবং সংরক্ষণ করুন এবং প্রস্থান করুন।

এখন আপনি প্রথম ভুল কমিটিতে হবে। ফাইলগুলিতে পরিবর্তন করুন, এবং তারা স্বয়ংক্রিয়ভাবে আপনার জন্য স্টেজ হয়ে যাবে। আদর্শ

git rebase --continue 

সংরক্ষণ এবং যে প্রস্থান এবং টাইপ করুন

git commit --amend -o -m "New commit message"

আপনার সমস্ত নির্বাচন শেষ না হওয়া পর্যন্ত পরবর্তী নির্বাচনে যেতে।

উল্লেখ্য যে এই জিনিসগুলি সেই বিশেষ কমিটির পরে আপনার সমস্ত SHA হ্যাশ পরিবর্তন করে।




Related