কীভাবে টানুন অনুরোধ থেকে কমিটস সরান


114

আমি একটি টান অনুরোধ করেছি কিন্তু তার পরে আমি স্থানীয়ভাবে এই প্রকল্পে কিছু প্রতিশ্রুতিবদ্ধ করেছি যা আমার টানার অনুরোধটিকে দূষিত করে, আমি এটিকে সরিয়ে দেওয়ার চেষ্টা করেছি তবে কোনও ভাগ্য ছাড়াই।

আমি স্ট্যাক ওভারফ্লোতে কিছু অনুরূপ প্রশ্ন পেয়েছি তবে সেখানে যা আছে তা আমি প্রয়োগ করতে পারি না। এটি গিটহাবের উপর আমার প্রথম টানার অনুরোধ তাই এটি কীভাবে কাজ করে তা আমার কাছে বিস্ময়কর।

হাইলাইট কমিটটি হ'ল আমার অন্য সমস্ত জিনিস রাখা এবং মুছে ফেলার দরকার। এটি ইতিহাসের চতুর্থ প্রতিশ্রুতিতে পরিণত হয় কারণ আমি কিছু মার্জ স্টাফ তৈরি করি।

এখানে চিত্র বর্ণনা লিখুন

আমার গিট লগ এখানে চিত্র বর্ণনা লিখুন

কেউ কী দয়া করে ব্যাখ্যা করতে পারেন যে কী চলছে এবং কীভাবে এই সমস্যাটি সমাধান করবেন?


