ম্যাজিট ২.১.০ এ একটি হুনকে বিপরীত করুন


24

আমি সবেমাত্র 2.1.0 ম্যাগিটে আপগ্রেড করেছি। (এবং ইমেক্স 25.0.50 এবং গিট 2.3.1 এও))

পূর্বে, *magit*বাফারে আমি পারতাম:

  1. আনস্টেজড অঞ্চলে একটি কুঁচি নির্বাচন করুন।
  2. vএটি বিপরীতে হ্যাঁ লিখুন এবং উত্তর দিন।

এটা সহজ ছিল।

কিন্তু এখন magit 2.1.0 এটা একটি ত্রুটি দেয়: "Cannot reverse unstaged changes"

কেন?


ত্রুটি বার্তাটি থেকে একটি ইঙ্গিত নিয়ে, আমি আবিষ্কার করেছি যে আমি এখনও আরও কিছু পদক্ষেপের সাথে কিছুটা "পিছনে" উপায়ে এটি করতে পারি:

  1. sছোঁয়া (পিছনে অনুভূত হয়; প্রতিশ্রুতিবদ্ধ অবস্থার নিকটবর্তী হয়।)
  2. নেভ করে স্টেজড এরিয়াতে সিলেক্ট করুন।
  3. চাপুন v, হ্যাঁ উত্তর দিন।
  4. তবে uকুনিটি এখনও পর্যায়বদ্ধ , সুতরাং অবশেষে আমাকে কুকুরটিকে বাধা দিতে হবে।

এটি কি কোনও বাগ, বা, এটি ইচ্ছাকৃত এবং / অথবা আমি ঘন হয়ে যাচ্ছি? যদি তবে, আপনি কি আমাকে বুঝতে সাহায্য করতে পারেন?


আপডেট: পুঙ্খানুপুঙ্খভাবে আরটিফিনফো-ইন করার পরে, আমি দেখতে পাচ্ছি যে দুটি কমান্ড রয়েছে:

  • v magit-reverse কার্যকারী গাছের বিন্দুতে পরিবর্তনটি বিপরীত করুন।
  • k magit-discard কার্যকারী গাছ থেকে বিন্দুতে পরিবর্তনটি সরান।

মনে k magit-discardহয় যে আমি vআগে যা করতে অভ্যস্ত ছিল তা করে । এটি একটি অচিরাচরিত কুঁচকিতে কাজ করে।

সুতরাং ব্যবহারিকভাবে আমার ব্যবহারের জন্য আমার পেশীগুলির স্মৃতি পুনরায় আঁকানো দরকার k। আমি একটি স্ব - উত্তর হিসাবে পোস্ট করতে পারে। তবে আমি অনুমান করি যে আমি এখনও যুক্তি সম্পর্কে কৌতূহলী, কারণ আমি ধারণা করি এটি বোঝার ফলে আমাকে পুরোপুরি আরও ভালভাবে বুঝতে সাহায্য করবে help


আপনি খুব ভাল তথ্য পড়ছেন বলে খুশী হলেন :) কুনুককে "বিপরীত" করে আপনি কী বোঝাতে চেয়েছেন তা নিয়ে আমি বিভ্রান্ত। আমি এই শব্দটি আগে কখনও শুনিনি।
পাইথননট

kম্যাজিটের পূর্ববর্তী সংস্করণগুলিতেও অননুমোদিত পরিবর্তনকে বাতিল করে দেয় এবং আপনি যা করছেন তার জন্য উপযুক্ত কমান্ড বলে মনে হচ্ছে। vগিট রিভার্টের জন্য: একটি নতুন কমিট তৈরি করা যা পূর্বেরটির বিপরীত পরিবর্তন ঘটায়। আমি অনুমান করি যে এমন একটি পরিবর্তন যা আসলে প্রতিশ্রুতিবদ্ধ হয় নি তা প্রত্যাহার করার মতোই, তবে 'রিভার্ট' এর গিট কমান্ড হিসাবে নির্দিষ্ট অর্থ রয়েছে।
গ্লুকাস

ঠিক আছে, দেখে মনে হচ্ছে vএটি আবদ্ধ ছিল magit-revert-item("বিপরীত" টার্মিনোলজিটি সেখান থেকে আসে, @ পাইথননট) এবং অচিহ্নবদ্ধ আইটেমগুলির জন্য এটি একটি magit-discard-item(যেমন আবদ্ধ k)ও করত - এখানে 4872 লাইনটি দেখুন । স্পষ্টতই আমি দুর্ঘটনাক্রমে সেই বিশেষ অর্থটি শিখেছিলাম v, যা কাজ করেছিল, যখন আমার ব্যবহার করা শিখতে হবে k
গ্রেগ হেন্ডারশট

যদিও আমি সাধারণত স্ব-উত্তরের খুব বড় অনুরাগী নই, তবে আমি মনে করি এই ক্ষেত্রে এটি শেষ করার সবচেয়ে দয়ালু উপায়। :) নীচে এক পোস্ট।
গ্রেগ হেন্ডারশট

উত্তর:


20

