আমি যা দূরে রেখেছি তা দিয়ে কীভাবে প্যাচ ফর্ম্যাট করতে পারি


140

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

আমি জানি git format-patch -1, তবে আমি মনে করি যে এটি আমি প্রতিশ্রুতিবদ্ধ তার জন্যই। তবে আমি যে পরিবর্তনগুলি সরিয়ে রেখেছি সেগুলির জন্য আমি একই জিনিসটির সন্ধান করছি।

এবং আমি কীভাবে অন্য ভাণ্ডারে প্যাচ প্রয়োগ করতে পারি?

উত্তর:


155

অবশ্যই, এটি git stash showসমর্থন করে:

git stash show -p

সুতরাং, ব্যবহার করুন

git stash list

প্যাচ হিসাবে আপনি যে স্ট্যাশ রফতানি করতে চান তার সংখ্যা খুঁজে বের করতে

git stash show -p stash@{<number>} > <name>.patch

এটি রফতানি করতে।

উদাহরণ স্বরূপ:

git stash show -p stash@{3} > third_stash.patch

1
প্যাচ প্রয়োগ সম্পর্কে আমার একটি সম্পর্কিত প্রশ্ন রয়েছে। ধরা যাক আমার প্যাচ একাধিক ফাইল স্পর্শ করে। প্যাচটি 'ইন্টারেক্টিভভাবে' প্রয়োগ করার কোনও উপায় আছে কি? প্যাচের কোন ফাইলের বিরুদ্ধে প্যাচটি প্রয়োগ করা উচিত? আমি কি এটা করতে পারি?
সিলভারবার্গ

1
@ সিলভারবার্গ: আমার এক ঝলক নজর ছিল man patchএবং আমি ইন্টারেক্টিভ প্যাচ অ্যাপ্লিকেশনটির জন্য কোনও বিকল্প দেখতে পেলাম না। তবে প্যাচ ফাইলগুলি যেহেতু প্লেইন টেক্সট ফাইলগুলি সেগুলি হ'ল সাধারণত কোনটি প্যাচটি সম্পাদনা করে কোনও পাঠ্য সম্পাদককে প্রাসঙ্গিক অংশগুলি প্রয়োগ করতে ক্লিপ করতে হয় patch। পর্যায়ক্রমে, আপনি যদি অন্য গিট সংগ্রহস্থলের মধ্যে প্যাচটি প্রয়োগ করছেন তবে আপনি এটি সমস্ত প্রয়োগ করতে পারেন এবং তারপরে নির্বাচিতভাবে git checkoutফাইলগুলি পরিবর্তন করতে চাননি ( git checkoutফাইলের নাম সহ স্টেস্টেড পরিবর্তনগুলি নিক্ষেপ করে)।
গ্রেগ হিউগিল

1
@ সিলভারবার্গ আপনি "--exclud" এবং গিট প্রয়োগের "- অন্তর্ভুক্ত" প্যারাম ব্যবহার করে প্যাচ করা ফাইলগুলির সেটকে সীমাবদ্ধ করতে পারেন।
কেলভিন

@ সিলভারবার্গ আপনি নিম্নোক্ত অনুমান করতে পারেন আপনার প্যাচ আছে have প্যাচটি পুরোপুরি প্রয়োগ করুন এবং তারপরে করুন git add --interactive ${YOUR_FILES}এবং এটি আপনাকে আংশিক প্রতিশ্রুতি দেওয়ার সুযোগ দেবে।
অ্যালেক্স

15
ধন্যবাদ। এটি আমার জন্য কাজ করেছে:git stash show -p stash@{1} > patch.txt
রায়ান

63

এই উত্তরটি প্যাচ সংরক্ষণ এবং আপনি যেখানে এটি ব্যবহার করতে চান সেখানে প্রয়োগ করার উভয়ের তথ্য সরবরাহ করে।

একটি ফাইলে আউটপুট স্ট্যাশ করতে:

 git stash show -p --color=never > my-patch-name.patch

যাচাই করা প্যাচটি দেখতে ভাল দেখাচ্ছে:

git apply --stat my-patch-name.patch

কোনও ত্রুটি যাচাই করুন:

git apply --check my-patch-name.patch

প্যাচ প্রয়োগ করুন

git apply my-patch-name.patch

এইটি আমার জন্য সরল পাঠ্য কোড ফাইলগুলি নিয়ে কাজ করেছিল, তবে আমাকে সাদা স্থানের জন্য অ্যাকাউন্ট করতে হয়েছিল। যাচাই করা প্যাচটি দেখতে দুর্দান্ত: git apply --check --ignore-space-change --ignore-whitespace my-patch-name.patch প্যাচটি প্রয়োগ করুন: git apply --ignore-space-change --ignore-whitespace my-patch-name.patch
ক্রেগ বোল্যান্ড

সুন্দর এবং সংক্ষিপ্ত ব্যাখ্যা। এটি কাজ করার জন্য প্যাচ প্রয়োগ করার সময় আমাকে রেপো রুটে থাকতে হয়েছিল, অন্যথায় git applyভিন্নতাটি গ্রহণ করিনি।
সর্বাধিক

16

ব্যবহার

$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter

আপনার সাম্প্রতিক স্ট্যাশড স্টাফগুলির একটি তালিকা পেতে। গিট প্রকৃতপক্ষে প্রতিশ্রুতিবদ্ধ বস্তু তৈরি করে যখন আপনি স্ট্যাশ করেন।

তারা অন্য কিছুর মতো কমিটস। আপনি তাদের একটি শাখায় পরীক্ষা করে দেখতে পারেন:

$> git checkout -b with_stash stash@{0}

এরপরে আপনি এই শাখাটি প্রকাশ করতে পারেন এবং আপনার সহকর্মী এই সংস্থাকে মার্জ করতে বা চেরি-পিক করতে পারেন।


13

উপরের সমাধানগুলি বাইনারি ডেটার জন্য কাজ করবে না। নিম্নলিখিত এটির জন্য সমর্থন যোগ করে:

git stash show stash@{0} -p --binary

সম্পাদন করা

দ্রষ্টব্য: আমি কেবল উপরের জবাবগুলিতে একটি মন্তব্য যুক্ত করতে চেয়েছিলাম তবে আমার খ্যাতি যথেষ্ট নয়।


3

আমি বিশ্বাস করি এটি সম্প্রতি গিতের অন্যতম উত্সাহ হতে পারে। আপনি যে পরিবর্তনগুলি আর থামিয়ে দিয়েছিলেন তা আপনাকে প্যাচ করতে হবে না। আপনি কেবল নিজের স্ট্যাশেড পরিবর্তনগুলি অন্য একটি শাখায় প্রয়োগ করতে পারেন।

শাখা A তে বলুন আপনি স্ট্যাশ @ {1 referred হিসাবে উল্লেখ করা কিছু পরিবর্তন দূরে রেখেছেন}

আপনি এখন শাখা বি তে স্যুইচ করুন আপনি কেবল এটি করতে পারেন:

$git stash apply stash@{1}

এটি আপনার শাখা A কে শাখা বিতে প্রয়োগ করে

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