আমার ফাইলগুলিতে গিটের বামে শিরোনামের চিহ্নগুলি মার্জ করুন


104

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

আমি ভেবেছিলাম এটিই এর শেষ, তবে তখন আমি বুঝতে পারি আমার ফাইলে গিটমার্ক রয়েছে। তাই ভালো:

start =
    expression

validchar = 
    [0-9a-zA-Z_?!+\-=@#$%^&*/.]

integer = 
<<<<<<< HEAD
    digits:[0-9]+
        { return digits.join(""); }
=======
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }
>>>>>>> gh-pages

ফাইলগুলি আমার দ্বারা সম্পাদিত হয়নি এবং এর সাথে লাইনগুলি সন্নিবেশ করা হয়েছে:

  • চিহ্নের চেয়ে কম পরে শিরোনাম ( <<<<<<< HEAD)
  • পরিবর্তিত কোড লাইন
  • সমান চিহ্নগুলির একটি স্ট্রিং ( =======)
  • কোডটির নতুন সংস্করণ
  • অন্য লাইনে টি বৃহত্তম চিহ্ন এবং শাখার নাম দিয়ে শুরু ( >>>>>>> gh-pages)

সবচেয়ে খারাপটি হ'ল ফাইলের বিষয়বস্তু আর ক্রমযুক্ত নয়। কেউ কি জানেন যে আমি কীভাবে এই ফাইলগুলিকে স্বাভাবিক অবস্থায় ফিরিয়ে আনতে পারি এবং জি-শাখায় আমি যে পরিবর্তনগুলি করেছি তা মাস্টার শাখায় একীভূত হয়?

উত্তর:


97

তারা দ্বন্দ্ব চিহ্নিতকারী । আপনি এখনও মার্জ করার প্রক্রিয়াতে রয়েছেন তবে কিছু অংশ রয়েছে যা গিট স্বয়ংক্রিয়ভাবে মার্জ হতে পারে না। আপনাকে সেই অংশগুলি কী হতে চান তা হ্যান্ড-এডিট করতে হবে এবং তারপরে ফলাফলগুলি প্রতিশ্রুতিবদ্ধ করতে হবে।


উদাহরণস্বরূপ, আপনার বিশেষ ক্ষেত্রে, আপনি সম্ভবত এটির মতো সমাধান করতে চাইবেন (দ্রষ্টব্য - ডানদিকে তীরগুলি / পাঠ্যটি কেবলমাত্র আমার নোট, আপনি ফাইলটিতে টাইপ করবেন এমন কিছু নয়):

integer = 
<<<<<<< HEAD                                  <-+ remove the bits here
    digits:[0-9]+                               |
        { return digits.join(""); }             |
=======                                       <-+
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }
>>>>>>> gh-pages                              <-- and this

এবং এইভাবে আপনি ফাইলটি সংরক্ষণ করুন ...

integer = 
    sign:"-"* digits:[0-9]+
        { return sign + digits.join(""); }

4
@ লোয়ারকি ঠিক কীভাবে আপনি শেষ মার্জড ফলাফলটি দেখতে চান। আমার অনুমান যে আপনি কি সত্যিই শুধু অংশ চাই gh-pages, সংস্করণ যাতে আপনি শুধু থেকে পণ্যদ্রব্য মুছতে চাই <<<<<<থেকে ======এবং একক অপসারণ >>>>>>লাইন, মধ্যে প্রকৃত কোডের দুই লাইন ছাড়ার =======এবং >>>>>>
আম্বর

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

4
হ্যাঁ, এটা ঠিক। (যত্ন নেওয়ার জন্য সত্যিকারের "বিশ্রাম" নেই - আপনি কেবল সংযুক্তির ফলাফলগুলি প্রতিশ্রুতি দিচ্ছেন যা দ্বন্দ্ব না হলে গিট সাধারণত স্বয়ংক্রিয়ভাবেই কাজ করবে))
অ্যাম্বার

4
@ ফ্লাওয়ারকি, দয়া করে বিষয়টিতে একটি বই পড়ার বিষয়টি বিবেচনা করুন। আমি ভিসিএসেস কীভাবে কাজ করে সে সম্পর্কে নির্দিষ্ট প্রাথমিক জ্ঞানের অভাব দেখা যায় এবং ভবিষ্যতে সম্ভাব্য সমস্যার জন্য নিজেকে প্রস্তুত করা আরও ভাল that বইটি সম্পূর্ণরূপে পড়ার পরামর্শ দেব।
কোস্টিক্স

4
কত মজার বিষয়। আপনি যে প্রশ্নের উত্তরটিকে এইটির সদৃশ হিসাবে চিহ্নিত করা হচ্ছে তার উত্তরটির দিকে ইঙ্গিত করুন যদিও এই প্রশ্নের উত্তর অন্য প্রশ্নের মধ্যে পাওয়া যেতে পারে।
t3chb0t

