গিট ফর্ম্যাট-প্যাচ দিয়ে উত্পন্ন প্যাচটি কীভাবে প্রয়োগ করবেন?


221

আমার কাছে দুটি গিট স্থানীয় সংগ্রহস্থল উভয় একই দূরবর্তী সংগ্রহস্থলের দিকে নির্দেশ করছে।

একটি গিট ভাণ্ডারে, আমি যদি করি, তবে আমি git format-patch 1কীভাবে অন্য প্যাকেজগুলিতে সেই প্যাচটি প্রয়োগ করতে পারি?

উত্তর:


330

দ্রষ্টব্য: আপনার প্যাচটি কী করবে তা আপনি প্রথমে প্রাকদর্শন করতে পারেন:

প্রথম পরিসংখ্যান:

git apply --stat a_file.patch

তারপরে ত্রুটিগুলি সনাক্ত করার জন্য একটি শুকনো রান:

git apply --check a_file.patch

অবশেষে, আপনি git amআপনার প্যাচটি প্রতিশ্রুতি হিসাবে প্রয়োগ করতে ব্যবহার করতে পারেন: এটি আপনাকে একটি প্রয়োগিত প্যাচ সাইন অফ করার অনুমতি দেয়।
এটি পরবর্তী রেফারেন্সের জন্য দরকারী হতে পারে।

git am --signoff < a_file.patch 

এই নিবন্ধে একটি উদাহরণ দেখুন :

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

উদাহরণ


9
স্বরে নোট করুন: 200 তম দুর্দান্ত উত্তর সোনার ব্যাজ।
ভোনসি

4
git am < somepatch.patch"মারাত্মক: খালি পরিচয় নাম (<> এর জন্য) অনুমোদিত নয়" ফল দেয়। কেউ আমাকে বোঝাতে পারেন কেন?
gromit190

@ gromit190 এর অর্থ প্যাচটিতে খারাপ Authorশিরোনাম, এবং / অথবা আপনি করেন নি git config user.{name,email}
ulidtko

ঠিক আছে; git apply --checkবলে patch does not apply, এবং git apply -3বলে repository lacks the necessary blob to fall back on 3-way merge.গিট-এ, কমিটসকে রিবাইজ করা এমন বাতাস; তবে কীভাবে লোকেরা আপডেট কোডের উপরে তাদের প্যাচগুলি পুনর্বাসিত করবে ?
ulidtko

1
সঙ্গে হয়তো @ulidtko stackoverflow.com/a/15375869/6309 ?
ভোনসি

163
git apply name-of-file.patch

25
এটি হয়ত আসল বিস্তারিত প্রশ্নের উত্তর না দিয়ে থাকতে পারে তবে এটি শিরোনামে প্রশ্নের উত্তর দিয়েছে যার কারণেই আমি এই পৃষ্ঠায় আছি। ধন্যবাদ!
রক লি

12
আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন এবং উত্তর ... তবে আমি ভেবেছিলাম যে গিট প্রয়োগ এবং গিটের মধ্যে পার্থক্য বুঝতে কিছু লোকের পক্ষে এটি সহায়ক হতে পারে ।
মিলিগ্রেরে

1
গিট প্রয়োগ "[... ফাইলের পুরো পথ ...] / name-of-file.patch"
আন্তন লাহিন

41

বা, যদি আপনি এটি পুরাতন স্কুলটিকে লাথি মারছেন:

cd /path/to/other/repository
patch -p1 < 0001-whatever.patch

3
ঠিক তাই আপনি সচেতন: এটি কোনও প্রতিশ্রুতি তৈরি করবে না, সুতরাং এটি প্রতিশ্রুতিবদ্ধ বার্তা এবং লেখকের তথ্য হারাবে।
সিজার

22

প্রথম আপনার সম্পর্কে একটি নোট গ্রহণ করা উচিত পার্থক্য মধ্যেgit am এবং এরgit apply

আপনি যখন ব্যবহার করছেন তখন git amসাধারণত অনেকগুলি প্যাচ প্রয়োগ করতে চান। এইভাবে ব্যবহার করা উচিত:

git am *.patch

বা শুধু:

git am

গিট প্যাচগুলি স্বয়ংক্রিয়ভাবে সন্ধান করবে এবং সেগুলি যথাযথভাবে প্রয়োগ করবে ;-)

ইউপিডি
এখানে আপনি কীভাবে এই জাতীয় প্যাচ তৈরি করতে পারেন তা জানতে পারেন


1
পার্থক্যের এই ব্যাখ্যাটি আমাকে ব্যবহার করতে সহায়তা করেছে git apply.. এবং এতে --reverse:-) 👍
জর্ডান জি

22

যদি আপনি এটি প্রতিশ্রুতিবদ্ধ হিসাবে প্রয়োগ করতে চান তবে গিট অ্যাম ব্যবহার করুন ।


1
আপনি সাধারণত এমবক্স ফাইলগুলি প্রথম স্থানে কীভাবে পাবেন?
সিরো সান্তিলি :20 冠状 病 六四 事件 法轮功

14

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


1
এর জন্য ধন্যবাদ. এটি সত্যই সবার জন্য কার্যকর। একটি গৃহীত উত্তর আছে। কিন্তু এটি দরকারী।
লসিঠা বেনারগামা

1
@ সমারোক্স তবে এই উত্তরটি একবার উঁচু করে দেওয়া হয়েছিল, কেন জানি না
આઇસ 01000

1
কেউ হয়ত ভাবেন যে প্যাচ প্রয়োগের একমাত্র উপায় হ'ল কমান্ড লাইন। : ডি আমি আপনাকে একটি উত্সাহ দেওয়া হয়েছিল। চিয়ারস সাথী
লসিঠা বেনারগামা

1
@ লসিঠাবেনারগামা - এক ধরণের। এসও বোঝানো হয় কেবল ওপিগুলিকেই নয়, যারা অনুসরণ করে তারাও। এই উত্তরটি (দরকারী থাকাকালীন) কোনও সাধারণ সমাধান সরবরাহ করে না। এটি একটি দুর্দান্ত ছোট ব্লগ পোস্ট তৈরি করবে, তবে "এসও ভাল" উত্তর নয়। ডাউনওয়েতে বুঝিয়ে দিতেন!
ওল্ডটাইনফয়েল

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