অন্যরা যেমন উত্তর দিয়েছে, গিটের সাথে আপনার ব্যক্তিগত শাখাগুলিতে অ-সমাপ্ত কোড সম্পর্কে যত্ন নেওয়া উচিত নয়। যাইহোক, যদি কোনও কারণে, আপনি সত্যই সত্য চান না যে আপনার অসম্পূর্ণ কাজটি মূল রেপোটিকে স্পর্শ করতে পারে, আপনি গিটের বিতরণ প্রকৃতিটি কাজে লাগাতে পারেন!
নামের একটি সাধারণ সরঞ্জাম রয়েছে git bundle
যা আপনাকে কোনও কেন্দ্রীয় সংগ্রহশালা ছাড়াই সহজেই পরিবর্তনগুলি পাস করতে সহায়তা করতে পারে। প্রথমে রেপো ক্লোন করুন:
git clone https://github.com/octocat/Spoon-Knife.git working_copy_1
cd working_copy_1
কিছু পরিবর্তন করুন এবং একটি অস্থায়ী শাখায় তাদের প্রতিশ্রুতিবদ্ধ:
git checkout -b tmp_branch
git commit -a -m "temporary changes"
এখন, তাদের পরিবর্তনগুলি বান্ডিল করুন:
git bundle create ../tmp.bundle tmp_branch
এখন আপনার কাছে একটি বান্ডিল ফাইল রয়েছে আপনি নিজের নতুন মেশিনে মেল করতে পারবেন। আপনি কিভাবে এটি সেখানে ব্যবহার করবেন? আসুন একটি নতুন ওয়ার্কিং কপি তৈরি করুন:
cd ..
git clone https://github.com/octocat/Spoon-Knife.git working_copy_2
cd working_copy_2
আমাদের বান্ডিলটিকে অন্য দূরবর্তী হিসাবে বিবেচনা করা দরকার, যাতে আমরা এগুলি থেকে পরিবর্তন আনতে পারি
git remote add tmp ../tmp.bundle
git fetch tmp
যেহেতু পুরো বিষয়টি হ'ল কোনও চিহ্ন ছাড়াই পরিবর্তনগুলি হস্তান্তর করা, আমরা সাময়িক প্রতিশ্রুতি হারাতে তাদের এগুলি ওয়ার্কিং কপিতে স্কোয়াশ করতে চাই:
git merge tmp/tmp_branch --squash
এবং যা অবশিষ্ট রয়েছে তা হ'ল অস্থায়ী দূরবর্তীটি সরিয়ে ফেলা:
git remote remove tmp
Viola! পরিবর্তনগুলি কোনও শাখা বা প্রতিশ্রুতির কোনও চিহ্ন ছাড়াই নতুন কার্যকরী অনুলিপিতে স্থানান্তরিত হয়েছিল!
তবে সত্যই - এই প্রক্রিয়াটি বেশ দীর্ঘ এবং জটিল। এটি গিট, এসভিএন নয় - আপনার ব্যক্তিগত শাখাটিকে কেন্দ্রীয় রেপোতে না ঠেলার কোনও কারণই উচিত নয়।