যখন সবাই মাস্টার নিয়ে কাজ করছেন তখন আমি কীভাবে গিট ব্যথা হ্রাস করতে পারি?


123

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

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

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

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

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

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

সার্ভারটি বিটবকেট (গিথুব নয়)। আমার সংগ্রহশালার উপরে আমার সম্পূর্ণ প্রশাসনিক নিয়ন্ত্রণ রয়েছে তবে সাধারণভাবে সার্ভারে আর কিছুই নেই। এর কোনটিই পরিবর্তনযোগ্য নয়।

উত্স ফাইলগুলি এক্সএমএল। গ্রাফিক্স ফাইলগুলিও রয়েছে, যা প্রত্যেকেই জানেন যে আপনি মার্জ করতে পারবেন না, তবে আমাদের প্রায় কখনও সংঘর্ষ হয় না। মার্জ সংঘাতগুলি XML ফাইলগুলি থেকে আসে, গ্রাফিক্স থেকে নয়।

আমরা পর্যালোচনা, পরীক্ষার-বৈধতাযুক্ত টান অনুরোধগুলির সাথে বৈশিষ্ট্য শাখাগুলি ব্যবহার করতে না যেতে পারা পর্যন্ত অংশীদারিত্বের মাস্টারকে আরও সহজলভ্য করার জন্য গিটের আমাদের ব্যবহারে কী পরিবর্তন করতে পারি?


52
কচ্ছপ ব্যবহার করবেন না, গিট এক্সটেনশনগুলি ব্যবহার করুন। কচ্ছপ লুকানোর চেষ্টা করে যে গিট এসভিএন নয় এবং বেশিরভাগ গিট মহিমা নষ্ট করে। আমি এসভিএন-> গিট ট্রানজিশনটি দু'বার পেরিয়েছি এবং গিট এক্সটেনশন হ'ল লোককে গিটের মতো ভাবতে বাধ্য করার একটি দুর্দান্ত সরঞ্জাম।
উইলবার্ট

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

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

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

14
@ ড্যাঙ্ক, আমিও মনে করি অপেরা সমস্যার মূল সনাক্ত করে না। আপনার যদি মাস্টারের উপর লোকেদের পরিবর্তনগুলি ক্লাববারিং হয় এবং আপনি একটি শাখায় স্যুইচ করেন তবে আপনার লোকেরা শাখায় ক্লোবার্বিং পরিবর্তন আনতে পারে। আপনি যদি পৃথক শাখায় চলে যান তবে আপনার লোকেরা তাদের শাখাগুলিতে মিশে যাওয়ার সমস্যা রয়েছে (বা যারা মাসগুলিতে শেষ পর্যন্ত মার্জ না করে তাদের শাখায় বিকাশ করে)।
ব্যবহারকারী 3067860

উত্তর:


11

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

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

প্রত্যেকে যদি এই রেসিপিটি অনুসরণ করে তবে তাদের ভাল হওয়া উচিত।

প্রতিবার কেউ কোনও বৃহত্তর বা কেন্দ্রীয় পরিবর্তন করেন, অন্য ব্যবহারকারীদের স্থানীয়ভাবে প্রতিশ্রুতিবদ্ধ হতে এবং মাস্টার থেকে টানতে জানান, যাতে পরে তারা খুব বেশি সংঘাত না পায় এবং প্রথম ব্যক্তি এখনও তাদের সাথে একসাথে দ্বন্দ্বগুলি সমাধান করার জন্য রয়েছেন।

সবাইকে প্রবাহটি বোঝার জন্য প্রচুর পরিমাণে বিনিয়োগ করুন, অন্যথায় তারা মাস্টার শাখাটি স্ক্রু করার সময় এটির সাথে স্বাচ্ছন্দ্য বোধ করতে পারে, উদাহরণস্বরূপ "বিরোধের সমাধানের জন্য আমার ফাইলটি রিমোটের পরিবর্তে ব্যবহার করুন" কেবল লাথি মারবে অন্যান্য ব্যক্তিদের দ্বারা তৈরি সমস্ত পরিবর্তন আউট।

গিট সিস্টেম শিখতে খুব কঠিন, বিশেষত আপনি যদি এসভিএন-এর সাথে বেড়ে ওঠেন, ধৈর্য ধরুন এবং এটিকে সঠিকভাবে শেখার জন্য সময় দিন, নতুন ব্যবহারকারীদের সাথে আপনি মাঝে মাঝে কিছুটা গোলমাল পরিষ্কার করতে একটি দিন ব্যয় করতে পারেন, এটি স্বাভাবিক। ;)


9
নাইটপিক: সোর্স ট্রি একটি সংহত উন্নয়নের পরিবেশ নয় ...
ম্যাথিউ গুইন্ডন

আমি এই ওয়ার্কফ্লোটি এখনই পরীক্ষামূলকভাবে চালাচ্ছি (টর্টোস গিট দিয়ে, মানে) কোনও চমক / সমস্যা ডেকে আছি। কেউই ধরে নিচ্ছি, আমি কয়েকদিনের মধ্যেই এটি দলে নিয়ে যাওয়ার পরিকল্পনা করছি।
মনিকা সেলিও

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

