git জিট স্ট্যাশ ভুল: গিট স্ট্যাশ পপ এবং একত্রিত বিরোধ সঙ্গে শেষ পর্যন্ত




git-stash git-checkout (4)

আমি একটি git stash pop এবং একত্রিত দ্বন্দ্ব সঙ্গে শেষ পর্যন্ত। আমি ফাইল সিস্টেম থেকে ফাইলগুলি সরিয়ে ফেলেছি এবং নীচে দেখানো একটি git checkout , তবে মনে হচ্ছে ফাইলগুলি এখনও অসমর্থিত। আমি তারপর ফাইল প্রতিস্থাপন চেষ্টা এবং একটি git checkout আবার এবং একই ফলাফল করছেন। আমি ঘটনাটি -f পতাকা দিয়ে এটি করার চেষ্টা করেছিলাম। কোন সাহায্য প্রশংসা হবে!

chirag-patels-macbook-pro:haloror patelc75$ git status
app/views/layouts/_choose_patient.html.erb: needs merge
app/views/layouts/_links.html.erb: needs merge
# On branch prod-temp
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   db/schema.rb
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       unmerged:   app/views/layouts/_choose_patient.html.erb
#       unmerged:   app/views/layouts/_links.html.erb

chirag-patels-macbook-pro:haloror patelc75$ git checkout app/views/layouts/_choose_patient.html.erb
error: path 'app/views/layouts/_choose_patient.html.erb' is unmerged
chirag-patels-macbook-pro:haloror patelc75$ git checkout -f app/views/layouts/_choose_patient.html.erb
warning: path 'app/views/layouts/_choose_patient.html.erb' is unmerged

মনে রাখবেন যে জিটি 2.5 (Q2 2015) একটি ভবিষ্যত গিট যে দৃশ্যকল্প অসম্ভব করতে চেষ্টা করতে পারে।

জেফ কিং ( peff ) দ্বারা ed178ef কমিট দেখুন, 22 এপ্রিল 2015।
( জুনিয়ো সি হামানো - gitster - 05c3967 , 19 মে 2015)

দ্রষ্টব্য: এটি প্রত্যাহার করা হয়েছে। নিচে দেখুন

stash : আবেদন / পরিষ্কার করার জন্য একটি পরিষ্কার সূচক প্রয়োজন

সমস্যা

আপনি যদি আপনার সূচীতে সামগ্রীগুলি পরিচালনা করে থাকেন এবং " stash apply/pop " চালান তবে আমরা একটি দ্বন্দ্ব আঘাত করতে এবং সূচীতে নতুন এন্ট্রি স্থাপন করতে পারি।
আপনার আসল অবস্থায় পুনরুদ্ধার করা সেই সময়েই কঠিন, কারণ "গিট রিসেট-রকি" সরঞ্জামগুলি এমন কোনও কিছুকে দূরে ফেলে দেবে

অন্য কথায়:

" git stash pop/apply " কাজ করে শুধু গাছটি পরিষ্কার নয় তা নিশ্চিত করতে ভুলে গেছেন তবে git stash pop/apply পরিষ্কার।
পরেরটি একটি স্ট্যাশ অ্যাপ্লিকেশন দ্বন্দ্ব করতে পারেন হিসাবে গুরুত্বপূর্ণ এবং সূচক দ্বন্দ্ব রেজল্যুশন জন্য ব্যবহার করা হবে।

সমাধান

আমরা পরিবর্তিত পরিবর্তন আছে যখন আবেদন অস্বীকার অস্বীকার করে এই নিরাপদ করতে পারেন।

এর অর্থ হল সংশোধিত ফাইলগুলির উপর একটি স্ট্যাশ প্রয়োগ করার আগে আগে মার্জ করা হয়েছে (যোগ করা কিন্তু প্রতিশ্রুতিবদ্ধ নয়), এখন তারা কোনও ম্যালেজ করবে না কারণ স্ট্যাশ প্রয়োগ / পপ অবিলম্বে বন্ধ হয়ে যাবে:

Cannot apply stash: Your index contains uncommitted changes.

পরিবর্তনগুলি করার জন্য আপনাকে জোর দেওয়ার অর্থ হচ্ছে, মার্জেসের ক্ষেত্রে, আপনি সহজেই প্রাথমিক অবস্থাটি পুনরুদ্ধার করতে পারেন ( git stash apply/pop আগে) একটি git reset --hard

দেখুন 1937610 (15 জুন 2015), এবং জেফ কিং ( peff ) দ্বারা ed178ef (22 এপ্রিল 2015) peff
( জুনিয়ো সি হামানো দ্বারা gitster - gitster - bfb539b মধ্যে , 24 জুন 2015)

