আমার দুটি শাখা আছে (এ এবং বি) এবং আমি শাখা এ থেকে একটি একক ফাইল শাখা বি থেকে সংশ্লিষ্ট একক ফাইলের সাথে একত্রীকরণ করতে চাই
git diff branch_name > patch
git apply patch
। stackoverflow.com/a/9473543/1091853
আমার দুটি শাখা আছে (এ এবং বি) এবং আমি শাখা এ থেকে একটি একক ফাইল শাখা বি থেকে সংশ্লিষ্ট একক ফাইলের সাথে একত্রীকরণ করতে চাই
git diff branch_name > patch
git apply patch
। stackoverflow.com/a/9473543/1091853
উত্তর:
আমি একই সমস্যা জুড়ে এসেছি। সুনির্দিষ্টভাবে বলতে গেলে , আমার দুটি শাখা রয়েছে A
এবং B
একই ফাইলগুলি রয়েছে তবে কিছু ফাইলগুলিতে ভিন্ন প্রোগ্রামিং ইন্টারফেস রয়েছে। এখন ফাইলের পদ্ধতিগুলি f
, যা দুটি শাখায় ইন্টারফেসের পার্থক্যের থেকে পৃথক, শাখায় পরিবর্তিত হয়েছিল B
, তবে পরিবর্তনটি উভয় শাখার জন্য গুরুত্বপূর্ণ। সুতরাং, আমি শুধু ফাইল মার্জ করতে প্রয়োজন f
শাখার B
ফাইলে f
শাখার A
।
একটি সাধারণ কমান্ড ইতিমধ্যে আমার জন্য সমস্যার সমাধান করেছে যদি আমি ধরে নিই যে সমস্ত পরিবর্তনগুলি উভয় শাখায় প্রতিশ্রুতিবদ্ধ A
এবং B
:
git checkout A
git checkout --patch B f
প্রথম কমান্ডটি শাখায় স্যুইচ করে A
, যেখানে আমি B
ফাইলটির সংস্করণটি মার্জ করতে চাই f
। দ্বিতীয় কমান্ড ফাইল প্যাচ f
সঙ্গে f
এর HEAD
এর B
। এমনকি আপনি প্যাচের একক অংশ গ্রহণ / বাতিল করতে পারেন। পরিবর্তে B
আপনি এখানে কোনও প্রতিশ্রুতি নির্দিষ্ট করতে পারেন, এটি হওয়ার দরকার নেই HEAD
।
সম্প্রদায় সম্পাদনা : যদি ফাইল f
উপর B
উপস্থিত না A
এখনো, তারপর বাদ --patch
বিকল্প। অন্যথায়, আপনি একটি "পরিবর্তন করবেন না" পাবেন। বার্তা।
git checkout --patch B -- f
করতে হয়েছিল।
a
টিপানোর পরিবর্তে ইন্টারেক্টিভ পর্যায়ে টিপতে পারেন y
। অথবা git checkout B -- f
পরিবর্তে কমান্ড ব্যবহার করুন।
এই পরিস্থিতিতে আমি যা করি তা এখানে। এটি ক্লডজ তবে এটি আমার পক্ষে ঠিক কাজ করে।
আমি প্যাচিংয়ের চেষ্টা করেছি এবং আমার পরিস্থিতি এটির জন্য খুব খারাপ ছিল। সংক্ষেপে এটি দেখতে যেমন হবে:
কার্যকারিতা শাখা: একটি পরীক্ষামূলক শাখা: বি (ফাইল.txt রয়েছে যার মধ্যে পরিবর্তন রয়েছে যা আমি ভাঁজতে চাই))
git checkout A
এ এর ভিত্তিতে নতুন শাখা তৈরি করুন:
git checkout -b tempAB
বি টেম্পে মার্জ করুন
git merge B
মার্জ এর sha1 হ্যাশ অনুলিপি করুন:
git log
commit 8dad944210dfb901695975886737dc35614fa94e
Merge: ea3aec1 0f76e61
Author: matthewe <matthewe@matthewe.com>
Date: Wed Oct 3 15:13:24 2012 -0700
Merge branch 'B' into tempAB
আপনার কার্যকারী শাখা চেকআউট করুন:
git checkout A
আপনার ফিক্স-আপ ফাইলটি চেকআউট করুন:
git checkout 7e65b5a52e5f8b1979d75dffbbe4f7ee7dad5017 file.txt
এবং সেখানে আপনার এটি থাকা উচিত। আপনার ফলাফল প্রতিশ্রুতিবদ্ধ।
A
থেকে B
শুরু করে। অনুলিপি করা এই পার্থক্যগুলি মুছে ফেলবে।
এটি গিটের অভ্যন্তরীণ ডিফ্টল ব্যবহার করে। হতে পারে সামান্য কাজ কিন্তু সরাসরি এগিয়ে।
#First checkout the branch you want to merge into
git checkout <branch_to_merge_into>
#Then checkout the file from the branch you want to merge from
git checkout <branch_to_merge_from> -- <file>
#Then you have to unstage that file to be able to use difftool
git reset HEAD <file>
#Now use difftool to chose which lines to keep. Click on the mergebutton in difftool
git difftool
#Save the file in difftool and you should be done.
--
(খালি আর্গুমেন্ট লেবেল) এর ব্যবহার স্পষ্ট করার জন্য , গিট চেকআউট ডক্স: যুক্তিযুক্ত ডিসসামবিগেশনটি বলুন: " git checkout -- <pathspec>
আপনি যদি সূচিগুলির বাইরে এই পাথগুলি চেকআউট করতে চান তবে ব্যবহার করুন ।" এর কারণ আপনার একই নামে একটি শাখা এবং একটি ফাইল / পাথ উভয়ই থাকতে পারে। এই ধরনের ক্ষেত্রে, যখন উভয় বিদ্যমান থাকে তখন শাখা বা পথটি পরীক্ষা করা উচিত কিনা তা ছিন্ন করার জন্য আপনাকে জিজ্ঞাসা করার পরিবর্তে, গিটটি ডিফল্টভাবে শাখাটি চেকআউট করতে পছন্দ করে। তবে --
গিট আগে থাকলে ফাইল / পাথ পরিবর্তে চেকআউট করবে।
আমি এই পদ্ধতিটি সহজ এবং দরকারী বলে খুঁজে পেয়েছি: অন্য শাখা থেকে নির্দিষ্ট ফাইলগুলিকে কীভাবে "মার্জ" করা যায়
দেখা যাচ্ছে, আমরা খুব চেষ্টা করছি। আমাদের ভাল বন্ধু গিট চেকআউটটি কাজের জন্য সঠিক সরঞ্জাম।
git checkout source_branch <paths>...
আমরা কেবলমাত্র গিটার চেকআউটটি বৈশিষ্ট্য শাখার নাম এবং নির্দিষ্ট সংস্থাগুলির জন্য পাথগুলি দিতে পারি যা আমরা আমাদের মাস্টার শাখায় যুক্ত করতে চাই।
আরও বোঝার জন্য দয়া করে পুরো নিবন্ধটি পড়ুন
-p
এই কমান্ডের বিকল্পটি ব্যবহার করতে চেয়েছিলেন । যার পরে, দুর্ভাগ্যক্রমে, প্যাচ পরিবর্তনের আগে, আপনার ওয়ার্কট্রি ফাইলের কোনও অংশ যা পূর্বে আপনার চেক আউট থেকে শাখা থেকে ডাইভার্ট করেছে overw
আপনি ব্যবহার করতে পারেন:
git merge-file
টিপ: https://www.kernel.org/pub/software/scm/git/docs/git- विसरा- ফাইল ফাইল html
git merge-file
নিম্নলিখিত কমান্ডটি (1) সঠিক শাখার ফাইলের তুলনা করবে, মাস্টার (2) ইন্টারেক্টিভভাবে আপনাকে জিজ্ঞাসা করবে যে কোন পরিবর্তনগুলি প্রয়োগ করতে হবে।
গিট চেকআউট - প্যাচ মাস্টার
আমার সম্পাদনা প্রত্যাখ্যান করা হয়েছে, সুতরাং আমি এখানে একটি প্রত্যন্ত শাখা থেকে মার্জ করা পরিবর্তনগুলি কীভাবে পরিচালনা করব তা সংযুক্ত করছি।
যদি কোনও ভুল মার্জ করার পরে এটি করতে হয় তবে আপনি এটির মতো কিছু করতে পারেন:
# If you did a git pull and it broke something, do this first
# Find the one before the merge, copy the SHA1
git reflog
git reset --hard <sha1>
# Get remote updates but DONT auto merge it
git fetch github
# Checkout to your mainline so your branch is correct.
git checkout develop
# Make a new branch where you'll be applying matches
git checkout -b manual-merge-github-develop
# Apply your patches
git checkout --patch github/develop path/to/file
...
# Merge changes back in
git checkout develop
git merge manual-merge-github-develop # optionally add --no-ff
# You'll probably have to
git push -f # make sure you know what you're doing.
ধরে নেওয়া বি বর্তমান শাখা:
$ git diff A <file-path> > patch.tmp
$ git apply patch.tmp -R
দ্রষ্টব্য যে এটি কেবলমাত্র স্থানীয় ফাইলে পরিবর্তনগুলি প্রয়োগ করে। আপনার পরে প্রতিশ্রুতিবদ্ধ করতে হবে।
error: <file-path>: already exists in working directory
git diff Branch_A <file-path, filename> -- hash_commit > file_name.temp
আমি যেমন এটি করব
git format-patch branch_old..branch_new file
এটি ফাইলের জন্য একটি প্যাচ তৈরি করবে।
লক্ষ্য ব্রাঞ্চ_লচে প্যাচ প্রয়োগ করুন
git am blahblah.patch