100

আপনি অন্য কারও মতো একই শাখাটি থেকে কাজ করার সময় মনে রাখার জন্য তিনটি প্রধান বিষয় রয়েছে:

  • কখনও ব্যবহার --forceযদি না আপনি সত্যিই জানি তুমি কি করছেন।
  • হয় commitবা stashআপনার কাজ প্রতিটি আগেই চলছে pull
  • আপনি pullঠিক আগে একটি আগে এটি সহজ হয় push

এটি বাদ দিয়ে আমি উল্লেখ করব যে বিতরণিত সংস্করণ নিয়ন্ত্রণের সাথে আপনার "অফিসিয়াল" রেপো শাখা ব্যবহার করে কিনা তা বিবেচনা করে না। পৃথক ব্যবহারকারীরা তাদের স্থানীয় রেপোগুলিতে যা করেন তার কোনও প্রভাব নেই। আমার সংস্থা যখন সম্পূর্ণ আলাদা কেন্দ্রীয় ভিসিএস ব্যবহার করত তখন আমি স্থানীয় শাখা পেতে গিট ব্যবহার করতাম। যদি তারা তাদের বৈশিষ্ট্যগুলির জন্য স্থানীয় শাখা তৈরি করে এবং তাদের স্থানীয়টিতে মার্জ করা ভুল masterকরে তবে রিফ্লগ বা অন্য কোনও যাদুতে না গিয়ে সমাধান করা অনেক সহজ ।


51
সর্বদা pullআগে pushদুর্দান্ত পরামর্শ, তবে আমি আরও এক ধাপ এগিয়ে যেতে চাই এবং পরামর্শ দিই যে আপনি pull --rebaseযখন করবেন তখন আপনি পারবেন কিনা তা বিবেচনা করুন।
anaximander

20
@ অ্যানাক্সিম্যান্ডার, আমি সুপারিশ করব যে কেউ হয় --rebase ব্যবহার করেন বা কেউই ব্যবহার করেন না ...
কেউল জে

12
@ টেম্পোরাল ওল্ফ এটাই তারা আমাকে কেক সম্পর্কে বলেছিল ...
ব্ল্যাকভেজেবল

15
@ অ্যানাক্সিম্যান্ডার "তারপরে আপনি বিরোধটি সমাধান করেননি, এবং আপনি এটি ভুল করছেন this এক্ষেত্রে তাদের পুনর্বাসনের সাথে বিশ্বাস করা যাবে না"। সুতরাং আপনি বলছেন যে আপনি একবারও করেন নি, একত্রিত হওয়া বিরোধকে জড়িয়ে দিয়েছেন? আপনি যে সাধারণীকরণ করতে পারেন সহজ যথেষ্ট কোড বেসগুলিতে কাজ করা অবশ্যই দুর্দান্ত। এখানে লিনাসের পুনর্বাসনের ব্যবস্থা নেওয়া হয়েছে, যা আমি ব্যক্তিগতভাবে সেই কালো এবং সাদা পদ্ধতির কোনওটির চেয়ে বেশ সম্মত বলে মনে করি।
ভু

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

68

গিট শিখতে সবার পক্ষে কি কোনও দিন নেওয়া সম্ভব?

কম্পিউটার ব্যবহার করে পেশাদারদের একটি নতুন সরঞ্জাম শেখার আশা করা উচিত এবং যদিও কোনও ভিসিএসে এটির জন্য নকশাকৃত নকশা তৈরি করা হয়েছে তেমন কোনও ভিসিএসে তাদের ভুল করা উচিত।

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

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


37
"যদি কচ্ছপ মূলত তাদের কাছ থেকে গিটটি গোপন করে এবং এটি এসভিএন বলে ভান করে তবে সম্ভবত কচ্ছপই ভুল সরঞ্জাম।" এই. আমি জানি ওপি টুলটি প্রতিস্থাপন করার কথা বলেছে না তবে যদি গিটটি কোনওভাবে কীভাবে কাজ করে তা যদি অস্পষ্ট করে তোলে তবে এটি আপনার বিকাশকারীদের ব্যক্তিগত বৃদ্ধি এবং আপনার পরিচালন দক্ষতার জন্য ক্ষতিকারক। আপনার দলটি আপনার ভিসিএসগুলি বুঝতে না পারলে অপব্যবহার চালিয়ে যাবে।
2rs2ts

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

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

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

1
@ 2rs2ts কচ্ছপ গিট একটি ব্যতিক্রমী গিট গুই। আমি এটি আমার সমস্ত উইন্ডো বাক্সে ইনস্টল করেছি এবং গিট কমান্ড লাইনের সাথে আমি খুব পরিচিত। এর মার্জেটুলটি আমি এখন অবধি ব্যবহার করা অন্যতম সেরা। কচ্ছপ গিট ব্যবহার করে গিটের জন্য আমি প্রচুর নবীন ব্যবহারকারীকে পরিচয় করিয়েছি। এর বৃহত্তম সমস্যাটি হ'ল এটি কয়েকটি সাধারণ চেক বাক্স সহ কিছু উন্নত গিট বিকল্প প্রকাশ করে। সুতরাং - ফোর্স ধাক্কার মতো বিকল্পটি কেবল পুশ গুইয়ের একটি বাক্স চেক করেই করা যেতে পারে। এটি সম্ভবত যা করা হয়েছিল তা কাজটি হারিয়ে ফেলেছে। আমি কচ্ছপ বেশি ব্যবহার করি না তবে কয়েকটি জিনিস এটি সত্যই সহজ করে তোলে।
gnash117

