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





13 Answers

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

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

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




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

git commit --amend

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

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

git commit --amend -C HEAD

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

git reset --hard HEAD^

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

git rebase -i HEAD~commit_count

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

git commit --amend
git rebase --continue

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




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

git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD

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

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




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

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

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



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

    git commit --amend
    

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

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

    git rebase -i HEAD~3
    



ব্যবহার

git commit --amend

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




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

Commit/Amend Last Commit



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

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




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

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 

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

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




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

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

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




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

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

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

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

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

pick <commit hash> commit message

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

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

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

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

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

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




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

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

$ git rebase-reword <commit-or-refname>

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

উদাহরণ:

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



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

  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>





Related