আমার প্রকল্পের চলমান পরিবর্তনগুলি সংরক্ষণ করার জন্য আমার কি গিট স্ট্যাশ ব্যবহার করা উচিত এবং অন্যান্য কম্পিউটারগুলিতে অ্যাক্সেস পাওয়ার জন্য গিথুবকে এটি চাপানো উচিত?


20

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

আমি গিটহাব রিমোট ট্র্যাকিংয়ের সাথে ক্লাউড সিঙ্কিং (উদাহরণস্বরূপ ড্রপবক্স) মিশাতে চাই না।

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

আজ, যদিও আমি git stashগুগলিং পরে কিছুটা পেরিয়ে এসেছি । এটি আমার যা প্রয়োজন তার নিখুঁত সমাধান হিসাবে মনে হচ্ছে।

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

আগাম ধন্যবাদ!


1
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ এটি ইতিমধ্যে স্ট্যাক ওভারফ্লোতে
ডেভিড আরনো

5
@ ডেভিড আর্নো: আমি মনে করি এটি ক্রস সাইটের সদৃশ নয়। স্ট্যাকওভারফ্লো প্রশ্নটি "ক্যান আমি এক্স করতে পারি" এবং এটি "ইস এক্স একটি ভাল অনুশীলন" সম্পর্কে। খুব অল্প সময়ে প্রশ্নের মূল কারণটি আলাদা।
গ্রেগ বার্গার্ট

7
@ ডেভিড আরনো সর্বশেষ আমি যাচাই করেছিলাম, "ইতিমধ্যে এসও তে জবাব দেওয়া" কোনও প্রশ্ন বন্ধ করার কারণ নয়।
রাবারডাক

উত্তর:


28

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

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

যদি এই বিষয় শাখাটি কেবল আপনার জন্য বোঝানো হয়, প্রতিশ্রুতিবদ্ধ এবং ভাঙ্গা কোডটি পুশ করুন। আপনার কেবলমাত্র ভাঙা কোডটি এমন শাখায় ঠেলে দেওয়া উচিত যা অন্য লোকেরা ব্যবহার করে। আপনার নিজের কোড ভঙ্গ করতে নির্দ্বিধায়


6
আমি এমনকি এটি আরও শক্তিশালী বলতে চাই: মাস্টার শাখায় কখনও কাজ করবেন না , সর্বদা একটি বিষয় শাখা ব্যবহার করুন। আপনি উপযুক্ত হিসাবে এটি প্রতিশ্রুতিবদ্ধ, নির্ভীকভাবে এটি ঠেলাঠেলি। আপনি যখন পরিবর্তনগুলি নিয়ে খুশি হন, তখন এটি মাস্টারটিতে মার্জ করুন।
9: 15

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


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

7

স্ট্যাশগুলি স্থানীয় ব্যবহারের উদ্দেশ্যে তৈরি করা হয়, যখন আপনি শাখাগুলি দিয়ে ঘাটতি করেন তখন জিনিসগুলি রাখার অস্থায়ী জায়গা হিসাবে।

আপনি যদি কেবলমাত্র একটি শাখায় কাজ করছেন তবে ভাঙা কোড করার কোনও সমস্যা নেই। অনুরূপ পরিস্থিতিতে যখন আমি যা করি তা একটি ভাঙ্গা প্রতিশ্রুতি হয়, তারপরে এটিকে অন্য স্থানে টানানোর পরে, git reset HEAD~1এটিকে পূর্বাবস্থায় ফেরাতে একটি চেষ্টা করুন। অবশ্যই, --forceআপনার pullsএবং pushesযখন আপনি অবস্থানগুলি পরিবর্তন করেন এটির জন্য প্রয়োজন ।

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


1
যদিও অভ্যস্ত হওয়ার পরামর্শ দিচ্ছি না --amendতাই এটি পুশ করার --forceজন্য প্রয়োজন । কেবল একটি নিক্ষিপ্ত শাখায় প্রতিশ্রুতিবদ্ধ আরও ভাল।
leftaroundabout

1

stash"আপনার শাখা আনমাম" করার জন্য আপনার কাজের ডিরেক্টরি পরিষ্কার করা ছাড়া কোনও কিছুর জন্য সত্যই সন্তোষজনক নয়; আপনি যদি তাত্ক্ষণিকভাবে stash popরাষ্ট্রটিকে ফিরে না পান তবে জিনিসগুলি খুব বিভ্রান্ত হবে।

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

  1. আপনি যখন কিছু অসম্পূর্ণ কাজ করেছেন এবং কর্মক্ষেত্র ছেড়ে চলে যাচ্ছেন, তখন সম্পাদন করুন git-tmp-commit। এটি স্বয়ংক্রিয়ভাবে একটি নতুন, অনন্য শাখায় সমস্ত পরিবর্তন করে দেবে।
  2. এই শাখাটি রিমোটে চাপুন।
  3. ছেড়ে দিন।
  4. আপনি চালিয়ে যেতে চাইলে দূর থেকে আবার সেই শাখাটি ক্লোন করুন। আমি ccdস্ক্রিপ্টটি দিয়ে এটি করি , যা স্ক্র্যাচ থেকে অস্থায়ী ফোল্ডারে সমস্ত কিছু যাচাই করে , স্বয়ংক্রিয়ভাবে সর্বাধিক সাম্প্রতিক শাখাটি নির্বাচন করে ... তবে আপনি কেবল ম্যানুয়ালি temporary-commits/original-branch/YYYY-MM-DD...রেপোর একটি বিদ্যমান ক্লোন থেকে শাখাটি আনতে এবং চেকআউট করতে পারেন ।
  5. অবশেষে, এর সাথে পরিবর্তনগুলি "আন-কমিট" করুন git-tmp-commit -r। এটি আপনাকে মূল শাখায় ফিরিয়ে আনবে (উদাঃ master) এবং কাজের ডিরেক্টরিতে অস্থায়ী প্রতিশ্রুতিবদ্ধতার পরিবর্তনগুলি ছেড়ে দেবে, যাতে সঠিক প্রতিশ্রুতি নেওয়ার সময় না হওয়া পর্যন্ত আপনি এখানে চালিয়ে যেতে পারেন (বা অস্থায়ী, যদি আপনাকে আবার ছেড়ে যেতে হয়)।

Now স্ক্রিপ্টটি এখনই যেভাবে লেখা হয়েছে, চেকআউট রেপোতে কোনও শাখা masterনা থাকলে কেবল এটিই কাজ করে । সন্দেহ আছে তাই, আপনি করতে হবে git branch -d master; এটি অবশ্যই আদর্শ নয় ...

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