26

কখনও কখনও, আপনি যা করছেন তা পরিবর্তন করতে হবে।

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

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

আপনি যদি ব্রাঞ্চিং ব্যবহার করতে না পারেন তবে আপনি এমন merge-and-pushস্ক্রিপ্ট লেখার বিষয়ে বিবেচনা করতে পারেন যা কিছু ব্যথার পয়েন্ট দূরে সরিয়ে দিতে পারে। হতে পারে এটি পরীক্ষা করে যে ব্যবহারকারী মাস্টারের পিছনে নেই, আনুন এবং টানুন এবং তারপরে মার্জটি চেষ্টা করুন ( সম্ভবত এর সাথে--no-commit --no-ff ), ইত্যাদি।


3
আপনি উল্লেখ করেছেন এমন সমস্ত কারণের জন্য আমরা শাখা প্রশাখায় চলে যাচ্ছি (তবে বিশেষত, নিয়ন্ত্রিত পিআর এবং সংশ্লেষের আগে শাখায় বিরোধগুলি সমাধান করা উচিত এই আদেশ দেওয়ার ক্ষমতা)। আপনি কীভাবে মার্জ-এবং-পুশ স্ক্রিপ্ট আক্রমণ করবেন সে সম্পর্কে আরও বলতে পারেন?
মনিকা সেলিও

6
আমি এই পরামর্শের সাথে একমত নই। মাস্টার থেকে কাজ করার চেয়ে দীর্ঘ চলমান বৈশিষ্ট্যযুক্ত শাখাগুলি আরও ধ্বংসাত্মক হতে পারে (যা যদি আপনার জায়গায় ভাল ওয়ার্কফ্লো না হয় তবে যা ঘটতে চলেছে)। মার্টিন ফওলারের এই বিষয়টিতে একটি দুর্দান্ত নিবন্ধ রয়েছে। দিনের শেষে, ওপিএসের টিমের একটি ওয়ার্কফ্লো সহযোগিতার ইস্যু একটি গিট ইস্যু নয় .. আমি যুক্তি দেব যে আরও শাখাগুলি কেবল এই সমস্যাটিকে আরও জটিল করে তুলবে।
ড্যাঙ্ক

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

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

2
আমরা এটিকে চ্যাটে স্থানান্তরিত করার প্রয়োজনের খুব কাছাকাছি চলেছি, তবে, আপনি যদি সর্বদা কোনও বৈশিষ্ট্য শাখায় থাকেন তবে আপনি আপনার কাজ শেষ করছেন না। তাদের চালিত শাখায় মার্জ করতে হবে (বা এই ক্ষেত্রে প্রকাশিত হবে)। এটি তাদের দল যে সমস্যাগুলির মুখোমুখি হচ্ছে তার চারপাশে স্বয়ংক্রিয় চেক এবং সুরক্ষার প্রবর্তনকে মঞ্জুরি দেয়। একটি বৈশিষ্ট্য শাখা মাস্টারের উপর কাজ করা থেকে সম্পূর্ণ আলাদা যে বেশিরভাগ সরঞ্জামগুলিতে (কমপক্ষে বিটবকেট) ব্রাঞ্চিং মডেলের অংশ হিসাবে প্রয়োজনীয় অনুমোদনের সাথে প্রাক অনুরোধের পূর্বে অনুরোধগুলি অনুমোদনের জন্য সেটআপ করা হয়, যা কেবলমাত্র কাজ করার সময় ঘটে না এমন কিছু হয় না master
Dan1701

12

জোর দিয়ে বলুন যে আপনি মার্জগুলি আবারও করতে পারেন

এটি আপনার কাছে সুস্পষ্ট হতে পারে তবে প্রাক্তন এসভিএন ব্যবহারকারীরা সচেতন নাও হতে পারেন তারা একাধিকবার মার্জটি সমাধান করার চেষ্টা করতে পারে। এটি আপনার প্রাপ্ত সাহায্যের পতাকাগুলির সংখ্যা হ্রাস করতে পারে।

এসভিএন-এ কাজ করার সময় trunkআপনার চারপাশে অনিচ্ছাকৃত পরিবর্তনগুলি করতে হবে। তারপর আপনি একটি করতে চাই svn update। আপনার পয়েন্টগুলি অন্য ব্যক্তির পরিবর্তনের সাথে মিশে যায়। এটিকে পূর্বাবস্থায় ফেলার কোনও উপায় ছিল না (আফাইক), সুতরাং আপনার কাছে কেবলমাত্র ম্যানুয়ালি সমস্ত কিছু পরীক্ষা করা এবং আশা করা যায় যে রেপোটি ভাল অবস্থায় আছে hope সত্যিকার অর্থে আপনি যখন মার্জটি আবার করতে চান তখন আরও বেশি স্বাচ্ছন্দ্য বোধ করবেন।

