গিট রিমোট সংস্করণ সঙ্গে স্থানীয় সংস্করণ প্রতিস্থাপন


148

আমি কীভাবে গিটকে বলতে পারি যে আমার স্থানীয় ফাইলটিকে উপেক্ষা করুন এবং একত্রীকরণের চেষ্টা না করে এবং দ্বন্দ্ব সৃষ্টি না করে আমার দূরবর্তী শাখা থেকে একটিটি নিয়ে যান?


1
সুতরাং "উত্তর দেখার আরেকটি মত এক শাখা তৈরীর জন্য Git কমান্ড -এর জন্য" সব বর্তমান সম্ভাব্য উপায় করার ভানgit merge -s their
ভনসি

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

উত্তর:


169

এটি সবচেয়ে নিরাপদ সমাধান:

git stash

এখন আপনি দ্বন্দ্বের ভয় ছাড়াই যা খুশি করতে পারেন।

এই ক্ষেত্রে:

git checkout origin/master

আপনি যদি মাস্টার শাখায় দূরবর্তী পরিবর্তনগুলি অন্তর্ভুক্ত করতে চান তবে আপনি এটি করতে পারেন:

git reset --hard origin/master

এটি আপনাকে "উত্স / মাস্টার" নির্দেশ করতে শাখা "মাস্টার" করে দেবে।


90
এটি উল্লেখযোগ্যভাবে মূল্যবান হতে পারে যে এটি শিরোনামকে বিচ্ছিন্ন করে দেবে - প্রশ্নকারী শাখাটিতে থাকতে পছন্দ করতে পারেgit stash; git fetch origin; git reset --hard origin/master
মার্ক লংগায়ার

10
আমি মনে করি মার্ক

এটি আমার জন্য সবচেয়ে দরকারী উত্তর হয়েছে +1
অ্যান্ড্রেস

কিভাবে আগে রাজ্যে ফিরে যেতে git stash? git stash listখালি.
লিও

আমি আপনাকে আলিঙ্গন করতে চাই
উগুর কাজডাল

45

আমি প্রশ্নটিকে এটি হিসাবে বুঝতে পারি: আপনি একটি স্ট্রিমের সামগ্রী (বা একটি নির্বাচন) সম্পূর্ণ স্ট্রিম থেকে পুরোপুরি প্রতিস্থাপন করতে চান। আপনি সরাসরি সূচককে প্রভাবিত করতে চান না (তাই আপনি যথারীতি অ্যাড + কমিটের মধ্য দিয়ে যাবেন)।

সহজভাবে কর

git checkout remote/branch -- a/file b/another/file

আপনি যদি বিস্তৃত সাবট্রির জন্য এটি করতে চান এবং পরিবর্তে সূচকটিকে সরাসরি ব্যবহার করতে চান

git read-tree remote/branch:subdir/

তারপরে আপনি (allyচ্ছিকভাবে) আপনার কাজের অনুলিপিটি আপডেট করে নিতে পারেন

git checkout-index -u --force

2
আমি ঠিক তাই চেয়েছিলাম ধন্যবাদ।
স্বায়ত্তশাসিত

11

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

এই পরিস্থিতিতে আপনি কেবল নিম্নলিখিত কমান্ডটি চালাতে পারেন:

git checkout -- path/filename

10

আমি "মাস্টার" (দূরবর্তী / উত্স সংগ্রহস্থল) এর থেকে দূরবর্তী ফাইলটি চেকআউট করব:

git checkout master <FileWithPath>

উদাহরণ: গিট চেকআউট মাস্টার উপাদান / সূচিপত্র। Html ml


আমার জন্য এই "গিট চেকআউট রিমোটগুলি / উত্স / মাস্টার <my-file>"
শ্রাবণকুমার

4

বিকল্পের সাথে মিলিত বিকল্প -sবা --strategyবিকল্পটি ব্যবহার করুন -X। আপনার নির্দিষ্ট প্রশ্নে আপনি সমস্ত রিমোট ফাইল রাখতে এবং একই নামের স্থানীয় ফাইলগুলি প্রতিস্থাপন করতে চান।

রিমোট সংস্করণ দিয়ে বিরোধগুলি প্রতিস্থাপন করুন

git merge -s recursive -Xtheirs upstream/master  

সমস্ত বিবাদী ফাইলের দূরবর্তী রেপো সংস্করণ ব্যবহার করবে।

স্থানীয় সংস্করণের সাথে দ্বন্দ্বগুলি প্রতিস্থাপন করুন

git merge -s recursive -Xours upstream/master

সমস্ত বিবাদী ফাইলের স্থানীয় রেপো সংস্করণ ব্যবহার করবে।

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