বলুন আমার আমার ওয়ার্কিং ডিরেক্টরিতে অনুমতি ছাড়াই পরিবর্তন করেছি। কোন প্রতিশ্রুতি না তৈরি করে তাদের থেকে আমি কীভাবে প্যাচ তৈরি করতে পারি?
বলুন আমার আমার ওয়ার্কিং ডিরেক্টরিতে অনুমতি ছাড়াই পরিবর্তন করেছি। কোন প্রতিশ্রুতি না তৈরি করে তাদের থেকে আমি কীভাবে প্যাচ তৈরি করতে পারি?
উত্তর:
git diff
আনস্টেজড পরিবর্তনের জন্য। git diff --cached
মঞ্চ পরিবর্তনের জন্য।
git format-patch
এছাড়াও বাইনারি ডিফ এবং কিছু মেটা তথ্য অন্তর্ভুক্ত। আসলে এটি প্যাচ তৈরির জন্য সেরা বাজি হবে তবে আফিক এটি কেবল উত্স / পরিবর্তনগুলি পরীক্ষা করার জন্য কাজ করে, তাই না?
git diff --relative
আপনি যদি এখনও পরিবর্তনগুলি না করে থাকেন তবে:
git diff > mypatch.patch
তবে কখনও কখনও এটি ঘটে যে আপনি যে স্টাফটি করছেন তার অংশটি নতুন ফাইল যা অচিহ্নযুক্ত এবং আপনার git diff
আউটপুটে থাকবে না । সুতরাং, প্যাচ করার একটি উপায় হ'ল নতুন প্রতিশ্রুতি ( git add
প্রতিটি ফাইল, বা ন্যায়সঙ্গত git add .
) এর জন্য সমস্ত কিছু মঞ্চ করা কিন্তু প্রতিশ্রুতিটি করবেন না এবং তারপরে:
git diff --cached > mypatch.patch
প্যাচে বাইনারি ফাইল যুক্ত করতে চাইলে 'বাইনারি' বিকল্পটি যুক্ত করুন (যেমন এমপি 3 ফাইল):
git diff --cached --binary > mypatch.patch
আপনি পরে প্যাচ প্রয়োগ করতে পারেন:
git apply mypatch.patch
দ্রষ্টব্য: আপনি এর --staged
প্রতিশব্দ হিসাবেও ব্যবহার করতে পারেন --cached
।
git diff --no-color
। অন্যথায়, এটি একটি এনকোডিং সমস্যার মতো দেখাচ্ছে।
git diff
এবং git apply
পাঠ্য ফাইলগুলির জন্য কাজ করবে তবে বাইনারি ফাইলগুলির জন্য কাজ করবে না।
আপনি সহজেই একটি পূর্ণ বাইনারি প্যাচ তৈরি করতে পারেন তবে আপনাকে একটি অস্থায়ী প্রতিশ্রুতি তৈরি করতে হবে। একবার আপনি নিজের অস্থায়ী প্রতিশ্রুতিবদ্ধ হয়ে গেলে আপনি প্যাচটি এটি সহ তৈরি করতে পারেন:
git format-patch <options...>
আপনি প্যাচ তৈরির পরে, এই আদেশটি চালান:
git reset --mixed <SHA of commit *before* your working-changes commit(s)>
এটি আপনার অস্থায়ী প্রতিশ্রুতিগুলি ফিরিয়ে আনবে। চূড়ান্ত ফলাফলটি আপনার কার্যকরী অনুলিপিটি (ইচ্ছাকৃতভাবে) আপনার মূল পরিবর্তনগুলির সাথে নোংরা করে।
প্রাপ্তির পক্ষে, আপনি প্রতিশ্রুতিবদ্ধ ইতিহাস না রেখে ওয়ার্কিং কপির পরিবর্তনগুলি প্রয়োগ করতে একই কৌশলটি ব্যবহার করতে পারেন। কেবল প্যাচ (এস) প্রয়োগ করুন এবং git reset --mixed <SHA of commit *before* the patches>
।
মনে রাখবেন যে কাজ করার জন্য এই পুরো বিকল্পটির জন্য আপনাকে ভালভাবে সিঙ্ক করতে হবে। প্যাচ প্রয়োগ করার সময় আমি কিছু ত্রুটি দেখেছি যখন সেগুলি তৈরি করা ব্যক্তি আমার যতটা পরিবর্তন এনেছে নি। এটি কাজ করার সম্ভবত উপায় আছে, তবে আমি এটির দিকে খুব বেশি নজর দেইনি।
কচ্ছপ গিটে কীভাবে একই প্যাচগুলি তৈরি করবেন তা এখানে নয় (যে আমি সেই সরঞ্জামটি ব্যবহার করার পরামর্শ দিই না):
Tortoise Git
-> ক্লিক করুনCreate Patch Serial
Since
: FETCH_HEAD
আপনি ভাল-সিঙ্ক হয়ে থাকলে কাজ করবে)Tortise Git
-> ক্লিক করুনShow Log
reset "<branch>" to this...
Mixed
বিকল্পটি নির্বাচন করুনএবং কীভাবে সেগুলি প্রয়োগ করবেন:
Tortoise Git
-> ক্লিক করুনApply Patch Serial
Tortise Git
-> ক্লিক করুনShow Log
reset "<branch>" to this...
Mixed
বিকল্পটি নির্বাচন করুনসংশোধিত এবং নতুন উভয় ফাইল (মঞ্চযুক্ত) দিয়ে প্যাচ তৈরি করতে আপনি চালাতে পারেন:
git diff HEAD > file_name.patch
git diff --cached > mypatch.patch
কাজ করছে না।
file_name.patch
ব্যবহার করা যাবে patch
? তারা একে অপরের সাথে সামঞ্জস্যপূর্ণ?
আমি পছন্দ করি:
git format-patch HEAD~<N>
<N>
প্যাচ হিসাবে সংরক্ষণের জন্য সর্বশেষ প্রতিশ্রুতিবদ্ধদের সংখ্যা কোথায় ।
কমান্ডটি কীভাবে ব্যবহার করতে হয় তার বিশদটি ডওসিটিতে রয়েছে
ইউপিডি
এখানে আপনি কীভাবে প্রয়োগ করতে পারেন তা এখানে পেতে পারেন।
ইউপিডি যারা format-patch
অ্যাড ওরফে ধারণাটি পায়নি তাদের জন্য :
git config --global alias.make-patch '!bash -c "cd ${GIT_PREFIX};git add .;git commit -m ''uncommited''; git format-patch HEAD~1; git reset HEAD~1"'
তারপরে আপনার প্রকল্পের সংগ্রহস্থলের কোনও ডিরেক্টরিতে চালান:
git make-patch
এই কমান্ডটি 0001-uncommited.patch
আপনার বর্তমান ডিরেক্টরিতে তৈরি করবে । প্যাচটিতে সমস্ত পরিবর্তন এবং অচিহ্নযুক্ত ফাইল থাকবে যা পরবর্তী কমান্ডে দৃশ্যমান:
git status .
আপেক্ষিক পরিবর্তন সহ কেবলমাত্র ফাইলগুলি অন্তর্ভুক্ত করার জন্য আমরা ফাইলগুলি নির্দিষ্ট করতে পারি, বিশেষত যখন তারা একাধিক ডিরেক্টরি প্রসারিত করে
git diff ~/path1/file1.ext ~/path2/file2.ext...fileN.ext > ~/whatever_path/whatever_name.patch
আমি উত্তর এবং মন্তব্যে এটি নির্দিষ্ট না করে খুঁজে পেয়েছি, যা সমস্ত প্রাসঙ্গিক এবং সঠিক, তাই এটি যুক্ত করার জন্য বেছে নিয়েছি। সুস্পষ্ট বর্ণিত চেয়ে ভাল!