আমরা গিটে যাওয়ার সময়ও লোকেদের একই মানসিকতা থাকবে। প্রচুর অনিচ্ছাকৃত ত্রুটি বাড়ে।

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

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

টান সম্পর্কে

আমি মনে করি আপনি ঠিক বলেছেন যে pullমার্জটি হ'ল যা মানুষকে গোলমাল করছে। A pullআসলে git fetchযা সার্ভার থেকে পরিবর্তনগুলি পুনরুদ্ধার করে, তারপরে git merge origin/<branchname>* যা আপনার স্থানীয় শাখায় দূরবর্তী পরিবর্তনগুলিকে মার্জ করে। ( https://git-scm.com/docs/git-pull )

আপশটটি সমস্ত স্ট্যান্ডার্ড মার্জ কমান্ডগুলি টেনে নিয়ে কাজ করে। যদি সেই মার্জটিতে দ্বন্দ্ব থাকে তবে আপনি বাতিল করতে পারেন git merge --abort। আপনার মার্জ হওয়ার আগে যা আপনাকে আবার ফিরিয়ে নিতে হবে। তারপর আপনি হয় দিয়ে আবার চেষ্টা করে দেখতে পারেন git pullঅথবা git merge origin/<branchname>

যদি আপনি কোনও উপায়ে আপনার সহকর্মীদের পছন্দের জিইউআই সরঞ্জামটি ব্যবহার করে কীভাবে উপরের কাজটি করতে চান তা আমি মনে করি যে আপনার বেশিরভাগ সমস্যার সমাধান করব। দুঃখিত আমি আরও নির্দিষ্ট হতে পারি না।

* আমি বুঝতে পারি যে উত্স এখানে সবসময় হয় না।

git reflogসমস্যাগুলি নির্ণয়ের জন্য ব্যবহার করুন

আপনার মত আমিও বেশিরভাগ জিইআইআই সরঞ্জামগুলির অপব্যবহারের ফলে তৈরি সমস্যাগুলি সনাক্ত করতে পারি। আমি দেখতে পাই যে এটি git reflogকখনও কখনও সহায়ক হতে পারে কারণ এটি रिपোরিটরিতে ক্রিয়াকলাপের মোটামুটি ধারাবাহিক ট্রেইল। যদিও এটি সময়ে পড়া কঠিন।

একটি বিকল্প

আপনার পরিস্থিতি সাময়িক হওয়ায় আপনার প্রক্রিয়াটি রোল আউট না হওয়া পর্যন্ত আপনি কেবল এসভিএন-এ ফিরে যেতে পারেন। আমি এটি করতে দ্বিধা বোধ করব যেহেতু 'আমরা একবার গিট চেষ্টা করেছিলাম কিন্তু এটি ঠিক কাজ করে নি ...' এবং সত্যিই কখনই এটি বাছাই করা যায় না many

কিছু অন্যান্য সাধারণ ক্রান্তিকালীন সমস্যা

  • লোকেরা প্রায়শই তাদের রেপো মুছতে এবং পুনরায় সংযোগ করত, এই বিষয়ে নিশ্চিত হয়ে যে তাদের রেপো অকেজো অবস্থায় রয়েছে। সাধারণত এটি স্থানীয় এবং দূরবর্তী পার্থক্যের ট্র্যাক হারিয়ে যাওয়ার কারণে ঘটেছিল। জিইউআই সরঞ্জাম এবং সিএলআই উভয়ই এটি ভাল দেখায় ব্যর্থ হয়। সি এল এলিতে আমি git log --decorateপার্থক্যগুলি ওভারভিউ করার সহজতম উপায় খুঁজে পাই । তবে জিনিসগুলি মাস্টারের উপর খুব লোমশ হয়ে উঠলে (উদাহরণস্বরূপ) আপনি পারেন cangit reset --hard origin/master

2
আপনার শেষ পয়েন্টে: সত্যিকারের দ্রুত, কাঠামোগত ওভারভিউয়ের জন্য, আমি git log --oneline --decorate --graphআদর্শ খুঁজে পাই । এতটুকু, যে আমি সেই সুনির্দিষ্ট সংমিশ্রণের জন্য একটি শেল ওরফে সংজ্ঞায়িত করেছি।
11

1
আপনার উত্তরের জন্য +1, আমি কেবলমাত্র প্রস্তাবিত বিকল্পটি খারাপ বলে মনে করেছি কারণ আপনি উল্লেখ করেছেন। এমনকি আপনি এসভিএন-এ ফিরে গেলে এবং ভবিষ্যতে গিটে যাওয়ার পরেও আপনার ব্যথা হবে। দলের লোকেরা কেবল নতুন, ভিন্ন, বেদনাদায়ক সরঞ্জাম শিখবে যদি তাদের কাছে অন্য কোনও বিকল্প না থাকে। ব্যবহার এবং মূ usage় ভুলগুলি করার পরেই তারা গিট কী করতে পারে তা প্রশংসা করতে শুরু করবে।
কোডমনকি

8

