কীভাবে একটি নতুন শাখায় পরিবর্তন আনতে হয়


151

আমি কেবল একটি শাখায় পরিবর্তন করেছি। অন্যান্য শাখায় আমি কীভাবে পরিবর্তনগুলি করতে পারি?

আমি ব্যবহার করার চেষ্টা করছি:

git checkout "the commmit to the changed branch" -b "the other branch"

যাইহোক, আমি মনে করি না যে এটি করা সঠিক জিনিস, কারণ এই ক্ষেত্রে আমি "অন্য শাখায়" পরিবর্তনের পরিবর্তে একটি নতুন শাখা তৈরি করছি।

পরিবর্তে আমার কি নিম্নলিখিত কমান্ডটি ব্যবহার করা উচিত?

git merge "the other branch"

শুধু একটি প্রতিশ্রুতি বা বেশ কয়েকটি?
কার্ল নরুম

উত্তর:


268

git checkout -b your-new-branch

git add <files>

git commit -m <message>

প্রথমে আপনার নতুন শাখাটি চেকআউট করুন। তারপরে আপনি মঞ্চে প্রতিশ্রুতিবদ্ধ করতে চান এমন সমস্ত ফাইল যুক্ত করুন। শেষ অবধি, আপনি সবে যুক্ত করা সমস্ত ফাইল প্রতিশ্রুতিবদ্ধ করুন। আপনি পরবর্তী সময়ে করতে চান git push origin your-new-branchযাতে আপনার পরিবর্তনগুলি দূরবর্তীটিতে প্রদর্শিত হয়।


1
যেহেতু আমি গিট চেকআউট v3.0 (নতুন পরিবর্তনগুলি করার আগে আমার শাখা) থেকে নতুন শাখা পেয়েছি, তখনও আমার কি "গিট অ্যাড <ফাইলস>" ব্যবহার করা দরকার?
ব্যবহারকারী 1988385

git statusবর্তমানে কী মঞ্চস্থ হয়েছে এবং কী নেই তা দেখতে আপনি একটি করতে পারেন।
জন ব্রোডি

5
কেন git addএবং উভয় git commit -a?
কার্ল নরুম

11
এর git checkout -b your-new-branchবদলে না git checkout your-new-branch?
শ্রোদঞ্জার'ইটিজি

1
কীভাবে যদি আমি ইতিমধ্যে একটি ফাইল ট্র্যাক করেছি এবং আমি একটি নতুন শাখায় স্যুইচ করতে চাই তবে সেগুলি নতুন তৈরি হওয়া শাখায় যুক্ত করতে হবে?
গাধা রাজা কিছু প্রশ্ন

57

আপনি যদি প্রতিশ্রুতিবদ্ধ না হন

যদি আপনার পরিবর্তনগুলি অন্য শাখার সাথে সামঞ্জস্যপূর্ণ হয়

এটি প্রশ্নটি থেকে কেস কারণ ওপি একটি নতুন শাখায় প্রতিশ্রুতিবদ্ধ করতে চায় এবং যদি আপনার পরিবর্তনগুলি ওভাররাইটটি ট্রিগার না করে লক্ষ্য শাখার সাথে সামঞ্জস্য করে তবে তা প্রযোজ্য।

জন ব্রোডি দ্বারা গৃহীত উত্তরের মতো আপনি কেবল নতুন শাখাটি চেকআউট করে কাজটি করতে পারবেন:

git checkout -b branch_name
git add <files>
git commit -m "message"

যদি আপনার পরিবর্তনগুলি অন্য শাখার সাথে বেমানান হয়

আপনি যদি ত্রুটিটি পান:

error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches

তারপরে আপনি নিজের কাজকে স্ট্যাশ করতে পারেন, একটি নতুন শাখা তৈরি করতে পারেন, তারপরে আপনার স্ট্যাশ পরিবর্তনগুলি পপ করতে পারেন এবং বিরোধগুলি সমাধান করতে পারেন:

git stash
git checkout -b branch_name
git stash pop

