গিট ইনস্টল না করে কীভাবে `গিট ডিফার` প্যাচ প্রয়োগ করবেন?


280

আমার ক্লায়েন্ট কীভাবে git diffগিট ইনস্টল না করে তৈরি প্যাচ প্রয়োগ করতে পারেন ? আমি patchকমান্ডটি ব্যবহার করার চেষ্টা করেছি তবে এটি সর্বদা ফাইলের নামটি প্যাচ করতে বলে।


4
যদি প্যাচটির নতুন নাম অন্তর্ভুক্ত থাকে তবে এটি কীভাবে করবেন কেউ জানেন? প্যাচ কি এখন স্থানীয়ভাবে সমর্থন করে?
পল ক্রোলি

3
প্রশ্নটি আসলেই হওয়া উচিত: গিট ইনস্টল না করে গিট ডিফার প্রয়োগ করার কোনও উপায় আছে কি? নীচে উল্লিখিত হিসাবে , patchসম্পূর্ণরূপে এই ফর্ম্যাট সমর্থন করে না।
আরেহ লাইব বৃষ

উত্তর:


425
git diff > patchfile

এবং

patch -p1 < patchfile

কাজ কিন্তু মন্তব্য এবং অন্যান্য উত্তর প্যাচ হিসাবে অনেক লোক লক্ষ্য করা প্যাচ যোগ, মুছে ফেলা এবং নাম পরিবর্তন বুঝতে পারে না। কোনও বিকল্প নেই তবে আপনার git apply patchfileযদি হ্যান্ডেল ফাইলের দরকার হয় তবে অ্যাড, ডিলিট এবং নাম পরিবর্তন করতে হবে।


এডিআইটি ডিসেম্বর 2015

patchকমান্ডের সর্বশেষ সংস্করণ (২০১২ এর সেপ্টেম্বরে প্রকাশিত ২.7) নাম এবং অনুলিপি, অনুমতি পরিবর্তন এবং সিমলিংক ডিফ (তবে এখনও বাইনারি ডিফ নয়) ( প্রকাশের ঘোষণা ) সহ বেশিরভাগ বৈশিষ্ট্যগুলি "ডিফ - গিট" ফর্ম্যাটকে সমর্থন করে

সুতরাং যে patchকোনও gitএকটি প্যাচ হিসাবে তার ভিন্নতা প্রয়োগ করতে সক্ষম হওয়ার বর্তমান / সর্বশেষতম সংস্করণ ব্যবহার করে।


97
বা ব্যবহার করুন git diff > patchfile, তবেpatch -p1 < patchfile
যাকুব নরবস্কি

11
আপনি যদি সংগ্রহস্থলের সাবপাথের একটি প্যাচফিল তৈরি করতে চান তবে আপনি এই relativeবিকল্পটি ব্যবহার করতে পারেন :git diff --no-prefix --relative=my/relative/path > patchfile
কোয়েন।

2
patch -p1 < patchfileগিট ইনস্টল করা প্রয়োজন হয় না। প্রথম কমান্ড ভিন্ন প্রয়োগের জন্য কমান্ড প্রদর্শন করে, এটি প্রয়োগ করে না।
আন্দ্রে কুজনেটসভ

1
উত্পন্ন প্যাচ পরিবর্তনের জন্য হয় থেকে কমান্ড নির্দেশিত শাখা / refspec করতে বর্তমান বা সক্রিয় শাখা। অন্য কথায়, আপনি চান git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfileবাgit diff from_branch to_branch > patchfile; ...
hobs

1
@ পোলচেচিটিন যেমন এওরওপিয়ার ৩৩৩ এ সাপির উত্তরে বলেছিলেন এটি শুরুতে কমেছে stri
আন্দ্রে কুজনেটসভ

75

এটা চেষ্টা কর:

patch -p1 < patchfile

4
-P1 যুক্তিটি কী করে?
খ্রিস্টলি

8
স্ট্রিপস শুরুতে স্ল্যাশ হয়। ম্যান প্যাচ
egor83

16
@chrisjlee git diffকরা হবে a/এবং b/উপসর্গ আউটপুটে, তাই patch -p1প্যাচ ফাইল প্রয়োগ করতে ঐ অবহেলা।
ওয়াবেরি

49

ব্যবহার

git apply patchfile

যদি সম্ভব হয়.

patch -p1 < patchfile 

সম্ভাব্য পার্শ্ব-প্রতিক্রিয়া আছে।

git applyফাইল সংযুক্তি, মুছে ফেলা এবং পুনরায় নামগুলি যদি git diffফর্ম্যাটে বর্ণিত হয় তবে এটি হ'ল patchwon't পরিশেষে, git applyএকটি "সমস্ত প্রয়োগ করুন বা বাতিল করুন" মডেল যেখানে সমস্ত কিছুই প্রয়োগ করা হয় বা কিছুই নয়, অন্যদিকে প্যাচ আংশিকভাবে প্যাচ ফাইলগুলি প্রয়োগ করতে পারে, আপনার কাজ ডিরেক্টরিকে একটি অদ্ভুত অবস্থায় ফেলে।


1
+1, একমাত্র বুদ্ধিমান উত্তর। তদতিরিক্ত, ডিফ / প্যাচ সিমলিঙ্কগুলি পরিচালনা করবে না, যা সমস্যা (উদাহরণস্বরূপ) আপনি যদি ৩.১০ লিনাক্স কার্নেল প্যাচটি ফিরিয়ে দিচ্ছেন তবে।
ফায়ার

10
হ্যাঁ, git applyএটি করার সর্বোত্তম উপায় তবে এই প্রশ্নটি গিট ইনস্টল না করে প্যাচটি কীভাবে প্রয়োগ করতে হবে তা বিশেষভাবে জিজ্ঞাসা করে ।
কলিন ডি বেনেট

1
--dry-run --verboseপার্শ্ব প্রতিক্রিয়াগুলি কী হবে তা নির্ধারণ করতে বিকল্পগুলি কার্যকর। (প্যাচ v2.5.8 ব্যবহার করে)
স্পাইল

@ জিগনিস - " git apply patchfile -... একমাত্র বুদ্ধিমান উত্তর ..." - এটি প্রায় হাস্যকর। যখনই ওপেনএসএসএল ডেভস আমাকে পরীক্ষার জন্য একটি প্যাচ পাঠায়, গিট এটি প্রয়োগ করতে ব্যর্থ হয়। এটাই প্রতিবার । আমি এখনও দেখতে পাইনি যে বোকা সরঞ্জামটি একটি প্যাচ প্রয়োগ করে।
jww

8

আমি ব্যবহার করি

patch -p1 --merge < patchfile

এইভাবে, বিবাদগুলি যথারীতি সমাধান করা যেতে পারে।


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