গিট: আমি কীভাবে আমার কোডের সর্বশেষতম সংস্করণ পাব?


200

আমি গিট 1.7.4.1 ব্যবহার করছি। আমি আমার কোডের সর্বশেষতম সংস্করণটি সংগ্রহস্থল থেকে পেতে চাই, তবে আমি ত্রুটিগুলি পাচ্ছি ...

$ git pull
….
M   selenium/ant/build.properties
….
M   selenium/scripts/linux/get_latest_updates.sh
M   selenium/scripts/windows/start-selenium.bat
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.

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


1
নীচে @ কেজকাইয়ের উত্তর আমাকে সহায়তা করেছে: git fetchপ্রথমে চেষ্টা করার চেষ্টা করুন । আমি দ্বন্দ্ব পাচ্ছিলাম না, তবে কোডের সর্বশেষ সংস্করণটি কীভাবে পেলাম।
ক্রিস কে

উত্তর:


258

আপনি যদি স্থানীয় কোনও পরিবর্তন সম্পর্কে (যদি ট্রেড করা বা উত্পন্ন ফাইল বা সাব-প্যাসিটারিগুলি যা এখানে কেবল ঘটে থাকে তবে) যত্নশীল না হন এবং কেবল রেপো থেকে একটি অনুলিপি চান:

git reset --hard HEAD
git clean -xffd
git pull

আবার, এটি আপনার স্থানীয়ভাবে যে কোনও পরিবর্তন ঘটাচ্ছে তাই সাবধানতার সাথে ব্যবহার করুন। এটি করার rm -Rfসময় চিন্তা করুন ।


1
আমি এই আদেশগুলি চেষ্টা করেছিলাম এবং তবুও ত্রুটিটি পেয়েছি, "কনফ্লিক্ট (সামগ্রী): সেলেনিয়াম / পিঁপড়া / বিল্ড.এক্সএমএল মধ্যে সংঘাতগুলি মার্জ করুন" (অন্যদের মধ্যে)। আমি কেবলমাত্র রেপোতে যা আছে তা দিয়ে আমার ফাইলের সর্বশেষ সংস্করণটি ওভাররাইট করতে চাই। আমি কি করতে পারি??
ডেভ

31
git clean -fসত্যিই উত্তরের অংশ নয়। এটি ভান্ডারটিতে রাখা হচ্ছে না এমন ফাইলগুলি মুছে ফেলবে (যেমন আমার ক্ষেত্রে, লগ ফাইলগুলি); git pullআবার কাজ করার জন্য আপনাকে এটি করার দরকার নেই , কেবল git reset --hard HEADযথেষ্ট।
ড্যারেন কুক

12
হ্যাঁ, মানুষ, নতুনকে গিট করার জন্য কয়েকটি মুছে ফেলার আদেশের একটিও সুপারিশ করবেন না।
কেজকাই

6
@ ড্যারেনকুক আমার মনে হয় যে git clean -fআপনি যদি আপনার রিপোজিটয়কে সত্যিকারের পরিষ্কার করতে চান তবে এটি গুরুত্বপূর্ণ । এটি টিএফএসে "ফোল্ডার থেকে সমস্ত মুছুন -> সর্বশেষ সংস্করণ পান / নির্দিষ্ট করুন" এর সমতুল্য এবং আমার ক্ষেত্রে, এটিই আমি চেয়েছিলাম।
আরপিডিশাজি

3
@ ড্যারেন আমি মনে করি গিট ক্লিন-ফাইও গুরুত্বপূর্ণ। আমি সর্বশেষতম সংস্করণ পেতে চাই এবং অপ্রচলিত ক্যাশে প্রবেশদ্বারগুলি রাখতে চাই না বা রেপোতে নেই এমন অন্যান্য উত্পন্ন উত্স রাখতে চাই। উত্তরটি এই বিষয়ে স্পষ্ট যে এটি স্থানীয় পরিবর্তন সরিয়ে ফেলবে এবং রেপো থেকে শেষ সংস্করণটি নকল করবে, সুতরাং এটি আমার কাছে নিখুঁত দেখাচ্ছে। আমার লগ ফাইলগুলি যদি আপডেটের মধ্যে রাখার দরকার হয় তবে আমি অন্য কোনও জায়গায় সরিয়ে ফেলতাম।
বাল্মীপুর

