git - ষণশ - বিপরীত একটি ঘর্ষণ প্রয়োগ কিভাবে?




ভরবেগের সংরক্ষণশীলতার সূত্র (5)

আমি একটি ছোট প্যাচ আমার গিট স্ট্যাশ দূরে সংরক্ষিত আছে। আমি git stash apply ব্যবহার করে আমার কাজ কপি এটি প্রয়োগ করেছি। এখন, আমি প্যাচটি প্রয়োগের বিপরীত করে (যেমন git revert করবেন কিন্তু স্ট্যাশের বিপরীতে) কীভাবে সেগুলি পরিবর্তন করতে চাই।

কেউ কি জানেন, এটা কিভাবে করে?

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

স্ট্যাশের মতো এটি বর্তমানে এটি সমর্থন করে না, তবে একটি git stash apply --reverse একটি চমৎকার বৈশিষ্ট্য হবে।


@Greg Bacon এর উত্তর ব্যতীত, বাইনারি ফাইলগুলি যদি সূচকটিতে যোগ করা হয় এবং স্ট্যাশ ব্যবহার করে থাকে

git stash show -p | git apply --reverse

ফলাফল হতে পারে

error: cannot apply binary patch to '<YOUR_NEW_FILE>' without full index line
error: <YOUR_NEW_FILE>: patch does not apply

যোগ করা - --binary সমস্যা সমাধান করে, কিন্তু দুর্ভাগ্যবশত কেন এখনও figured out।

 git stash show -p --binary | git apply --reverse

এটি উপরের উত্তরগুলি ছাড়াও কিন্তু মেসেজের উপর ভিত্তি করে জিট স্ট্যাশের জন্য অনুসন্ধান যোগ করে, কারণ নতুন স্ট্যাশগুলি সংরক্ষিত হলে স্ট্যাশ নম্বরটি পরিবর্তন হতে পারে। আমি bash ফাংশন একটি দম্পতি লিখেছেন:

apply(){
  if [ "$1" ]; then
    git stash apply `git stash list | grep -oPm1 "(.*)(?=:.*:.*$1.*)"`
  fi
}
remove(){
  if [ "$1" ]; then
    git stash show -p `git stash list | grep -oPm1 "(.*)(?=:.*:.*$1.*)"` | git apply -R
    git status
  fi
}
  1. নামের সাথে স্ট্যাশ তৈরি করুন (বার্তা) $ git stash save "my stash"
  2. Appply নামকরণ $ apply "my stash"
  3. নামকরণ স্ট্যাশ $ remove "my stash"

গিট ম্যান পৃষ্ঠা থেকে সরাসরি কাটা n পেস্ট এটি স্পষ্টভাবে শব্দযুক্ত এবং এমনকি একটি উপনাম অন্তর্ভুক্ত রয়েছে;

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

$ git stash show -p [email protected]{0} | git apply -R

আবার, যদি আপনি একটি স্ট্যাশ নির্দিষ্ট না করেন, Git সবচেয়ে সাম্প্রতিক স্ট্যাশ অনুমান করে:

$ git stash show -p | git apply -R

আপনি একটি উপনাম তৈরি করতে এবং কার্যকরভাবে আপনার Git একটি stash-unapply কমান্ড যোগ করতে পারেন। উদাহরণ স্বরূপ:

$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'
$ git stash apply
$ #... work work work
$ git stash-unapply

git stash [save] আপনার git stash ডিরেক্টরি ডিরেক্টরি এবং আপনার সূচক অবস্থা নেয় এবং HEAD সংস্করণে ইন্ডেক্স এবং কার্যক্ষেত্রের সেটিংটি সেট করে ফেলে দেয়।

git stash apply যারা পরিবর্তন ফিরে এনেছে, তাই git reset --hard তাদের আবার মুছে ফেলা হবে।

git stash pop সেই পরিবর্তনগুলি ফিরিয়ে আনতে এবং শীর্ষস্থানীয় git stash [save] পরিবর্তনগুলি সরিয়ে দেয়, তাই git stash [save] এই ক্ষেত্রে পূর্ববর্তী (প্রাক-পপ) অবস্থায় ফিরে যাবে।


git checkout -f

কোন অ-কমিটি পরিবর্তন মুছে ফেলা হবে।







git-stash