কোন পরিবর্তন এবং নতুন বার্তা প্রতিশ্রুতিবদ্ধ কিভাবে?


136

commitযদি ফাইলগুলিতে কোনও পরিবর্তন না করা হয় তবে আমি কীভাবে একটি নতুন তৈরি করতে এবং একটি নতুন বার্তা তৈরি করতে পারি?

কমিটের কোডটি (এসএএএ?) একই হবে বলে এটি কি সম্ভব নয়?

উত্তর:


167

এটি করার জন্য খুব কমই খুব ভাল কারণ রয়েছে তবে প্যারামিটারটি --allow-emptyখালি কমিটের জন্য (কোনও ফাইল পরিবর্তিত হয়নি) --allow-empty-messageখালি কমিট বার্তাগুলির বিপরীতে । আপনি অনলাইন ডকুমেন্টেশন টাইপ git help commitবা ভিজিট করে আরও পড়তে পারেন ।

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


সেখানে হয় কিছু কিছু কারণ আপনি কোন খালি কমিট (মন্তব্য কিছু একত্রিত) চাইতে পারেন:

  • একটি "ঘোষিত প্রতিশ্রুতিবদ্ধ" হিসাবে, পরীক্ষাগুলি বা লিন্ট ( রবার্ট বালিকির মাধ্যমে ) পাস করার বিষয়ে সত্যিকারের ডেটা সহ ড্যারিয়েশন বা ডকুমেন্টেশন ( ডেভিডনিসের মাধ্যমে ) যুক্ত করা।
  • gitনির্বিচারে পরিবর্তন ( ভেলাসের মাধ্যমে ) উত্পন্ন না করে কমান্ড পরীক্ষা করতে ।
  • gitolite( তটশের মাধ্যমে ) ব্যবহার করে মুছে ফেলা খালি ভাণ্ডার পুনরায় তৈরি করতে ।
  • নির্বিচারে একটি নতুন প্রতিশ্রুতি তৈরি করা, যেমন বিল্ড টুলিং ( ম্যাটলুমাসের মাধ্যমে ) পুনরায় ট্রিগার করার জন্য বা ব্যক্তিগত লগিং বা মেট্রিক্সের জন্য ( ডায়নামাইট্রাইডের মাধ্যমে ) তৈরি করা। তবে, একবার ভাবেন: আপনার শাখা / মার্জ কাঠামোর উপর নির্ভর করে কমিটস খুব দীর্ঘ সময়ের জন্য বেঁচে থাকতে পারে, সুতরাং "কেবল কিছুই করা হবে না" কৌশলটি অজ্ঞাতসারে অস্থায়ী কর্মপ্রবাহের নিদর্শনগুলির সাথে আপনার দলের সংগ্রহস্থলকে কলুষিত করতে পারে এবং কোডের সংশোধনগুলি পৃথক করা শক্ত করে তোলে ইফেমেরাল ক্রাফ্ট

প্রতিশ্রুতিবদ্ধ গাছের সাথে মেটাডেটা যুক্ত করার অন্যান্য কৌশলগুলির মধ্যে রয়েছে:

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

2
আমি গিট ফ্লো শাখার মডেলটি অনুসরণ করতে শুরু করেছি । যখন আপনি একটি করতে devশাখা ফর্ম masterএবং তারপর একটি featথেকে শাখা অবিলম্বে dev, featশাখা সৌন্দর্য থেকে আসা masterশাখা হিসেবে কিছু নেই পার্থক্য উপর কমিট devশাখা যা featশাখা থেকে আসে। আপনি যখন devশাখাটি প্রথম তৈরি করবেন তখন একটি শূন্য প্রতিশ্রুতি শাখাটি প্রতিষ্ঠায় সহায়তা করে devকারণ এটি তার নিজস্ব অনির্দিষ্টকালের জন্য স্থায়ী শাখা স্বাধীন master। সাধারণত আপনি যখন শাখাগুলি স্তর হিসাবে ব্যবহার করেন এবং একক প্রতিশ্রুতি থেকে দুটি স্তর তৈরি করেন তখন সাধারণত সহায়ক
Novice C

2
অন্য কারণ: আপনি যদি চাপ দেওয়ার আগে আপনার প্রতিশ্রুতিবদ্ধ বার্তার বাইরে গুরুত্বের কিছু বাদ commit --amendদেন তবে রিমোট যদি চাপ প্রয়োগের অনুমতি না দেয় তবে আপনি তা করতে পারবেন না । এইভাবে আপনি বিকাশকারীদের একটি পূর্ববর্তী অঙ্গীকারের সাথে চলে এমন একটি গুরুত্বপূর্ণ বার্তা দেখার অনুমতি দিতে পারবেন।
অ্যান্ডি জে

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

1
আমি কেবল এটি আমাদের প্রাক-কমিট হুককে ট্রিগার করতে ব্যবহার করেছি, যা ডেটাবেস স্ক্রিপ্ট করে। সুতরাং পরিবর্তনগুলি ছিল, স্ক্রিপ্টটি চলার আগে পর্যন্ত গিট এগুলি দেখতে পেত না। এটি অবশ্যই ম্যানুয়ালি চালাতে পারত তবে তারপরে স্ক্রিপ্টটি দু'বার চালানো হবে।
yoyodyn

1
গিথুব এবং গোগ হিসাবে গিট সার্ভারগুলিতে ইস্যু ট্র্যাকিং বিল্টিনের সাথে ইন্ট্যারাক্ট করার সময় খুব দরকারী।
সাইমন এফ

37

যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনি একটি খালি প্রতিশ্রুতিবদ্ধ করতে চান। সেক্ষেত্রে আপনার প্রয়োজন:

git commit --allow-empty

34

খালি একটি বার্তা দিয়ে প্রতিশ্রুতিবদ্ধ

git commit --allow-empty -m "Empty test commit"

খালি বার্তা দিয়ে খালি কমিট করুন

git commit --allow-empty --allow-empty-message

3

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


3

সম্ভবত আরও বোধগম্য বিকল্প হিসাবে, আপনি একটি টীকাযুক্ত ট্যাগ তৈরি করতে পারেন (একটি বার্তার সাথে একটি নামকৃত প্রতিশ্রুতি)। git tag -aবিকল্পটি দেখুন ।

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