থেকে গীত এস সি এম বুক :
প্রায়শই, যখন আপনি আপনার প্রকল্পের অংশে কাজ করছেন, জিনিসগুলি অগোছালো অবস্থায় রয়েছে এবং আপনি অন্য কোনও কিছুতে কাজ করার জন্য শাখাগুলি স্যুইচ করতে চান। সমস্যাটি হল, আপনি অর্ধ-সম্পন্ন কাজের প্রতিশ্রুতিবদ্ধতাটি করতে চান না যাতে আপনি এই জায়গায় ফিরে যেতে পারেন। এই ইস্যুটির উত্তর হ'ল গিট স্ট্যাশ কমান্ড।
স্ট্যাশিং আপনার কার্যকরী ডিরেক্টরিটির নোংরা পরিস্থিতি গ্রহণ করে - এটি হ'ল আপনার সংশোধিত ট্র্যাক করা ফাইল এবং পর্যায়ক্রমে পরিবর্তনগুলি - এবং আপনি যে কোনও সময় আবেদন করতে পারবেন এমন অসম্পূর্ণ পরিবর্তনের একটি স্ট্যাকে এটি সংরক্ষণ করে।
এই বিবরণ দেওয়া, আমি বলব এটি একটি অ্যান্টি প্যাটার্ন। গিট স্ট্যাশের একটি অতি সরল সরল ব্যাখ্যাটি হ'ল এটি উত্স নিয়ন্ত্রণের "কাট এবং পেস্ট" Pas আপনি গিটের স্বাভাবিক শাখা প্রশাখার কর্মপ্রবাহের বাইরে একটি হোল্ডিং পেনের বাইরে এগুলি "স্ট্যাশ" রাখুন এবং তারপরে সেই পরিবর্তনগুলিকে কোনও পরবর্তী শাখায় পুনরায় প্রয়োগ করুন।
আরও কিছুটা পিছনে ফিরে যাওয়া, মাস্টারকে প্রতিশ্রুতিবদ্ধ করা এখানে বিরোধী নিদর্শন । শাখা ব্যবহার করুন। এটি তাদের জন্য ডিজাইন করা হয়েছিল।
এটি সত্যিই এই পর্যন্ত ফোটে:
আপনি প্রাচীরের মধ্যে একটি স্ক্রু হাতুড়ি করতে পারেন এবং এটি একটি ছবি ধরে রাখবে, তবে স্ক্রু ড্রাইভার ব্যবহার করা আপনার যা করা উচিত তা হল। যখন স্ক্রু ড্রাইভারটি ঠিক আপনার পাশে বসে থাকে তখন হাতুড়ি ব্যবহার করবেন না।
"ব্রোকন" কোড করার বিষয়ে
নীচের মতামত থাকাকালীন, আমি এই মতামতটি অভিজ্ঞতা থেকে এসেছি।
তাড়াতাড়ি প্রতিশ্রুতিবদ্ধ, এবং প্রায়শই প্রতিশ্রুতিবদ্ধ। যতটা ভাঙা কোড আপনি চান তেমন কমিট করুন। আপনি কোনও কিছু হ্যাক করার সময় আপনার স্থানীয় কমিট ইতিহাসকে "সেভ পয়েন্টস" হিসাবে দেখুন। একবার আপনি যৌক্তিক কাজটি শেষ করার পরে, একটি অঙ্গীকারবদ্ধ করুন। নিশ্চিত সবকিছু ভেঙ্গে পারে, কিন্তু যে বিষয়টি যতদিন না পর্যন্ত আপনি না যেমন না ধাক্কা ঐ হলেও ক্ষতি নেই। চাপ দেওয়ার আগে, পুনরায় চালু করুন এবং আপনার প্রতিশ্রুতিগুলি স্কোয়াশ করুন।
- নতুন শাখা তৈরি করুন
- হ্যাক হ্যাক হ্যাক
- ভাঙা কোড কমিট করুন
- কোডটি পোলিশ করুন এবং এটি কার্যকর করুন
- কাজের কোড কমিট করুন
- রিবেস এবং স্কোয়াশ
- পরীক্ষা
- পরীক্ষা পাস করার সময় ধাক্কা
ওপি- র জন্য, এই লিনাক্স কার্নাল বার্তা থ্রেডটি আগ্রহী হতে পারে, কারণ এটির মতো শোনাচ্ছে যে ওপি দলের কিছু সদস্য গিটকে একইভাবে ব্যবহার করছেন।
@ রিবাল্ড এডি নীচে একটি মন্তব্যে বলেছেন:
প্রথমত, স্ট্যাশ "ব্রাঞ্চিং ওয়ার্কফ্লো" এর বাইরে নয় কারণ হুডের নীচে স্ট্যাশ কেবল অন্য একটি শাখা।
(অনেকের ক্রোধের ঝুঁকিতে)
লিনাস বলেছেন:
"গিট স্ট্যাশ" দিয়ে আপনার একাধিক পৃথক স্ট্যাশেড জিনিস থাকতে পারে তবে সেগুলি একে অপরের সাথে সারি বাঁধা হয় না - এগুলি কেবল এলোমেলো স্বাধীন প্যাচ যা আপনি দূরে সরিয়ে রেখেছেন কারণ তারা কোনও সময়ে অসুবিধে হয়েছিল।
আমি কি মনে করি @ রিবল্ড এডি বলার চেষ্টা করছেন তা হ'ল git stash
আপনি কোনও বৈশিষ্ট্যযুক্ত শাখার ওয়ার্কফ্লোতে ব্যবহার করতে পারেন - এবং এটি সত্য। এটির ব্যবহারটি git stash
সমস্যা নয়। এটি মাস্টার প্রতিশ্রুতিবদ্ধ এবং ব্যবহারের সমন্বয় git stash
। এটি একটি বিরোধী নিদর্শন is
ব্যাখ্যা git rebase
@ রিবল্ড এডির মন্তব্য থেকে:
রিব্যাসিং অনেক বেশি অনুলিপি-পেস্ট করা এবং আরও খারাপ প্রতিশ্রুতিবদ্ধ ইতিহাস পরিবর্তন করে।
(জোর আমার)
কমিটের ইতিহাস পরিবর্তন করা কোনও খারাপ জিনিস নয়, যতক্ষণ না এটি স্থানীয় কমিটের ইতিহাস । আপনি যদি পূর্বাভাস দিয়ে থাকেন যে আপনি ইতিমধ্যে ধাক্কা দিয়েছিলেন তবে আপনি আপনার শাখাটি ব্যবহার করে অন্য কাউকে অনাথভাবে অনাথ করবেন। এইটা খারাপ.
এখন বলুন যে আপনি কোনও দিনের মধ্যে বেশ কয়েকটি কমিট করেছেন। কিছু কমিট ভাল ছিল। কিছু ... এত ভাল না। git rebase
আপনার করে স্কোয়াশিং সাথে কমান্ড একটি ভালো উপায় আপনার স্থানীয় কমিট ইতিহাস পরিষ্কার করতে হয়। সর্বজনীন শাখাগুলিতে একটি অঙ্গীকারবদ্ধ হয়ে একীভূত হওয়া ভাল কারণ এটি আপনার দলের ভাগ করা শাখাগুলির প্রতিশ্রুতিবদ্ধ ইতিহাস পরিষ্কার রাখে। প্রতারণার পরে, আপনি আবার পরীক্ষা করতে চাইবেন, তবে যদি পরীক্ষাগুলি পাস হয় তবে আপনি বেশ কয়েকটি নোংরা বদলে একটি পরিষ্কার প্রতিশ্রুতি দিতে পারেন।
ক্লিন কমিটের ইতিহাসে আরও একটি আকর্ষণীয় লিনাক্স কার্নেল থ্রেড রয়েছে ।
আবার, লিনাস থেকে:
আমি পরিষ্কার ইতিহাস চাই, তবে এর সত্যিকারের অর্থ (ক) পরিষ্কার এবং (খ) ইতিহাস।
লোকেরা তাদের ব্যক্তিগত গাছগুলি (তাদের নিজস্ব কাজ) পুনর্বাসিত করতে পারে (এবং সম্ভবত হওয়া উচিত )। এটি একটি পরিষ্কার । তবে অন্য লোকের কোড কখনও নয়। এটি একটি "ইতিহাস ধ্বংস"
সুতরাং ইতিহাস অংশ মোটামুটি সহজ। এখানে কেবল একটি প্রধান নিয়ম এবং একটি ছোটখাটো স্পষ্টতা:
আপনার কখনই অন্য ব্যক্তির ইতিহাস ধ্বংস করতে হবে না। আপনি অবশ্যই অন্য লোকদের করা কমিটকে রিবেস করবেন না। মূলত, যদি এটিতে আপনার সাইন-অফ না থাকে তবে এটি সীমাবদ্ধতার বাইরে: আপনি এটিকে পুনরায় শোধ করতে পারবেন না, কারণ এটি আপনার নয়।
লক্ষ্য করুন যে এটি সত্যই অন্যান্য ব্যক্তির ইতিহাস সম্পর্কিত , অন্য লোকের কোড সম্পর্কে নয় । যদি তারা আপনাকে ইমেলযুক্ত প্যাচ হিসাবে স্টাফ প্রেরণ করে এবং আপনি এটি "গিট এমএস-এস" দিয়ে প্রয়োগ করেন তবে এটি তাদের কোড, তবে এটি
আপনার ইতিহাস।
সুতরাং আপনি কোডটি লিখে না নিলেও আপনি "গিট রিবেস" জিনিসটির উপরে অবিচ্ছিন্ন থাকতে পারেন, যতক্ষণ না দায়বদ্ধতাটি নিজেই আপনার ব্যক্তিগত।
এই নিয়মের সামান্য স্পষ্টতা: একবার আপনি কোনও ইতিহাসে আপনার ইতিহাস প্রকাশ করলে অন্যান্য লোকেরা এটি ব্যবহার করতে পারে এবং তাই এখন এটি স্পষ্টভাবে আপনার ব্যক্তিগত ইতিহাস নয় ।
সুতরাং ছোটখাটো স্পষ্টতই এটি হ'ল এটি কেবল "আপনার প্রতিশ্রুতিবদ্ধ" নয়, এটি আপনার গাছের কাছে ব্যক্তিগতও রয়েছে, এবং আপনি এটিকে বাইরে বের করেননি এবং এখনও এটি ঘোষণা করেননি।
...
প্রথম নিয়মগুলি বেশ সুস্পষ্ট এবং সহজ যদিও এখন "পরিষ্কার" অংশটি কিছুটা সূক্ষ্ম:
আপনার নিজের ইতিহাসকে পঠনযোগ্য রাখুন
কিছু লোক প্রথমে তাদের মাথায় কাজ করে, এবং ভুল না করেই এটি করে। তবে এটি খুব বিরল, এবং আমাদের বাকিদের জন্য, আমরা আমাদের সমস্যাগুলি নিয়ে কাজ করার সময় "গিট রিবেস" ইত্যাদি ব্যবহার করি।
সুতরাং "গিট রিবেস" ভুল নয়। তবে এটি ঠিক তখনই যদি এটি আপনার খুব নিজস্ব ব্যক্তিগত গিট ট্রি হয়।
আপনার বাজে কথা প্রকাশ করবেন না।
এর অর্থ: আপনি যদি এখনও "গিট রিবেস" পর্যায়ে থাকেন তবে আপনি এটিকে তাড়িয়ে দেবেন না। যদি এটি প্রস্তুত না হয় তবে আপনি চারপাশে প্যাচগুলি প্রেরণ করুন বা প্রাইভেট গিট ট্রি ব্যবহার করুন (ঠিক "প্যাচ সিরিজের প্রতিস্থাপন" হিসাবে) যা আপনি জনসাধারণকে বড় কথা বলেন না।
(জোর আমার)
উপসংহার
শেষ পর্যন্ত, ওপিতে কিছু বিকাশকারী এটি করছেন:
git checkout master
(edit files)
git commit -am "..."
(edit files)
git stash
git pull
git stash (pop|apply)
এখানে দুটি সমস্যা রয়েছে:
- বিকাশকারীরা মাস্টার প্রতিশ্রুতিবদ্ধ হয়। অবিলম্বে এটি লক করুন। সত্যিই, এটি সবচেয়ে বড় সমস্যা।
- বিকাশকারীরা ক্রমাগত
git stash
এবং git pull
মাস্টার ব্যবহার করে যখন তাদের বৈশিষ্ট্য শাখা ব্যবহার করা উচিত।
গিটে আরও ভাল ওয়ার্কফ্লো থাকাকালীন git stash
- বিশেষত টান দেওয়ার আগে - ব্যবহার করার ক্ষেত্রে কোনও ভুল নেই butgit stash
তাদের git stash
একটি লাল হেরিং ব্যবহার । এটি সমস্যা নয়। মাস্টার প্রতিশ্রুতিবদ্ধ সমস্যা।