যখন কোনও প্রতিশ্রুতি ক্রম-অগ্রগতিতে হঠাৎ উপস্থিত হয় না এমন অন্যটির উপর নির্ভর করে যখন এটি হ্যান্ডেল করবেন কীভাবে?


13

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

আমি যখন কোড করি তখন প্রাকৃতিকভাবে কিছু উপরে-ডাউন পদ্ধতির থাকে (যেহেতু আমি ভবিষ্যতটি জানতে পারি না) এবং একটি পুনর্বিবেচিত থিম রয়েছে:

আমি কিছু কাজ করি।
আমি খুঁজে পেয়েছি যে আমার কাজকে কিছুটা "কমিটমেন্টেবল" করার জন্য আমার অন্যান্য কাজ করা দরকার।
অন্যান্য কাজ এটি নিজস্ব প্রতিশ্রুতি প্রাপ্য।

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

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


1
আমি প্রায়শই একই পরিস্থিতিতে নিজেকে খুঁজে পাই, সাধারণত গ্রন্থাগার এবং কনফিগারেশন যুক্ত করার সময়। আমি কেবল git statusসমস্ত পরিবর্তিত ফাইলগুলি দেখতে ব্যবহার করেছি git addএবং নির্দিষ্ট ফাইলগুলি (পরিবর্তে git add --all) ব্যবহার করে এবং টুকরো টুকরো করে প্রতিশ্রুতিবদ্ধ করে দু'একটি বা আরও কমিট করেছিলাম ।
ক্রিস সাইরেফাইস

আপনি ফাইলগুলির অংশগুলি নির্বাচন করতে পারেন git add -pএবং তারপরে কেবলমাত্র সেই অংশগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন। এটি একটি খুব শক্তিশালী কৌশল এবং আমি প্রায় সব সময় এটি ব্যবহার করি।
eush77

উত্তর:


17

এটি সমাধানের একাধিক উপায় রয়েছে।

আপনি যদি আপনার বর্তমান পরিবর্তনের সাথে হস্তক্ষেপ না করে প্রথম প্রতিশ্রুতিবদ্ধতার জন্য পরিবর্তনগুলি করতে চান তবে আপনি ব্যবহার করতে পারেন git stash। এটি আপনার সমস্ত উন্মুক্ত পরিবর্তনগুলি দূরে রাখবে, আপনাকে সেগুলি পরে পুনরুদ্ধার করার অনুমতি দেবে। git statusতারা আর উপস্থিত নেই তা দেখতে ব্যবহার করুন । আপনি যেমন অভ্যস্ত তেমন প্রথম প্রতিশ্রুতি তৈরি করুন। এর পরে আপনি git stash popআপনার প্রাথমিক পরিবর্তনগুলি পুনরুদ্ধার করতে এবং আপনার প্রাথমিক কাজটি করে দ্বিতীয় প্রতিশ্রুতি তৈরি করতে ব্যবহার করতে পারেন ।

আর একটি উপায় হ'ল সমস্ত প্রয়োজনীয় পরিবর্তনগুলি করা এবং তারপরে দু'টি কমিট তৈরি করা, উভয়ই আপনার কাজের একটি অংশ থাকে। এটি করতে আপনি গিট দ্বারা সরবরাহিত সূচকটি (মঞ্চ অঞ্চল হিসাবেও পরিচিত) ব্যবহার করতে পারেন। এটি একটি বিশেষ ক্ষেত্র যা আপনি কমিটগুলি প্রস্তুত করতে ব্যবহার করতে পারেন। ধরে নিই যে আপনি একাধিক ফাইল পরিবর্তন করেছেন, আপনি তাদের প্রত্যেককে ব্যবহার করে সূচীতে যুক্ত করতে পারেন git add। যখন git commitকেবল সূচীতে যুক্ত ফাইলগুলি প্রতিশ্রুতিবদ্ধ হবে। git statusআপনার পরিবর্তনগুলির কোন অংশ প্রতিশ্রুতিবদ্ধ হবে এবং কোনটি হবে না তা আপনাকে দেখায়। উদাহরণস্বরূপ এটি a.txt, b.txt এবং c.txt ফাইল পরিবর্তন করার পরে এইভাবে দেখাবে git add a.txt:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   a.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   b.txt
        modified:   c.txt

আপনি যখন git commitএই অবস্থায় করছেন তখন কেবলমাত্র a.txt এ পরিবর্তনগুলি আপনার প্রতিশ্রুতিতে যুক্ত হবে।

অতিরিক্ত আপনি ব্যবহার করে প্রতিশ্রুতিবদ্ধ হওয়া সঠিক পরিবর্তনগুলি পর্যালোচনা করতে পারেন git diff --cached, যা আপনাকে প্রতিশ্রুতিবদ্ধ হতে চলেছে এমন সমস্ত পরিবর্তনের থেকে আলাদা দেখায়।

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

আপনি যদি মঞ্চের স্থান সম্পর্কে আরও জানতে চান তবে আপনি এটি পড়তে চাইতে পারেন: http://gitready.com/beginner/2009/01/18/the-stasing-area.html

আপনি এখানে ইন্টারেক্টিভ যুক্ত সম্পর্কে আরও পড়তে চাইতে পারেন: http://nuclearsquid.com/writings/git-add/


5

আপনি যদি গিটের জন্য জিইউআই ব্যবহার করেন, যেমন আটলাশিয়ান দ্বারা উত্সট্রি, বা git gui, আপনি ফাইলের কিছু অংশ প্রতিশ্রুতিবদ্ধ করতে পারেন এবং অন্যান্য অংশগুলিকে বিনা অনুমতিতে রেখে যেতে পারেন। আসলে, আপনি কোডের পৃথক লাইনগুলিকে প্রতিশ্রুতিবদ্ধ করতে পারেন।

আপনার বর্ণনার মতো খরগোশের ছিদ্র পড়ে গেলে আমি প্রায়শই এটি করি। এটি বোধগম্য প্রতিশ্রুতিবদ্ধ করার একটি দুর্দান্ত উপায় বা মূল প্রতিশ্রুতির পূর্বসূর হিসাবে প্রতিশ্রুতিবদ্ধ।

আপনি কমান্ড লাইন থেকে এটি করতে পারেন, তবে এটি একধরণের আনাড়ি।

আপনি যখন গিট প্যাচ স্তর এবং স্বতন্ত্র লাইনে প্রতিশ্রুতিবদ্ধ করতে পারেন তখন আপনাকে নতুন শাখা তৈরি, স্ট্যাশ, কমিট, স্ট্যাশ এবং মার্জ করার দরকার নেই। শুধু কাজ চালিয়ে যান এবং প্রবাহ ভঙ্গ করবেন না। আপনি একটি ভাল জিনিস যাচ্ছে।


@ মাস্টারমাস্টিক এটি আপনার গ্রহণযোগ্য উত্তর হওয়া উচিত। কোডের স্বতন্ত্র লাইনের প্রতিশ্রুতিবদ্ধ করতে সক্ষম হওয়া হ'ল একটি ফ্র্যাকিং গডসেন্ড।
জেসিটিজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.