231

কেস 1: স্থানীয় পরিবর্তনগুলি সম্পর্কে চিন্তা করবেন না

  • সমাধান 1: সর্বশেষতম কোডটি পান এবং কোডটি পুনরায় সেট করুন

    git fetch origin
    git reset --hard origin/[tag/branch/commit-id usually: master]
    
  • সমাধান 2: ফোল্ডারটি মুছুন এবং আবার ক্লোন করুন: ডি

    rm -rf [project_folder]
    git clone [remote_repo]
    

কেস ২: স্থানীয় পরিবর্তনগুলি সম্পর্কে যত্নশীল

  • সমাধান 1: নতুন-অনলাইন সংস্করণে কোনও বিরোধ নেই

    git fetch origin
    git status
    

    এমন কিছু রিপোর্ট করবে:

    Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
    

    তারপরে সর্বশেষ সংস্করণটি পান

    git pull
    
  • সমাধান 2: নতুন-অনলাইন সংস্করণের সাথে দ্বন্দ্ব

    git fetch origin
    git status
    

    এমন কিছু রিপোর্ট করবে:

    error: Your local changes to the following files would be overwritten by merge:
        file_name
    Please, commit your changes or stash them before you can merge.
    Aborting
    

    আপনার স্থানীয় পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ

    git add .
    git commit -m ‘Commit msg’
    

    পরিবর্তনগুলি পাওয়ার চেষ্টা করুন (ব্যর্থ হবে)

    git pull
    

    এমন কিছু রিপোর্ট করবে:

    Pull is not possible because you have unmerged files.
    Please, fix them up in the work tree, and then use 'git add/rm <file>'
    as appropriate to mark resolution, or use 'git commit -a'.
    

    দ্বন্দ্বের ফাইলটি খুলুন এবং দ্বন্দ্বটি ঠিক করুন। তারপর:

    git add .
    git commit -m ‘Fix conflicts’
    git pull
    

    এমন কিছু রিপোর্ট করবে:

    Already up-to-date.
    

আরও তথ্য: আমি পূর্ববর্তী প্রতিশ্রুতিতে ফিরে যেতে কীভাবে 'গিট রিসেট --হার্ড হেড' ব্যবহার করব?


@ টিভিএল।আমি আমার শাখাটিতে আমার কোড (দ্বন্দ্ব রয়েছে) না করে কীভাবে সর্বশেষ আপডেট পেতে পারি..আপনি আমাকে সহায়তা করুন
ইউজার 3354457

@ ব্যবহারকারী3354457 এক্সএম, আকর্ষণীয় প্রশ্ন। আমি এর আগে কখনও চেষ্টা করে দেখিনি তবে আপনি এটি ব্যবহার করে আবার রিপোর্ট করতে পারেন;) সুতরাং: - পরিবর্তনগুলি দিয়ে একটি প্যাচ তৈরি করুন: গিট ডিফ> অবিস্মরণযুক্ত-পরিবর্তনগুলি
p

3
এই উত্তরটি উত্তর হিসাবে গ্রহণযোগ্য উত্তরগুলির চেয়ে অনেক বেশি অগ্রাধিকারের দাবি রাখে।
জেমস

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

4
গিট আনার জন্য সেরা সম্পূর্ণ উত্তর। এই পোস্টটি লক করা উচিত
কল্যাট

17

আমার সন্দেহ হয় যা ঘটেছে তা হ'ল আপনি যা ফাইলগুলি সংশোধন করেছেন সেগুলি মুছে ফেলেছেন (কারণ আপনি সেই পরিবর্তনগুলি সম্পর্কে চিন্তা করেন নি) এবং এখন গিটটি মুছে ফেলাটিকে পরিবর্তন হিসাবে গ্রহণ করছে।

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

