গিট - ভুল শাখায় কাজ করা - বিদ্যমান বিষয় শাখায় কীভাবে পরিবর্তনগুলি অনুলিপি করবেন


333

আমি একটি প্রকল্পে কাজ করছি, কিন্তু দুর্ভাগ্যক্রমে, আমি আমার শাখায় স্যুইচ করতে ভুলে গেছি এবং যেমনটি মাস্টার নিয়ে কাজ করে চলেছে

আমি মাস্টার থেকে এখানে আমার কাজটি (3 ফাইল) কীভাবে অনুলিপি না করে আমার শাখায় (উদাহরণস্বরূপ, শাখা 123 ) অনুলিপি করতে পারি?

উত্তর:


540

আপনার প্রয়োজন মতো সমস্ত শব্দ নিম্নলিখিত:

git stash
git checkout branch123
git stash apply

তারপরে আপনার মাস্টার শাখাকে স্পর্শ না করে আপনার নিজের শাখায় ফিরে আসা উচিত।


6
ঠিক আছে - আমি এটি দৌড়েছি, কিন্তু আমি যখন মাস্টারে ফিরে যাই (গিট চেকআউট মাস্টার) এবং গিটের অবস্থা চালায়, একই ফাইলগুলি এখনও "সংশোধিত" হয় - এটি কি প্রত্যাশিত?
অ্যালেক্স

5
আপনার স্থানীয় শাখা (মাস্টার) এবং বিষয় শাখার (শাখা 123) মধ্যে পার্থক্য যদি আপনি স্থানীয়ভাবে সংশোধন করেছেন এমন কোনও ফাইলের মধ্যে না থাকে তবে আপনাকে সম্ভবত স্ট্যাশ করতে হবে না। গিট আপনাকে সেক্ষেত্রে কেবল বিষয় শাখাটি পরীক্ষা করে দেখাতে দেবে।
ক্যাসাবেল

3
@ অ্যালেক্স: হ্যাঁ, এটি প্রত্যাশিত এটি কমিট জড়িত না। stashস্থানীয় পরিবর্তনগুলি সরিয়ে দেয়, তারপরে stash applyসেগুলি ফিরিয়ে আনবে।
ক্যাসাবেল

6
আমি কীভাবে তাদের মাস্টার শাখা থেকে "মুক্তি" দিতে পারি .. যে পরিষ্কার ছেড়ে যেতে পারি?
অ্যালেক্স

7
git reset --hard HEADএবং আপনি আপনার মাস্টার শাখায় শেষ প্রতিশ্রুতিতে ফিরে এসেছেন।
gnab

46

গৃহীত উত্তরটি সর্বাধিক পুঙ্খানুপুঙ্খ, তবে একটি বিশেষ ক্ষেত্রে রয়েছে যেখানে আপনি সরল করতে পারবেন। ওয়ার্কিং ডিরেক্টরিতে আপনি যে ফাইলগুলি সংশোধন করেছেন তা যদি উভয় ক্ষেত্রেই অভিন্ন হয় masterএবং branch123আপনি কেবল তা করতে পারেন

git checkout branch123

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

অন্যান্য ব্যক্তিরা মন্তব্যে যেমন উল্লেখ করেছেন, branch123এখনও উপস্থিত না থাকলে আপনি তা করতে পারেন

git checkout -b branch123

আমি এখানে যা পেয়েছি তার ভিত্তিতে ।


3
বা, আপনি যদি একটি নতুন শাখা তৈরি করতে চান,git checkout -b newbranch
ফিল মিচেল

2
এটি আমার জন্য স্ট্যাশের চেয়ে ভাল কাজ করছে এবং এটি অনেক সহজ। ধন্যবাদ!
ম্যাথিয়াস

31
না এটি কাজ করে না। গিট আপনাকে এই বার্তাটি দেখাবে: "আপনার শাখাগুলি স্যুইচ করার আগে আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন বা তাদের স্ট্যাশ করুন।
dsharew