যে কমিটি একটি স্ট্যাশ প্রয়োগ করার নিরাপত্তা উন্নত করার একটি প্রচেষ্টা ছিল, কারণ অ্যাপ্লিকেশন প্রক্রিয়া দ্বন্দ্ব সূচক সূচী তৈরি করতে পারে, যা পরে মূল সূচক অবস্থা পুনরুদ্ধার করা কঠিন।

দুর্ভাগ্যবশত, এই " git stash -k " চারপাশে কিছু সাধারণ ওয়ার্কফ্লো ব্যাথা করে, যেমন:

git add -p       ;# (1) stage set of proposed changes
git stash -k     ;# (2) get rid of everything else
make test        ;# (3) make sure proposal is reasonable
git stash apply  ;# (4) restore original working tree

যদি আপনি পদক্ষেপগুলি (3) এবং (4) এর মধ্যে "git commit" করেন তবে এটি কেবল কাজ করে। তবে, যদি এই পদক্ষেপগুলি প্রাক-সম্মতি হুকের অংশ হয়, তবে আপনার কাছে সেই সুযোগ নেই (পরীক্ষাগুলি পাস বা ব্যর্থ হওয়া সত্ত্বেও আপনি মূল অবস্থাটি পুনরুদ্ধার করতে হবে)।


আমি একই জিনিস আমার ঘটতে পারে। আমি এখনো ফাইলগুলি স্টেজ করতে চাইনি তাই আমি git add দিয়ে তাদের যুক্ত করেছি এবং তারপরে git reset । এই মূলত শুধু যোগ এবং তারপর আমার পরিবর্তন unstaged কিন্তু unmerged পাথ সাফ।


ম্যান গিট মার্জ দেখুন ( CONFLICTS কীভাবে সমাধান করবেন ):

একটি দ্বন্দ্ব দেখা পরে, আপনি দুটি জিনিস করতে পারেন:

  • একত্রিত করার সিদ্ধান্ত নেন। আপনার প্রয়োজনীয় একমাত্র ক্লিন-আপগুলি হ্যান্ড সিডিতে ইন্ডেক্স ফাইলটিকে রিভার্স 2 এ রিসেট করতে হবে এবং 2. এবং 3 দ্বারা তৈরি হওয়া গাছের পরিবর্তনগুলি পরিষ্কার করতে হবে। গিট রিসেট - এই জন্য ব্যবহার করা যেতে পারে।

  • দ্বন্দ্ব সমাধান করুন। Git কাজ গাছ মধ্যে দ্বন্দ্ব চিহ্নিত করবে। ফাইলগুলি আকারে সম্পাদনা করুন এবং গিট সূচীতে তাদের যুক্ত করুন। চুক্তি সীল জিট কমিট ব্যবহার করুন।

এবং সত্যিকারের মজুরী (দেখতে কি 2. এবং 3. উল্লেখ করে):

পরিবর্তনগুলি কীভাবে সংশোধন করা যায় তা সুস্পষ্ট না হলে নিম্নলিখিতটি ঘটবে:

  1. মাথা পয়েন্টার একই থাকে।

  2. MERGE_HEAD রেফারেন্স অন্য শাখা মাথার দিকে নির্দেশ করে সেট করা হয়।

  3. পরিষ্কারভাবে মার্জ করা পাথগুলি সূচক ফাইল এবং আপনার কাজের গাছ উভয় আপডেট করা হয়।

  4. ...

সুতরাং: git reset --hard ব্যবহার করুন - যদি আপনি আপনার কাজের গাছ থেকে স্ট্যাশ পরিবর্তনগুলি সরাতে চান, অথবা যদি আপনি কেবল সূচীটি পরিষ্কার করতে চান এবং git reset আপনার কাজের git reset হাত দিয়ে মার্জ করতে চান তবে git reset

ম্যান গিট স্ট্যাশের অধীনে ( অপ্টিমেশন, পপ ) আপনি ছাড়াও পড়তে পারেন:

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


যদি আমার মত, আপনি যা চান তা হল স্ট্যাশেড ফাইলগুলির সাথে কার্যক্ষেত্রের ডিরেক্টরিটি ওভাররাইট করা, এবং আপনি এখনও একটি দ্বন্দ্ব পান, তবে আপনি যা চান তা হল git checkout --theirs -- . ব্যবহার করে দ্বন্দ্ব সমাধান করা git checkout --theirs -- . রুট থেকে।

তারপরে, আপনি সূচক থেকে সমস্ত ডিরেক্টরি পরিবর্তনশীল ডিরেক্টরিতে ফিরিয়ে আনতে git reset করতে পারেন, কারণ দৃশ্যত দ্বন্দ্বের ক্ষেত্রে অ-সংঘাতযুক্ত ফাইলগুলিতে পরিবর্তনগুলি সূচীতে থাকে।

আপনি git stash drop [<stash name>] চালাতে চান, পরে স্ট্যাশ পরিত্রাণ পেতে, কারণ git stash pop দ্বন্দ্বের ক্ষেত্রে এটি মুছে git stash pop না।







git-checkout