- একটি সম্ভাব্য প্রক্রিয়া, যে ওপেন সোর্স দল অনেকটা গ্রহণ করেছে, forking মডেল ব্যবহার করা https://www.atlassian.com/git/tutorials/comparing-workflows যখন একটি forking Git কর্মপ্রবাহ আলোচনা (পরিষ্কারভাবে বিবৃত করা নিশ্চিত করা )

এতে প্রতিটি বিকাশকারী বা উপ-টিমের নিজস্ব সংগ্রহস্থলের কাঁটা রয়েছে যা তারা বিটবাকেট থেকে চেক আউট করে এটির জন্য একটি ব্যবস্থা সরবরাহ করে, ডিফল্ট দূরবর্তী ছাড়াও একটি "আপস্ট্রিম" উত্স নির্ধারণ করে - তাদের "আপস্ট্রিম আনতে" মনে রাখতে হবে "এবং" নিয়মিত ভিত্তিতে রিমোট / আপস্ট्रीम / মাস্টার "মার্জ করুন।

এটি সম্ভবত আপনার বিল্ড মেকানিজম সমস্যাগুলি সমাধান করবে কারণ বিল্ড সরঞ্জামগুলি সম্ভবত কোনও ভিন্ন প্রকল্পে অর্থাত্ কাঁটাচামচকে নির্দেশ করে।

তারপরে আপনি বেশিরভাগ লোকের কাছ থেকে সরাসরি মাস্টার প্রকল্পের দিকে ধাক্কা দেওয়ার ক্ষমতাটি সরিয়ে ফেলতে পারেন এবং পর্যালোচনা ও ভূমিকা অনুমোদনের একটি ছোট্ট দল তৈরি করতে পারেন। Https://www.atlassian.com/git/tutorials/making-a-pull-request দেখুন

হুকসের গিট বই বিভাগে ধাক্কা দেওয়ার আগে যে কোনও পছন্দসই চেক করা হবে তা নিশ্চিত করার বিষয়ে পড়ার জায়গাটি - https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks - আপনি কাজটি কার্যকর কিনা তা নিশ্চিত করার জন্য প্রস্তাবিত প্রতিশ্রুতিবদ্ধতার উপর কিছু পরীক্ষা চালানো যেমন প্রি-কমিট এবং প্রি-পুশ হুক ব্যবহার করতে পারেন - ক্লায়েন্ট সাইড হুকগুলির মধ্যে একমাত্র সমস্যাটি হ'ল ডেভেলপাররা সেগুলি অক্ষম করতে বা সক্ষম করতে ব্যর্থ হতে পারে তাদের।

উভয় প্রবাহের আনয়ন / সংযুক্তি এবং হুকগুলি টরটোইজগিতে উপলব্ধ।


আসলেই খারাপ ধারণা নয়। এটি আরও শোনাচ্ছে যে এই দলটি আরও আরামদায়ক না হওয়া অবধি কোনও মার্জ মাস্টারের কাছ থেকে উপকৃত হবে। +1
গ্রেগ বার্গার্ড্ট

2
বিটবকেটে একটি কাঁটাচামচ সিঙ্কিং বৈশিষ্ট্য রয়েছে যা সম্ভব হলে স্বয়ংক্রিয়ভাবে কাঁটাচামচ ফরোয়ার্ড করে। এটি আজই কাঁটাচামচ করা এবং প্রবাহের বিষয়ে চিন্তা না করে পরের সপ্তাহে উত্স থেকে টানতে খুব সুবিধাজনক।
পিডার

3

এটি পাল্টা শব্দ শোনাচ্ছে, তবে আমাকে শুনুন:

গিটের সাথে পরীক্ষা শুরু করতে তাদের উত্সাহিত করুন

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

স্টাফ চেষ্টা করার ভয় গিট শিখতে সবচেয়ে বড় বাধা। এটা আপনি দেয় তাই সবকিছু যে এটা কোন ধরনের কঠিন এর উপর অনেক নিয়ন্ত্রণ। বাস্তবতাটি হ'ল আপনি আপনার বেশিরভাগ দৈনিক ব্যবহারের জন্য কয়েকটি খুব সুরক্ষিত অপারেশনগুলিতে আটকে রাখতে পারেন, তবে কোনটি আদেশ দেয় তা সন্ধান করতে কিছু অন্বেষণ করতে হবে।

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

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

গিটের ইনস এবং আউটস শিখতে তাদের নিরুৎসাহিত করা বন্ধ করুন

আমি কোনও বিষয়কে ধাক্কা না দেওয়ার কথা উল্লেখ করেছি, যা আপনি তাদের শেখাচ্ছেন এমন একটিগুলির বিরুদ্ধে যায়: সর্বদা "প্রতিশ্রুতিবদ্ধ এবং পুশ"। আমার বিশ্বাস আপনি তাদের এটি করতে বলা বন্ধ করুন এবং তাদের বিপরীত কাজ শুরু করতে বলুন। গিটের মূলত 5 টি "জায়গা" রয়েছে যেখানে আপনার পরিবর্তনগুলি হতে পারে:

  • ডিস্কে, নিঃশর্ত
  • স্থির কিন্তু প্রতিশ্রুতিবদ্ধ না
  • একটি স্থানীয় প্রতিশ্রুতি
  • একটি স্থানীয় স্ট্যাশ
  • রিমোট রিপোজিটরিগুলি (কেবলমাত্র কমিট এবং ট্যাগগুলি বিভিন্ন ধরণের সংগ্রহের মাঝে ধাক্কা দেয় এবং টানা থাকে)