4
আপনাকে রিবেস করতে হবে , এবং "গিথুব" থেকে "যোগ করা" কেবল "বাছাই" করতে হবে (অর্থাত্ প্রতিটি অন্যান্য
কমিটের

4
কোন শাখায় কোন শাখাটি পুনরায় চালু করুন আপনি আরও ব্যাখ্যা যুক্ত করতে পারেন।
23:16

what branch= আপনি যে শাখায় কাজ করছেন, onto what branch= যে শাখায় আপনি অনুরোধ করছেন
সেটিকে ছাড়ুন

আমি বুঝিয়েছি যে @ রবি অ্যাভারিল আমার উত্তরে কী ইঙ্গিত করেছিল। এটা অবাক করার মতো বিষয় এখনও অবধি কেউ উত্তর দেয় নি।
ফেরিট করুন

সম্পর্কিত: stackoverflow.com/questions/62951901/...
gman

উত্তর:


112

এটি করার জন্য আপনার কাছে বেশ কয়েকটি কৌশল রয়েছে।

এই পোস্টটি - রিভার্ট সম্পর্কে অংশটি পড়ুন আমরা কী করতে চাই এবং এটি কীভাবে করব সে সম্পর্কে বিশদ বর্ণনা করবে।

আপনার সমস্যার সর্বাধিক সহজ সমাধান এখানে:

# Checkout the desired branch
git checkout <branch>

# Undo the desired commit
git revert <commit>

# Update the remote with the undo of the code
git push origin <branch>

রিভার্ট কমান্ড আসল কমিটের পূর্বাবস্থায় ফেরার সাথে একটি নতুন কমিট তৈরি করবে ।


4
এমনকি যখন আমরা অন্য কোনও ব্যক্তির কাছ থেকে প্রকল্পটি কাঁটাচামচ করেছি এবং টানা অনুরোধে কিছু মন্তব্য সরিয়ে ফেলতে চাইছি তখনও কি এটি কার্যকর হয়?
ডাঃ জ্যাকি

123

লোকেরা কোনও ভুল প্রতিশ্রুতি এবং ভুল প্রতিশ্রুতিবদ্ধতার পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনতে প্রত্যাবর্তিত প্রতিশ্রুতি দেখতে পছন্দ করবে না। এই দূষণ ইতিহাস প্রতিশ্রুতিবদ্ধ।

রিভার্ট কমিটের মাধ্যমে পরিবর্তনগুলি পূর্বাবস্থায় ফেলার পরিবর্তে ভুল প্রতিশ্রুতি অপসারণের একটি সহজ উপায়।

  1. git checkout my-pull-request-branch

  2. git rebase -i HEAD~n// nইন্টারেক্টিভ রিবেসে অন্তর্ভুক্ত করতে সর্বশেষ কমিটের সংখ্যাটি কোথায় ।

  3. আপনি বাতিল করতে চান এমন কমিটগুলির pickসাথে প্রতিস্থাপন করুন drop
  4. সংরক্ষণ করুন এবং প্রস্থান.
  5. git push --force

8
এটি একটি কবজ মত আমার জন্য কাজ করে। আমার কাছে প্রচুর কমিট ছিল যা পিআর তে হওয়া উচিত ছিল না। আমি কেবল ইন্টারেক্টিভ এটিকে
রিবাজ

4
ধাক্কা আমি কি ছিল: git push origin HEAD:myBranch --force। তবে অন্যথায় দুর্দান্ত এবং সহায়ক।
স্কটিব্ল্যাডেস

4
এটি আপনি গিটহাবের ওপেন পিআর ঠিক করতে চাইলে এটিও কার্যকর, আপনি কেবল একটি জোরপূর্বক ধাক্কা দিতে সক্ষম হবেন
ভ্লাদিমির

4
" আপনি যে চুক্তিগুলি বাতিল করতে চান তার pickসাথে প্রতিস্থাপন করুন" বলতে কী বোঝায় drop?
jorijnsmit

4
@ জোজরিজনস্মিট তারা দৌড়ানোর পরে বোঝাতে চাইছেন git rebase -i HEAD~<n>, ফাইলের শীর্ষে কমিটের <n>রেখা থাকবে , প্রতিটি লাইনে পাঠ্য থাকবেpick <commit id> । করে ডিফল্ট pick, যে কমিট তাই করার জন্য আপনাকে, ড্রপ টেক্সট পরিবর্তন করতে চান pickকরতেdrop
স্লিম

6

আপনি যদি কোনও প্রতিশ্রুতি অপসারণ করেন এবং তার পরিবর্তনগুলি রাখতে না চান তবে @ ফ্রিফ্টের একটি ভাল সমাধান রয়েছে।

আপনি যদি সেই প্রতিশ্রুতিটি বর্তমান শাখায় যুক্ত করতে চান তবে বর্তমান জনগণের অংশ হতে অনুধাবন করেন না, আপনি পরিবর্তে নিম্নলিখিতটি করতে পারেন:

  1. ব্যবহার git rebase -i HEAD~n
  2. আপনি নীচে (সর্বাধিক সাম্প্রতিক) অবস্থানে সরিয়ে নিতে চান প্রতিশ্রুতিটি অদলবদল করুন
  3. সংরক্ষণ করুন এবং প্রস্থান
  4. ব্যবহার git reset HEAD^ --softপরিবর্তন uncommit এবং তাদের ফিরে পেতে, একটি রাষ্ট্র মঞ্চস্থ করা।
  5. git push --forceআপনার সরানো প্রতিশ্রুতি ছাড়াই দূরবর্তী শাখা আপডেট করতে ব্যবহার করুন ।

এখন আপনি আপনার দূরবর্তী থেকে প্রতিশ্রুতি সরিয়ে ফেলেছেন, তবে স্থানীয়ভাবে এখনও এই পরিবর্তনগুলি আসবে।


2

সুতরাং নিম্নলিখিতটি করুন,

আপনার শাখার নামটি আমার_বাঞ্চ এবং এটি অতিরিক্ত কমিট রয়েছে বলে দেয়।

  1. git checkout -b my_branch_with_extra_commits (এই শাখাটি অন্য কোনও নামে সংরক্ষণ করা)
  2. gitk (গিট কনসোল খোলে)
  3. আপনি যে প্রতিশ্রুতি রাখতে চান তা সন্ধান করুন। সেই প্রতিশ্রুতির SHA একটি নোটপ্যাডে অনুলিপি করুন।
  4. git checkout my_branch
  5. gitk (এটি গিট কনসোলটি খুলবে)
  6. আপনি যে প্রতিশ্রুতিতে ফিরে যেতে চান তার ডান ক্লিক করুন (আপনার পরিবর্তনের পূর্বে রাজ্য করুন) এবং " reset branch to here" ক্লিক করুন
  7. git pull --rebase origin branch_name_to _merge_to
  8. git cherry-pick <SHA you copied in step 3. >

এখন স্থানীয় শাখাটি দেখুন ইতিহাস প্রতিশ্রুতিবদ্ধ এবং নিশ্চিত করুন যে সবকিছু ভাল দেখাচ্ছে।


0

এটিই আমাকে সাহায্য করেছিল:

  1. বিদ্যমানটি দিয়ে একটি নতুন শাখা তৈরি করুন। বিদ্যমানটিকে কল করুন branch_oldএবং নতুন হিসাবে branch_new

  2. branch_newকোনও স্থিতিশীল অবস্থায় পুনরায় সেট করুন , যখন আপনার কোনও কমিটই করার দরকার নেই। উদাহরণস্বরূপ, এটি আপনার স্থানীয় মাস্টারের স্তরে রাখার জন্য নিম্নলিখিতটি করুন:

    গিট রিসেট - মাস্টার গিট পুশ-উত্স উত্স

  3. cherry-pickথেকে করে branch_oldমধ্যেbranch_new

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