একাধিক মেশিনে গিটের সাথে কাজ করা


15

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

  • ভাগ করে নেওয়ার জন্য গিট নিজেই ব্যবহার করুন, প্রতিটি মেশিনের নিজস্ব রেপো থাকে এবং আপনাকে তাদের মধ্যে আনতে হবে।
    • অন্যটি অফলাইন থাকলেও আপনি যে কোনও মেশিনে কাজ করতে পারেন। এটি নিজেই বেশ বড় মনে হয়।
  • এমন একটি রেপো ব্যবহার করুন যা মেশিনগুলির মধ্যে নেটওয়ার্কের মাধ্যমে ভাগ করা হয়।
    • আপনার কোডটি সর্বদা আপ টু ডেট থাকায় প্রতিবার মেশিনগুলি স্যুইচ করার সময় গিট টান করার দরকার নেই।
    • আপনি কখনই এই মেশিনে একটি ফাইল শেয়ার বন্ধ করে দেওয়ার কারণে আপনার অন্য অ-হোস্টিং মেশিন থেকে কোড চাপতে ভুলে গেছেন তা কখনই চিন্তা করবেন না।

আমার স্বজ্ঞাততা বলে যে প্রত্যেকে সাধারণত প্রথম বিকল্পটি নিয়ে যায় with তবে খারাপ দিকটি আমি দেখতে পাচ্ছি যে আপনি সবসময় আপনার অন্যান্য মেশিনগুলি থেকে কোড অ্যাক্সেস করতে সক্ষম না হতে পারেন এবং আমি অবশ্যই আমার ডাব্লুআইপি শাখাগুলি প্রতিদিনের শেষে গিথুবের দিকে ঠেলে দিতে চাই না। আমি আমার কম্পিউটারগুলি সবসময় ছেড়ে যেতে চাই না যাতে আমি সেগুলি থেকে সরাসরি আনতে পারি। সর্বশেষে একটি ছোট বিষয় হল একাধিক শাখা আপ টু ডেট রাখার জন্য সমস্ত গিট কমান্ড ক্লান্তিকর হতে পারে।

এই পরিস্থিতিতে একটি তৃতীয় হাতল আছে? সম্ভবত কিছু তৃতীয় পক্ষের সরঞ্জাম উপলব্ধ রয়েছে যা এই প্রক্রিয়াটিকে আরও সহজ করতে সহায়তা করে? আপনি যদি এই পরিস্থিতিটি নিয়মিতভাবে মোকাবেলা করেন তবে আপনি কীসের পরামর্শ দিন?


গিটটি একটি বিকেন্দ্রীভূত সংস্করণ সরঞ্জাম এবং ক্লোনিং করার সময় গিটটি সর্বদা আপনার রেপোর স্থানীয় কপি তৈরি করে, বিশ্বব্যাপী পদার্থে গিটের বিশ্বে কোনও "কেন্দ্রিয়ায়িত" বা "অনন্য" সংগ্রহস্থল সম্পর্কে ধারণাটি বিদ্যমান নেই।
ব্যবহারকারী 827992

2
@ user827992 আমি এই বাস্তবতা সম্পর্কে সম্পূর্ণ 100% সচেতন। আমি মনে করি না আমি কেন্দ্রীকরণের বিষয়ে কিছু প্রস্তাব দিয়েছি। কেবলমাত্র আমি উল্লেখ করছি যে আপনি যদি একটি ফাইল শেয়ার ব্যবহার করছেন, একটি মেশিন হোস্ট, এই অর্থে যে এটি শারীরিকভাবে ফাইলগুলি সংরক্ষণ করছে। এটি ডিভিসিএস থেকে সম্পূর্ণ আলাদা একটি ধারণা।
টেসেরেক্স