একক পদক্ষেপে সবকিছু টানতে এবং ধাক্কা দেওয়ার জন্য তাদের উত্সাহিত করার পরিবর্তে, এই 5 টি পৃথক স্থানে লিভারেজ করার জন্য তাদের উত্সাহিত করুন। তাদেরকে উত্সাহিত করুন:

  • তারা কিছু করার আগে পরিবর্তন আনুন।
  • আনীত পরিবর্তনগুলি কীভাবে পরিচালনা করবেন তা সিদ্ধান্ত নিন । বিকল্পগুলি হ'ল:

    • তাদের স্থানীয় পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন, তারপরে তাদের এনে দেওয়া পরিবর্তনগুলির উপরে পুনরায় শোধ করুন।
    • তাদের স্থানীয় পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন এবং তারপরে প্রাপ্ত পরিবর্তনগুলির সাথে একত্রিত করুন।
    • তাদের পরিবর্তনগুলি স্ট্যাশ করুন, মার্জ করুন এবং তারপরে স্ট্যাশ করুন এবং কোনও বিবাদ সমাধান করুন।

      অন্য জিনিস আছে, কিন্তু আমি এটি এখানে পাবেন না। মনে রাখবেন যে একটি টান আক্ষরিকভাবে কেবল একটি আনয়ন এবং একত্রীকরণ। এটি তাদের মতো নয় ; এটা হল তাদের। (পাসিং --rebaseপরিবর্তনগুলি আনতে + আনা + পুনর্বাসনে একীভূতকরণ থেকে টানুন))

  • তাদের পরিবর্তনগুলি পর্যায় দিন এবং তারপরে তাদের পর্যালোচনা করুন।
  • তাদের পর্যায়ের পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন এবং তারপরে প্রতিশ্রুতিটি পর্যালোচনা করুন।
  • পৃথকভাবে ধাক্কা।

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

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

এটি আসলে SVN উপর Git বিরাট বেনিফিট এক, এবং Git হয় পরিকল্পিত মনের মধ্যে এই ব্যবহার প্যাটার্ন সঙ্গে। বিপরীতে এসভিএন একটি কেন্দ্রীয় সংগ্রহস্থল ধরেছে, তাই গিটের জন্য সরঞ্জামটি একই কর্মপ্রবাহের জন্য অনুকূলিত না হলে এটি আশ্চর্যজনক নয়। এসভিএন-তে, যদি আপনার প্রতিশ্রুতি ভুল হয়, তবে আপনার একমাত্র আসল পথটি ভুলটিকে পূর্বাবস্থায় ফিরিয়ে আনার জন্য নতুন প্রতিশ্রুতি।

এটি করার ফলে স্বাভাবিকভাবেই পরবর্তী কৌশলটি পৌঁছে যাবে:

তাদের স্থানীয় শাখা ব্যবহার করতে উত্সাহিত করুন

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

  • আমি আমার স্থানীয় শাখাটি পুনরায় চালু করতে পারি, যা এটিকে মাস্টার তুচ্ছ হিসাবে মিশে যায়।
  • আমি আমার স্থানীয় শাখার পরিবর্তনগুলিতে এটি আনতে মাস্টারটিতে একটি সরল মার্জ (একটি নতুন প্রতিশ্রুতি তৈরি করতে) ব্যবহার করতে পারি।
  • আমি যদি মনে করি আমার শাখাটি উদ্ধার করতে খুব বেশি গণ্ডগোল করে তবে আমি স্কোয়াশকে আমার সম্পূর্ণ স্থানীয় শাখাকে মাস্টার সম্পর্কে একক প্রতিশ্রুতিতে মার্জ করতে পারি।

স্থানীয় শাখাগুলি ব্যবহার পদ্ধতিগত শাখার কৌশলটি খুঁজে বের করার জন্যও একটি ভাল শুরু start এটি আপনার ব্যবহারকারীদের তাদের নিজস্ব শাখা প্রশস্তকরণের আরও ভাল বোঝার জন্য সহায়তা করে, সুতরাং আপনি প্রয়োজন এবং দলের বর্তমান বোঝাপড়া / দক্ষতার স্তরগুলির উপর ভিত্তি করে একটি কৌশল বেছে নিতে পারেন এবং কেবল গিটফ্লোতে বাদ পড়বেন না কারণ প্রত্যেকে এটি শুনেছে।

সারাংশ

সংক্ষেপে, গিটটি এসভিএন নয় এবং এর মতো চিকিত্সা করা যায় না। তোমার দরকার:

  • নিরাপদ प्रयोगকে উত্সাহিত করে ভয়কে নির্মূল করুন।
  • গিট কীভাবে আলাদা তা বুঝতে তাদের সহায়তা করুন যাতে তারা কীভাবে তাদের স্বাভাবিক কর্মপ্রবাহকে পরিবর্তন করে তা দেখতে পারে।
  • তাদের সমস্যাগুলি আরও সহজে সমাধান করতে সহায়তা করার জন্য উপলব্ধ বৈশিষ্ট্যগুলি বুঝতে তাদের সহায়তা করুন।