23

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

git mergetool

যদি আপনার ফাইলগুলিকে একত্রীকরণের প্রয়োজন হিসাবে তালিকাভুক্ত করা হয় তবে মার্জ সরঞ্জামটি কাজ করবে।

আপনি এর মধ্যে একটি সম্পাদন করতে পারেন:

git checkout --ours -- /path/to/conflicted-file       # this is probably the one you want
git checkout --theirs -- /path/to/conflicted-file

আপনি: 1: ফাইলের নাম সিনট্যাক্স ব্যবহার করে বিভিন্ন সংস্করণ দেখতে পাবেন। ব্যাখ্যা জন্য এখানে দেখুন । তবে উপরের সমস্ত অনুমান করে যে 'গিট স্ট্যাটাস' ফাইলগুলিকে মার্জ করার প্রয়োজন হিসাবে দেখায়।

শেষ অবধি, আপনার কাছে সর্বদা এর বিকল্প রয়েছে:

git reset --hard   # sounds like --hard is what you need but check other options

7
আমি " git statusআপনি কী পেয়েছেন তা দেখতে " শুরু করার পরামর্শটি সম্পূর্ণরূপে পছন্দ করতে চাই : গিটকে এর কাল্পনিক জটিলতার জন্য দোষ দেওয়া কিছু চেনাশোনাগুলিতে বিস্মরণীয়, তবে প্রকৃতপক্ষে সতর্কতার সাথে আউটপুটটি পড়া git statusকী তা বোঝার জন্য যথেষ্ট যে পরবর্তীটি করা উচিত বেশিরভাগ সাধারণ পরিস্থিতিতে in অতএব, সত্যিই: কিছু ভুল হয়ে গেলে, থামুন, পড়ুন git status, ভাবেন।
কোস্টিক্স

5

উত্তরগুলির সমস্ত ঠিক আছে তবে আপনি যদি সমস্ত বিবাদ চিহ্নগুলিকে স্বতঃপরিবর্তন করতে চান এবং ফাইলগুলি হেড রাখার জন্য স্বতঃসংশ্লিষ্ট করতে চান তবে আপনি নিজের বাশ স্ক্রিপ্টটি তৈরি করতে পারেন যেমন: -

উদাহরণ স্ক্রিপ্ট:

# vim /usr/sbin/solve.git

(নিম্নলিখিত সংযোজন)

#!/bin/bash
for f in $(grep -Rl '^>>>>>>> ' --include="*.php" --include="*.css" --include="*.js" --include="*.html" --include="*.svg" --include="*.txt" .)
do
sed -i -e '/^=======/,/^>>>>>>> /d' -e '/^<<<<<<< /d' $f
sed -i -e '/^>>>>>>> /d' $f
echo "$f Fixed"
done
git add . ; git commit -am "[+] Resolved on `date` from `hostname` by `whoami`" --no-verify

# chmod 755 /usr/sbin/solve.git

& কেবল এটি সমাধানের জন্য আপনার জিআইটি রেপো / পথে চালান:

$ cd <path_to_repo>
$ solve.git

বিজ্ঞপ্তি: - উপরে উল্লিখিত ফাইল এক্সটেনশনগুলি হল পিএইচপি, সিএসএস, জেএসএস, এইচটিএমএল, এসভিজি এবং টিএসটিএস।


0

পরমাণুতে আমার সমস্যা ছিল যে কিছু ফাইল ড্রাইভের মধ্যে সমাধান হওয়া সংহত সংঘাতগুলি সংরক্ষণ করে না, তাই আমাকে ম্যানুয়ালি "সংরক্ষণ" ক্লিক করতে হয়েছিল। আমাকে বেশ কিছুটা সময় বের করতে লাগল।


0

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

এখন মনে রাখবেন, এটি কেবল তখনই কাজ করে যদি এর ঠিক পরে merge->add->commit, আপনি বুঝতে পেরেছিলেন যে আপনি গোলযোগ করেছেন, এবং প্রক্রিয়াটি আবার যেতে চান।

পদক্ষেপ 1: পূর্ববর্তী প্রতিশ্রুতিতে পুনরায় সেট করুন।

git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e

পদক্ষেপ 2: পুনরায় চেষ্টা করুন শাখাটি মার্জ করে

git merge --ff origin/feature/YOUR-Branch_here

আপনি যদি কোনও জিইউআই ব্যবহার করে থাকেন তবে এই মুহুর্তে আপনাকে মার্জ করা উইন্ডোতে অনুরোধ জানানো হবে। এবং তারপরে আপনি স্বাভাবিক হিসাবে এগিয়ে যেতে পারেন।

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