এই থ্রেড স্ট্যাকওভারফ্লো.com/ প্রশ্নগুলি / 1550378/… কিছু ভাল চিন্তা রয়েছে। শাখা প্রতিশ্রুতিবদ্ধ, ধাক্কা, টান, পুনরায় সেট করা এবং মুছে ফেলা তাদের মধ্যে একটি (সম্ভবত স্বয়ংক্রিয়ভাবে)
phil294

উত্তর:


14

আমি প্রতিদিন আপনার প্রস্তাবিত উভয় সমাধানের সাথে ডিল করি। সেগুলি ভালভাবে পরিচালনা করার জন্য দুটি মূল ধারণা রয়েছে।

  1. বিষয় শাখা ব্যবহার করুন। আমি বিশ্বাস করি উত্পাদনের ইতিহাসটি প্রাচীন হতে হবে। ফলস্বরূপ আমি আমার productionশাখার ইতিহাসকে যৌক্তিক, প্রতিরূপ এবং ডিবাগযোগ্য করে তুলতে প্রচুর সময় ব্যয় করি । একাধিক মেশিন ব্যবহার করার সময়, আপনার মাঝে মাঝে প্রগতিতে কাজ করার প্রয়োজন হয়। একটি বিষয় শাখা ব্যবহার করুন। আপনি pullএবং pushউভয়ই মেশিন থেকে এই শাখাটি অল্প প্রচেষ্টা সহ করতে পারেন এবং যখন এটি আরও একটানা বজায় রাখতে সক্ষম ইতিহাস তৈরি করতে মার্জ masterবা পুনরায় স্থির করতে প্রস্তুত production
  2. আপনি যদি অন্য ব্যবহারকারীদের সাথে ভাগ না করেন তবে কোনও নেটওয়ার্কে ভাগ করা একটি রেপো ব্যবহার করা ভাল। আমরা স্ক্রিপ্টগুলির জন্য একটি ভাগ করা সংগ্রহস্থল ব্যবহার করি, সৃজনশীলভাবে scriptsভান্ডারের নামকরণ করি । রেপো প্রায়শই পরিবর্তন হয় না বলে প্রথমে এটি একটি ভাল ধারণা বলে মনে হয়েছিল, তবে সময়ের সাথে সাথে এটি বেশ দুঃস্বপ্নে পরিণত হয়েছে। একে অপরের কাজকে ওভাররাইট করা সহজ, এবং আপনি যতক্ষণ ভাণ্ডারটিতে কাজ করছেন ততটুকু এয়ার ট্র্যাফিক নিয়ন্ত্রণ করতে যত সময় ব্যয় করে শেষ করবেন।

সর্বোত্তম সমাধান হ'ল প্রতিটি মেশিনে স্থানীয় সংগ্রহস্থল রাখা এবং দূরবর্তী মাধ্যমে তাদের মধ্যে বিষয়ের শাখা ভাগ করা। আপনার পছন্দমতো এই শাখাগুলিতে অগ্রগতিতে কাজের প্রতিশ্রুতিবদ্ধ। যতক্ষণ আপনি rebaseতাদের কাছে আরও বোধগম্য ইতিহাসের প্রতি আগ্রহী, ততক্ষণ এটি অনুশীলনে বেশ কার্যকর।

আপনি যদি নিজেকে সারাদিনে একাধিক টপিক শাখায় কাজ করতে দেখেন তবে প্রত্যেকে প্রত্যেকে প্রত্যেকেই দূরবর্তী স্থানে ঠেলাঠেলি করতে চান না, git push <remote>তবে ডিফল্টরূপে সমস্ত মিলে যাওয়া শাখাগুলিতে চাপ দেবে <remote>। এই ডিফল্টটি গিটের পরবর্তী সংস্করণে পরিবর্তিত হবে তবে কনফিগারেশন ফাইলে সেটpush.default করে বা ম্যাচটি নির্দিষ্ট করে নির্দিষ্ট করে দেওয়া যাবে refspec:

git push <remote> :

3