এটি সমস্ত আপনি ধীরে ধীরে আরও ভাল গিট ব্যবহার অবলম্বন করতে সহায়তা করবে , যতক্ষণ না আপনি এমন কোনও পর্যায়ে পৌঁছাবেন যেখানে আপনি মান নির্ধারণের সেটটি প্রয়োগ করতে শুরু করতে পারেন।

বিশেষ বৈশিষ্ট্যগুলো

তাত্ক্ষণিক শব্দটিতে নিম্নলিখিত ধারণাগুলি সহায়তা করতে পারে।

রি-বেসের ফলে

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

merge.ff=only

এটি একটি ব্যক্তিগত স্বাদের বিষয় হতে চলেছে, তবে আমি অন্তত অস্থায়ীভাবে এটির প্রস্তাব দিচ্ছি যেহেতু আপনি উল্লেখ করেছেন যে আপনি ইতিমধ্যে দ্বন্দ্ব পরিচালনার ক্ষেত্রে সমস্যায় পড়েছেন। আমি এটিকে সেট merge.ffকরারonly পরামর্শ দিচ্ছি :

git config --global merge.ff only

"ff" এর অর্থ "দ্রুত এগিয়ে" forward গিটারটি যখন বিভিন্ন কমিট থেকে পরিবর্তনগুলি একত্রিত করার প্রয়োজন হয় না তখন একটি দ্রুত এগিয়ে ফেলা মার্জ হয়। এটি কেবল শাখার পয়েন্টারটিকে গ্রাফের সরলরেখার সাথে একটি নতুন অঙ্গীকারের দিকে নিয়ে যায় moves

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

এটি ব্যবহারকারীদের একীভূত করার চেষ্টা করার আগে বিভিন্ন কমিটগুলি পর্যালোচনা করার সুযোগ দেয় এবং কীভাবে তাদের সংমিশ্রণকে সর্বোত্তমভাবে পরিচালনা করতে হয় সে সম্পর্কে সিদ্ধান্ত নিতে বাধ্য করে। আমি রিবেস করতে পারি, একত্রীকরণ ( git merge --no-ffকনফিগারেশনটি বাইপাস ব্যবহার করে ) দিয়ে এগিয়ে যেতে পারি, বা আমার আপাতত আমার পরিবর্তনগুলি মার্জ করে দেওয়া এবং পরে এটি পরিচালনা করতে পারি handle আমি মনে করি এই ছোট গতির দ্বিধা আপনার দলটিকে মার্জ সম্পর্কে ভুল সিদ্ধান্ত নিতে এড়াতে সহায়তা করবে। মার্জগুলি পরিচালনা করার ক্ষেত্রে আপনার দলটি একবারে এটি বন্ধ করে দিতে পারেন।


2

আমি আমার সংস্থায় ঠিক একই এসভিএন -> গিট অভিজ্ঞতা দিয়েছি এবং আমার অভিজ্ঞতা থেকে একমাত্র প্রতিকার সময়। লোকগুলিকে সরঞ্জামগুলিতে অভ্যস্ত হতে দিন, তাদের ভুল করতে দিন, কীভাবে এটি ঠিক করবেন তা তাদের দেখান। আপনার বেগটি কিছু সময়ের জন্য ক্ষতিগ্রস্থ হবে এবং লোকেরা কাজ হারাবে এবং প্রত্যেকে কিছুটা চাঞ্চল্যকর হবে তবে এটি আপনার ভিসিএসের মতো মৌলিক কিছু পরিবর্তনের প্রকৃতি।

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

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

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


1

ঠিক আছে, সম্প্রতি আমি নীচের ওয়ার্কফ্লোটি কখনই মাস্টার ব্রাঞ্চে f * সি কে আপ করতে মানিয়ে নিলাম:

1) প্রত্যেকে নিজের নিজস্ব শাখা ব্যবহার করে যা মূলত মাস্টার শাখার অনুলিপি।

আসুন মাস্টার শাখাটির নাম "মাস্টার", এবং আমার নিজস্ব শাখা "মাই_মাস্টার"।

আমি কেবল মাস্টার থেকে আমার শাখা তৈরি করেছি, তাই এটি ঠিক একই। আমি আমার নিজস্ব শাখায় একটি নতুন বৈশিষ্ট্যটিতে কাজ শুরু করি এবং এটি শেষ হয়ে গেলে আমি নিম্নলিখিতটি করি।

আমার শাখায় কৌতূহলী, সবে কোডিং শেষ

git add . && git commit -m "Message" && git push

মাস্টার শাখায় ফিরে যান

git checkout master

আপ টু ডেট না হলে টানুন

git pull

আমার নিজস্ব শাখায় ফিরে যান

git checkout my_master

সর্বশেষতম মাস্টারকে আমার নিজস্ব শাখায় মার্জ করুন

git merge master

