গিট-এসএনএন থেকে দূরবর্তী শাখাটি নিয়মিত গিট রিমোটের মতো প্রায় একই রকম। সুতরাং আপনার স্থানীয় সংগ্রহস্থলে আপনার গিট-এসএনএন ক্লোন থাকতে পারে এবং গিটহাবে পরিবর্তনগুলি ঠেলে দিতে পারেন। গিট যত্ন করে না। যদি আপনি আপনার গিট-এসএনএন ক্লোন তৈরি করেন এবং গিটহাবের সাথে একই পরিবর্তনগুলি ধাক্কা দেন তবে আপনার কাছে গুগল কোড সংগ্রহস্থলের একটি অনানুষ্ঠানিক আয়না থাকবে। বাকিটি ভ্যানিলা গিট।
git svn clone http://example.googlecode.com/svn -s
git remote add origin git@github.com:example/example.git
git push origin master
এখন আপনার কাছে এটি হ'ল মাঝে মাঝে আপনাকে গিটের সাথে সাবভার্সন সংগ্রহস্থলটি সিঙ্ক্রোনাইজ করতে হবে। এটি দেখতে কিছু হবে:
git svn rebase
git push
গিটকে বা যাই হোক না কেন, এটি দেখতে এরকম কিছু দেখাচ্ছে:
o [master][remotes/trunk][remotes/origin/master]
|
o
|
o
এবং যখন আপনি দৌড়াবেন git svn rebase
, আপনার এটি হবে:
o [master][remotes/trunk]
|
o
|
o [remotes/origin/master]
|
o
|
o
সুতরাং এখন git push
দৌড়াদৌড়িটি সেই সমস্ত প্রতিশ্রুতিগুলি গিটহাবের দিকে ঠেলে দেবে, সেখানে [দূরবর্তী অঞ্চল / উত্স / মাস্টার] শাখা। এবং আপনি প্রথম ASCII আর্ট ডায়াগ্রামে দৃশ্যে ফিরে আসতে চাইবেন।
এখন সমস্যাটি হল, আপনি কীভাবে এই পরিবর্তনগুলিতে মিশ্রণটি ব্যবহার করবেন? ধারণাটি হ'ল, আপনি কখনও একই শাখায় প্রতিশ্রুতিবদ্ধ হন না যে আপনি গিট-এসএনএন-রিবেস-ইনগ এবং গিট-পুশিং। আপনার পরিবর্তনগুলির জন্য আপনার একটি পৃথক শাখা দরকার। অন্যথায়, আপনি সাবভারশনগুলির উপরে আপনার পরিবর্তনগুলি প্রত্যাখ্যান করবেন, যা আপনার গিট সংগ্রহস্থলটিকে ক্লোন করে এমন কাউকে বিরক্ত করতে পারে। আমাকে অনুসরণ কর? ঠিক আছে, সুতরাং আপনি একটি শাখা তৈরি করুন, আসুন এটি "বৈশিষ্ট্যগুলি" বলুন। এবং আপনি একটি প্রতিশ্রুতিবদ্ধ এবং এটি গিটহাবের থেকে বৈশিষ্ট্যগুলির শাখায় ঠেলে দেবেন। আপনার গিটকে দেখতে কিছুটা এমন দেখাবে:
o [features][remotes/origin/features]
|
o
|
o [master][remotes/trunk][remotes/origin/master]
|
o
গুগল কোড ব্রাঞ্চের আগে বেশ কয়েকটি কমিট করার আগে আপনি এখানে আপনার বৈশিষ্ট্যগুলি শাখা পেয়েছেন? সুতরাং যখন আপনি গুগল কোড থেকে নতুন স্টাফ অন্তর্ভুক্ত করতে চান তখন কী হয়? আপনি git svn rebase
প্রথমে দৌড়াবেন এবং এটি পাবেন:
o [features][remotes/origin/features]
[master][remotes/trunk] o |
| o
o /
|/
o[remotes/origin/master]
|
o
আপনি যদি git push
মাস্টার আউট হন তবে আপনি কল্পনা করতে পারেন [দূরবর্তী / উত্স / মাস্টার] মাস্টার হিসাবে একই পয়েন্টে। তবে আপনার বৈশিষ্ট্য শাখার পরিবর্তন নেই। আপনার পছন্দগুলি হ'ল মাস্টারকে বৈশিষ্ট্যগুলিতে বিভক্ত করা বা বৈশিষ্ট্যগুলি পুনর্বাসনা। একটি মার্জ এই মত চেহারা হবে
git checkout features
git merge master
o [features]
/|
/ o [remotes/origin/features]
[master] o |
| o
o /
|/
o
|
o
তারপরে আপনি গিটহাবের বৈশিষ্ট্যগুলিকে ঠেলাবেন। স্থান বাঁচাতে আমি মাস্টারের রিমোটগুলি ছেড়ে দিয়েছি, তারা [মাস্টার] এর মতোই হবে ।
রিবেস পদ্ধতিটি আরও বেশি দুষ্ট - আপনার ধাক্কা দ্রুত অগ্রসর হওয়া সংযুক্তি না হওয়ায় (আপনি এটির ক্লোন করেছিলেন এমন ব্যক্তির অধীনে বৈশিষ্ট্যগুলির শাখাটি টানবেন) you' এটি করা সত্যই ঠিক মনে করা হয় না, তবে আপনি দৃ determined়সংকল্পবদ্ধ থাকলে কেউ আপনাকে থামাতে পারবে না। এটি কিছু জিনিসগুলিকে খুব সহজ করে তোলে যেমন প্যাচগুলি যখন সামান্য পুনঃনির্মাণ আকারে উজানের কাছে গৃহীত হয়। এটি দ্বন্দ্বের সাথে জড়িত হওয়া বাঁচাতে চাইবে, আপনি কেবলমাত্র উপরে উঠা প্যাচগুলি স্কিপ করতে পারেন। যাইহোক, একটি রিবেস এর মত হবে:
git rebase master features
o [features]
|
o
| o [remotes/origin/features]
[master] o |
| o
o /
|/
o
|
o
এবং তারপরে আপনাকে তা করতে হবে git push --force
। আপনি কেন এটি জোর করার প্রয়োজন তা আপনি দেখতে পাচ্ছেন, ইতিহাসটি [রিমোটস / উত্স / বৈশিষ্ট্যগুলি] থেকে নতুন বর্তমান পোস্ট-পুনঃস্থাপন [বৈশিষ্ট্যগুলি] পর্যন্ত একটি পুরানো বিভেদ রয়েছে ।
এটি সব কাজ করে তবে এটি অনেক প্রচেষ্টা। আপনি যদি নিয়মিত অবদানকারী হতে চলেছেন তবে সবচেয়ে ভাল বাজি হ'ল কিছু সময়ের জন্য এইভাবে কাজ করা, কিছু প্যাচগুলি প্রবাহিত প্রেরণ করুন এবং দেখুন যে আপনি সাবভারশনে অ্যাক্সেস পেতে পারেন কিনা। এটি ব্যর্থ হয়ে, সম্ভবত আপনার পরিবর্তনগুলি গিটহাবের দিকে ঠেলে দেবেন না। এগুলিকে স্থানীয় রাখুন এবং চেষ্টা করুন এবং যে কোনও উপায়ে তাদেরকে প্রবাহিত করে নিন।
git
এখানে নুব।) দ্রুত প্রশ্ন। আমি এটি একটি বৃহত এসভিএন রেপোর বিপরীতে করেছি এবং এটি 141 মেগাবাইটে এসেছিল। আমি এটিকে গিথুবে ঠেকিয়ে দিয়ে আবার ক্লোন করে আবার নীচে নামলাম, এবং এটি 130 মেগাবাইটে বেরিয়ে এসেছিল। আমিgit gc
দুজনের উপর দৌড়ে গেলাম । পার্থক্যের জন্য কী হতে পারে?