ম্যাজিট ম্যানুয়ালটিতে বর্ণিত পাঁচটি "প্রয়োগের রূপগুলি প্রয়োগ করে : মঞ্চ, স্টেস্টেজ," নিয়মিত প্রয়োগ ", বাতিল এবং বিপরীত। প্রথম তিনটি বেশিরভাগ গিট ব্যবহারকারীদের কাছে বেশ স্পষ্ট হওয়া উচিত। দ্বিতীয়টি গিট চীনামাটির বাসায় নেই (ম্যাজিটে তারা গিট প্লাম্বিং কমান্ড এবং ইমাস লিস্প ব্যবহার করে প্রয়োগ করা হয় )।

এই দুটি রূপটি এভাবে বর্ণিত হয়েছে:

  • বাতিল করুন। পর্যায়ক্রমিক পরিবর্তনে, এটি কার্যকারী গাছ এবং সূচি থেকে সরিয়ে দিন। একটি অযাচিত পরিবর্তন এটিকে কেবল কার্যকারী গাছ থেকে সরান।
  • বিপরীত। কাজের গাছের পরিবর্তনের বিপরীতে। প্রতিশ্রুতিবদ্ধ এবং পর্যায়ক্রমে পরিবর্তন উভয়ই বিপরীত হতে পারে। স্টেস্টেড পরিবর্তনগুলি পুনরায় করা যাবে না। পরিবর্তে এগুলি ত্যাগ করুন।

এই দুটি রূপগুলি খুব আলাদা জিনিস করে, সুতরাং এই রূপগুলির কোনওটিই সেই ক্ষেত্রে যেখানে অন্যটি ব্যবহার করা যায় না সে ক্ষেত্রে আবার অন্য রূপে ফিরে আসার কথা নয়। পুরানো আচরণটি (কিছু প্রসঙ্গে বিপরীত থেকে পিছিয়ে পড়া) রক্ষা করা অল্প সময়ের মধ্যে আরও সুবিধাজনক হতে পারে তবে দীর্ঘকালীন সময়ে এটি ব্যবহারকারীদের এই দুটি রূপটি কী তা বোঝার চেষ্টা করতে বাধা দেয়।

বাতিল করুন অনেক চেয়ে বেশি বিপজ্জনক বিপরীত । প্রাক্তন "অননুমোদিত পরিবর্তনগুলি ছুঁড়ে ফেলে" (এই পরিবর্তনগুলি হারিয়ে যায়, তারা আর কোথাও নেই), যদিও পরবর্তীকৃতরা "পুরানো পরিবর্তনটি হারায় না , এটি এখনও কমিট বা সূচকের মধ্যে রয়েছে)।

"তৈরি" থেকে "মুছে ফেলার" থেকে পিছনে পড়া খুব বিপজ্জনক, তাই ম্যাজিট আর এটি করে না।


এছাড়াও নতুন wip মোডগুলি ব্যবহার করে নোট করুন যে কোনও দুর্ঘটনাজনিত ছাড়ার কারণে আপনি পরিবর্তনগুলি হারাতে থেকে নিজেকে রক্ষা করতে পারেন।


3
সময়টির উত্তর দেওয়ার জন্য এবং যুক্তিটি ব্যাখ্যা করার জন্য আপনাকে অনেক ধন্যবাদ।
গ্রেগ হেন্ডারশট

10

দেখে মনে হচ্ছে যে আমি দুর্ঘটনাক্রমে শিখেছি যে vআবদ্ধ magit-revert-item, magit-discard-itemবিনষ্ট না হওয়া শিকারীদের এই বিশেষ ক্ষেত্রে একটি কাজ করত । <=== HERE ===আমি নীচে দেওয়া মন্তব্য দেখুন :

(defun magit-revert-item ()
  "Revert the item at point.
The change introduced by the item is reversed in the current
working tree."
  (interactive)
  (magit-section-action revert (info)
    ([* unstaged] (magit-discard-item))  ;; <=== HERE ===
    (commit (when (or (not magit-revert-item-confirm)
                      (yes-or-no-p "Revert this commit? "))
              (magit-revert-commit info)))
    (diff   (when (or (not magit-revert-item-confirm)
                      (yes-or-no-p "Revert this diff? "))
              (magit-apply-diff-item it "--reverse")))
    (hunk   (when (or (not magit-revert-item-confirm)
                      (yes-or-no-p "Revert this hunk? "))
              (magit-apply-hunk-item it "--reverse")))))

সূত্র: 1.4.2 কোড

তবে এখন তা ঘটে না:

(defun magit-reverse (&rest args)
  "Reverse the change at point in the working tree."
  (interactive (and current-prefix-arg (list "--3way")))
  (--when-let (magit-current-section)
    (pcase (list (magit-diff-type) (magit-diff-scope))
      (`(untracked ,_) (user-error "Cannot reverse untracked changes"))
      (`(unstaged  ,_) (user-error "Cannot reverse unstaged changes"))
      (`(,_      list) (magit-reverse-files (magit-section-children it) args))
      (`(,_     files) (magit-reverse-files (magit-region-sections) args))
      (`(,_      file) (magit-reverse-files (list it) args))
      (_               (magit-reverse-apply it args)))))

সূত্র: মাস্টার :


তবে kসরাসরি আবদ্ধ magit-discard-item। আমার প্রথমে এটি ব্যবহার করা শিখে নেওয়া উচিত ছিল। এটি ২.১.০ এর আগে কাজ করেছিল এবং এখনও কাজ করে।

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


1
চমৎকার বিস্তারিত স্ব-উত্তর - পাশাপাশি এটি গ্রহণ করতে পারে!
গ্লুকাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.