বিবাদ এবং মার্জগুলি ঠিক করুন

আবার সব কিছু পরীক্ষা করে দেখুন

যখন আমার নিজস্ব শাখায় সবকিছু একত্রীকরণ করা এবং ঠিক করা হয়, তখন এটি টিপুন

git push

মাস্টার শাখায় ফিরে যান

git checkout master

আমার শাখায় মার্জ করুন

git merge my_master

পূর্ববর্তী সংশ্লেষের সাথে আপনার নিজস্ব শাখায় সংঘাতের কারণে বিরোধগুলি হওয়া অসম্ভব

পুশ কর্তা

git push

সবাই যদি এটি অনুসরণ করে তবে মাস্টার শাখাটি পরিষ্কার হবে।


0

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

হ্যাঁ, এর অর্থ সবাই মাস্টার নিয়ে কাজ করে। এটি এতটা খারাপ নয়; এবং টিএফএস বা এসভিএন-তে ব্যবহৃত একটি দল এটিকে সবচেয়ে প্রাকৃতিক বলে মনে করবে।

এটিকে যতটা সম্ভব বেদনাবিহীন করার সাধারণ পদ্ধতি:

  1. কি git stash && git pull --rebase && git stash popরোজ সকালে
  2. তাড়াতাড়ি এবং প্রায়শই প্রতিশ্রুতিবদ্ধ (তাত্ক্ষণিকভাবে ধাক্কা দেওয়ার দরকার নেই; আমরা কমপক্ষে গিটের এই সুবিধা নেওয়া শুরু করতে পারি)
  3. নিম্নলিখিত লুপটি চাপ দেওয়ার জন্য:

    git add git commit git pull --rebase fix any merges compile git push loop until you don't get the can't fast forward error message.


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

@ মাস্টার: আমাদের জন্য # 1 গিটের সুবিধাটি ছিল সার্ভারের ক্ষতি হ'ল পুরো উত্স নিয়ন্ত্রণের ইতিহাস হারাবে না। (এটি আমাদের কাছে ঘটেছিল - আমাদের ব্যাকআপ ছিল তবে টেপ ড্রাইভটি পুনরুদ্ধার করার চেষ্টা করার সময় টেপগুলি খেতে শুরু করে))
জোশুয়া

@ মাস্টার: আমরা তখন থেকে আরও কিছু দরকারী গিট বৈশিষ্ট্য প্রবর্তন শুরু করেছি, তবে পরিবর্তিত ব্রাঞ্চিং সম্ভবত ব্যবহার করা হবে না।
জোশুয়া

@ কাস্টমার আস্তে আস্তে গাড়ি চালানো এবং ঘোড়ায় চড়ার মধ্যে পার্থক্য হ'ল গাড়ি চালানো আপনাকে দ্রুত গাড়ি চালানোর জন্য প্রস্তুত করে। ঘোড়ায় চড়ে না। যারা গাড়ীতে চড়েন তাদের প্রত্যেককে প্রথমে কয়েকবার 60 মাইল প্রতি ঘণ্টায় যাওয়ার জন্য গ্যাসটি চাপতে হবে না।
jpmc26

@ jpmc26 যখন আমি প্রথম ড্রাইভিং পাঠ গ্রহণ করি, আমাকে অবশ্যই নিশ্চিতভাবে 30 কিলোমিটার / ঘন্টা চালনা করতে বলা হয়েছিল এবং আমি বিশ্বাস করি যে এই পাঠটিতে 50 কিলোমিটার / ঘণ্টায় একটি স্বল্প দূরত্বও অন্তর্ভুক্ত ছিল। এটি অবশ্যই সাধারণ ঘোড়ার গাড়ীর চেয়ে বেশি। এবং একই জন্য যায় git: আপনি সাধারণত প্রথম দিন থেকেই কাঁটাচামচ এবং মার্জ করতে শিখেন। এটি ব্যবহারের একটি অবিচ্ছেদ্য অঙ্গ git। এটি এড়ান এবং আপনি 15 কিলোমিটার / ঘন্টার বেশি না যেতে গিয়ে গাড়ীটিকে যেমন গালি দিচ্ছেন ঠিক তেমনভাবে আপনি সরঞ্জামটিকে গালাগাল করছেন।
11:54

-3

প্রত্যেকে যদি মাস্টার নিয়ে কাজ করে থাকে তবে কিছুই করার মতো কিছুই নেই। বিষয়গুলি অনিবার্যভাবে জড়িয়ে যাবে।

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

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

আপনি কোনও ব্যথা ছাড়াই এই কাজটি করতে উদাহরণস্বরূপ সোর্সট্রি ব্যবহার করতে পারেন।


4
এটি কেবল "মাস্টার" কে "বিকাশ" দিয়ে প্রতিস্থাপন করছে, ডিফল্ট চেকআউটের পরে লোকেরা উন্নয়ন শাখায় স্যুইচ না করার অতিরিক্ত ঝুঁকির সাথে। আমি পছন্দ GitLab ফ্লো , যা ভারী GitFlow এবং বিক্ষিপ্ত GitHub ফ্লো মধ্যে একটি সুখী মাধ্যম।
সিইস টিমারম্যান

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