এটি এমন হবে যেন আপনি নতুন শাখা তৈরির পরে এই পরিবর্তনগুলি করেছিলেন। তারপরে আপনি যথারীতি প্রতিশ্রুতিবদ্ধ করতে পারেন:

git add <files>
git commit -m "message"

আপনি যদি প্রতিশ্রুতিবদ্ধ হয়

আপনি চাইলে কমিটগুলি মূল শাখায় রাখতে পারেন

চেরি-বাছাই সহ কার্ল নরুমের উত্তর দেখুন, যা এই ক্ষেত্রে সঠিক হাতিয়ার:

git checkout <target name>
git cherry-pick <original branch>

আপনি যদি কমিটগুলি মূল শাখায় রাখতে চান না

এই সম্ভাব্য নকলটিতে জোয়েটউইডেলের উত্তর দেখুন । উপরের যেকোন পদক্ষেপ যথাযথ হিসাবে অনুসরণ করুন, তারপরে মূল শাখাটি আবার রোল করুন:

git branch -f <original branch> <earlier commit id>

আপনি যদি গিটহাবের মতো ভাগ করে নেওয়া কোনও দূরবর্তী জায়গায় আপনার পরিবর্তনগুলিকে ঠেলে দিয়ে থাকেন তবে আপনি কী করছেন তা না জানলে আপনার এই রোল-ব্যাকটি চেষ্টা করা উচিত নয়।


3
প্রত্যেকে এই কোডটি চেষ্টা করে দেখবে। কারণ বেশিরভাগ লোকেরা যারা উত্তরটির সন্ধান করে, তাদের ইতিমধ্যে আপনার বিদ্যমান কোডটিতে কিছু পরিবর্তন রয়েছে।
সুসিন পিভি

2
আপনি কেন স্ট্যাশ এবং স্ট্যাশ পপ যুক্ত করলেন? যখন আপনি একটি নতুন শাখা চেকআউট করবেন, আপনার পরিবর্তনগুলি যুক্ত এবং প্রতিশ্রুতিবদ্ধতার জন্য অব্যয়যোগ্য হবে, স্ট্যাশ করার দরকার নেই।
ত্রিস্তান

@ ত্রিস্তান আপনি ঠিক সেই ক্ষেত্রেই আছেন যেখানে পরিবর্তনগুলি সামঞ্জস্যপূর্ণ এবং ফাইলগুলি ওভাররাইট না করে। অন্যথায়, আমি পেয়েছি আপনি error: Your local changes to the following files would be overwritten by checkout: ... Please commit your changes or stash them before you switch branches.কি নতুন উত্তর লিখতে চান বা আমার উত্তর সম্পাদনা করতে চান? যদি তা না হয় তবে আমি নিজে এটি সম্পাদনা করতে পারি।
মাইগুয়েলমোরিন

ঠিক আছে, আপনি পুরোপুরি ঠিক বলেছেন। আমি মনে করি আপনার গ্রহণযোগ্য উত্তর ছাড়াও এটি কী নিয়ে আসে তা দেখানোর জন্য আপনার উত্তরটি সম্পূর্ণ করা উচিত।
ত্রিস্তান

@ ত্রিস্তান আমি তা করেছি। ওপি একটি নতুন শাখা সম্পর্কে জিজ্ঞাসা করছিল, সেক্ষেত্রে স্বীকৃত উত্তরটি সঠিক। অন্যান্য লোকেরা আমার উত্তরকে দরকারী হিসাবে পেয়েছিল বলে আমি নিজেকে রাখি। এটি একটি দীর্ঘ উত্তর হয়ে গেছে এবং আমি কোনও প্রতিক্রিয়া সহ সম্পাদনা করতে পেরে খুশি।
মাইগুয়েলমোরিন

24

যদি আমি সঠিক বুঝতে পারি, আপনি একটি প্রতিশ্রুতিবদ্ধ হয়েছিলেন changed_branchএবং আপনি যে প্রতিশ্রুতিটি অনুলিপি করতে চান other_branch? সহজ:

git checkout other_branch
git cherry-pick changed_branch

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