git stash  
git pull

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


1
git stash popআপনি সম্ভবত আপনার গিট
স্ট্যাশের

7

আপনাকে প্রথমে আপনার ফাইলগুলি মার্জ করতে হবে। একটি কি git statusকি ফাইল মার্জ করা (মানে আপনাকে প্রথমে দ্বন্দ্ব সমাধান করতে প্রয়োজন) প্রয়োজন যে দেখতে। এটি হয়ে গেলে git add file_mergedআপনার pullআবার করুন এবং করুন ।


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

6

এই কোড চেষ্টা করুন

cd /go/to/path
git pull origin master

5
স্ট্যাকওভারফ্লোতে স্বাগতম! এটি কীভাবে সমস্যার সমাধান করে তা আরও ভালভাবে বর্ণনা করতে দয়া করে আপনার সমাধানে কিছু ব্যাখ্যা যুক্ত করার বিষয়ে বিবেচনা করুন। এটি আপনার উত্তরগুলিকে আরও কার্যকর করে
তুলবে

2

আপনি যদি কেবলমাত্র নিজের কার্যকারী ফোল্ডারে সমস্ত কিছু ফেলে দিতে চান (উদাহরণস্বরূপ একটি ব্যর্থ বা বাতিল হওয়া মার্জটির ফলাফল) এবং একটি পরিষ্কার পূর্ববর্তী প্রতিশ্রুতিতে ফিরে যান, একটি করুন git reset --hard


1

আমি বুঝতে পারি আপনি নিজের স্থানীয় পরিবর্তনগুলি ট্র্যাশ করতে চান এবং আপনার দূরবর্তীটিতে কী আছে তা টানতে চান?

যদি সমস্ত কিছু ব্যর্থ হয় এবং আপনি যদি "পুনরায় সেট" থেকে ভয় পান (তবে বেশ বোঝা যায়) তবে সহজ জিনিসটি হ'ল উত্সকে নতুন ডিরেক্টরিতে ক্লোন করা এবং আপনার পুরানোটিকে ট্র্যাশ করা।


1

এই কমান্ডটি চালিয়ে আপনি সর্বাধিক সাম্প্রতিক ট্যাগটি পাবেন যা সাধারণত আপনার প্রকল্পের সংস্করণ:

git describe --abbrev=0 --tags

0

আমার কাছে মনে হচ্ছে আপনার কোর.আউটোক্রল্ফ-সমস্যা রয়েছে। কোর.আউটোক্রল্ফ = সত্য আপনি উইন্ডোজে বর্ণিত সমস্যাগুলির মতো সমস্যা দিতে পারে যদি সিআরএলএফ নিউলাইনগুলি সংগ্রহস্থলটিতে পরীক্ষা করা হয়। সংগ্রহস্থলের জন্য কোর.আউটোক্রল্ফ অক্ষম করার চেষ্টা করুন এবং একটি হার্ড-রিসেট করুন।


0

আপনি যদি গিট জিইউআই ব্যবহার করে থাকেন তবে প্রথমে আনুন তারপর মার্জ করুন।

রিমোট মেনুতে মাধ্যমে আনুন >> আনুন >> মূল। মার্জ মেনু >> মার্জ স্থানীয় মাধ্যমে মার্জ করুন।

নিম্নলিখিত ডায়লগ প্রদর্শিত হবে।

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

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

আমি এই পদক্ষেপগুলি করার আগেই কিছু স্থানীয় পরিবর্তনগুলি পূর্বেই বদলে দিয়েছিলাম যেহেতু আমি সেগুলি যেভাবেই বাতিল করতে চেয়েছিলাম তাই আমাকে পরে মার্জ করার মাধ্যমে অপসারণ করতে হবে না।

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