1
@ ডেগেনশ্রেভ: হ্যাঁ, কিছু ক্ষেত্রে আপনি ঠিক বলেছেন, যেমন, আপনি যদি ডিরেক্টরি ডিরেক্টরিটিতে ওয়ার্কিং ডিরেক্টরিতে সংশোধন করেছেন সেগুলি একই রকম না হয় masterএবং branch123। আমার সম্পাদিত উত্তর দেখুন।
রাসেল ডার্কস

1
এটি আমার জন্য কাজ করে মহান। আমার এখনও কোনও শাখা তৈরি হয়নি, তাই আমি এটি করেছি: গিট চেকআউট-বি নিউ ব্র্যাঞ্চনাম। আমার পরিবর্তনগুলি তাদের নিজস্বভাবে সেই শাখায় প্রদর্শিত হয়েছিল।
dex3703


0

ফাইলগুলি চেক আউট করার সময় একটি নতুন শাখা তৈরি করা সম্ভব হলেও বিদ্যমান শাখাটি চেকআউট করা সম্ভব না হওয়ায়, কাজ করার জন্য অস্থায়ী শাখা ব্যবহার করে আমি নিম্নলিখিত কৌশলটি পেয়েছি:

এই দৃশ্যটি কমপক্ষে ভিএস 2015 গিট প্লাগইন নিয়ে কাজ করে তবে সম্ভবত কোনও গিট সরঞ্জাম দিয়ে কাজ করবে।

  1. চেকআউট করুন এবং মাস্টারগুলিতে ফাইলগুলি পরিবর্তন করুন (আপগুলি! ভুল শাখা)
  2. মাস্টার থেকে একটি নতুন শাখা "টেম্প" (বা আপনার পছন্দসই কোনও অব্যবহৃত নাম) তৈরি করুন। চেক আউট ফাইলগুলি এখন অস্থায়ীভাবে পরীক্ষা করা হবে এবং মাস্টার নয়।
  3. টেম্পে পরিবর্তনগুলি পরীক্ষা করে দেখুন (মাস্টারটি অনুচ্চারিত)
  4. সবকিছু এখন চেক ইন করা হয়েছে এবং বিদ্যমান শাখাটি পরীক্ষা করা সম্ভব। ওয়ান্টেড শাখাটি পরীক্ষা করুন (যে শাখাটি দিয়ে আমি পরিবর্তনগুলি শুরু করতে চেয়েছিলাম) 3.5 গিট রিবেস
  5. অস্থায়ী শাখায় টেম্প মার্জ করুন। এখন পরিবর্তনগুলি সঠিক শাখায় রয়েছে।
  6. টেম্প শাখা মুছুন কারণ এটি আর প্রয়োজন হয় না

সম্পাদনা: আমি জানতে পেরেছি যে মার্জ করার আগে আপনাকে টেম্প শাখার একটি রিবেস (গিট রিবেস --অন্টো) করতে হবে। অন্যথায় মাস্টার পরিবর্তনগুলি সংযুক্তিতে অন্তর্ভুক্ত করা হবে। উপরে একটি অতিরিক্ত পদক্ষেপ 3.5। রিবেস সম্পর্কে এখানে আরও দেখুন: https://git-scm.com/book/en/v2/Git-Branching- রিবেসিং


আপনি যে উত্তরটি সরবরাহ করেন সে সম্পর্কে আরও কিছু বিবরণ যুক্ত করে আরও উত্তর দিতে পারেন?
অ্যারিসোন

আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ। যদিও সমাধানটি বেশ সহজ এবং স্ট্যাশের পরিবর্তে অস্থায়ী শাখা ব্যবহার করা ব্যতীত "স্ট্যাশ" সমাধান হিসাবে একই নীতি অনুসরণ করে। অন্তত ভিজ্যুয়াল স্টুডিও ব্যবহারকারীদের জন্য এটি আরও সুবিধাজনক কারণ স্ট্র্যাশটি জিআইটি প্লাগইন দ্বারা সমর্থিত নয়
পাসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.