যদি সমস্ত মেশিন সর্বদা না থাকে, সিলভার বুলেট নেই: মেশিনটি বন্ধ করার আগে আপনাকে অন্য কোথাও পরিবর্তনগুলি ঠেকাতে হবে। আমি একটি প্রাইভেট সার্ভারে চাপ দিই তবে এটি ড্রপবক্স বা ইউএসবি কী হতে পারে যেখানে আপনি সর্বত্র বহন করেন।

হ্যাঁ, একাধিক শাখাকে কেন্দ্রীয় স্থানে ঠেলে দেওয়া ক্লান্তিকর হতে পারে, তবে এটি স্ক্রিপ্ট করা খুব কঠিন নয়। আমি তার জন্য একটি push.shস্ক্রিপ্ট ব্যবহার করি, যা আমি প্রতিবার কোনও মেশিনে কাজ শেষ করে চালাই।


2

আমি এটিকে কিছুটা ভিন্ন দিক থেকে এসেছি (এবং আমি মৈত্রী ব্যবহার করি তবে দার্শনিকভাবে এটি একই)। এটি আমার ধারণা নয়, আমি কেবল এটি ব্যবহার করি এবং এটি আমার ব্যক্তিগত জিনিসগুলির জন্য কাজ করে।

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

আমি যখন বাক্সগুলিকে স্যুইচ করি তখন কেবল একটি টান এবং একটি আপডেট করার বিষয়টি - তত্ত্ব অনুসারে আপনি সর্বদা লিনিয়ার ফ্যাশনে কাজ করে যাবেন যদিও এটি একাধিক সংগ্রহস্থলে রয়েছে।

এখানে মূল কীটি হ'ল স্কাইড্রাইভ রেপোটি বেশিরভাগই আমার উভয় মেশিনে কোডের সর্বশেষ সংস্করণটি অ্যাক্সেস পেয়েছি তা নিশ্চিত করার জন্য একটি উপায় সরবরাহ করার জন্য উপস্থিত রয়েছে - যদিও এটি আরও কার্যকরভাবে কাজ করবে - এবং একটি সরবরাহ সরবরাহ করার জন্য অতিরিক্ত ব্যাকআপ। "সম্পন্ন" যে কোনও কিছু কিলিনের দিকে ধাক্কা খায় (যদি আমি গিট ব্যবহার করতাম এবং গেমটি কীভাবে খেলানো হয় আমি সঠিকভাবে বুঝতে পারি তবে এটি পুনরায় করানোর মতো বিষয় হবে)।

আমি যা করতে চাই না তা ভাগ করা ফোল্ডারটি বন্ধ হয়ে যায় ... আপনি যদি ডিভিসিএস ব্যবহার করে থাকেন তবে আপনি পাশাপাশি উপকারটি উপভোগ করতে পারেন।


0

আপনার দুটি বিকল্পের প্রথমটি উত্তর। এটি "ডিভিসিএস" এর "ডি" দ্বারা বোঝানো হয়েছে। প্রতিটি ব্যবহারকারীর নিজস্ব স্থানীয় সংগ্রহস্থল রয়েছে এবং সংগ্রহস্থলগুলি একে অপরকে পরিচালনা করতে পারে ways

আপনি আপনার দ্বিতীয় বিকল্পটি করতে পারেন, তবে সমস্যাটি হ'ল কেবলমাত্র একটি সংগ্রহস্থল ওয়ার্কিং ডিরেক্টরি। সুতরাং কাজের গাছটি একবারে কেবলমাত্র একটি অবস্থায় থাকতে পারে - সেখানে কোনও জো একটি শাখায় কাজ করছে না এবং জেন অন্যটিতে কাজ করছে। সুতরাং বিকাশকারীরা একে অপরের পরিবর্তনগুলিকে ওভাররাইট করতে পারে, একে অপরের কাজকে ছড়িয়ে দিতে পারে। কেন, এটি ভার্সন নিয়ন্ত্রণ না করার মতো!

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

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