গিট লেখক তারিখ কমিটডেট থেকে আলাদা কেন?


106

আমি আমার গিট লগগুলি সন্ধান করছি এবং দেখতে পাচ্ছি যে লেখক এবং কমিটিডেট আমার কিছু কমিটের জন্য কিছুটা আলাদা:

commit 3a5912f90dc5227f308e99f95152fbee2301c59a
Author:     <hidden>
AuthorDate: Fri Jun 15 10:57:22 2012 +0800
Commit:     <hidden>
CommitDate: Fri Jun 15 11:14:37 2012 +0800

লেখক এবং প্রতিশ্রুতিবদ্ধ আমি একই।

এটা কীভাবে হয়? আমি কয়েকদিন ধরে বিস্মিত হই

আরও রয়েছে (341 টির মধ্যে 17 টিতে ঘটে):

+------------------------------+-------------------------------+
| from_unixtime(authored_date) | from_unixtime(committed_date) |
+------------------------------+-------------------------------+
| 2012-06-15 10:57:22          | 2012-06-15 11:14:37           |
| 2012-06-15 14:39:54          | 2012-06-15 14:48:57           |
| 2012-06-19 12:28:21          | 2012-06-19 12:29:41           |
| 2012-06-21 18:16:25          | 2012-06-21 18:28:48           |
| 2012-06-26 17:30:54          | 2012-06-26 17:33:55           |
| 2012-07-13 11:41:43          | 2012-07-13 11:42:17           |
| 2012-07-13 11:56:02          | 2012-07-13 12:13:22           |
| 2012-07-13 12:05:09          | 2012-07-13 12:12:24           |
| 2012-07-12 18:38:49          | 2012-07-13 12:26:35           |
| 2012-07-13 11:00:47          | 2012-07-13 12:25:15           |
| 2012-07-16 14:10:54          | 2012-07-16 14:15:01           |
| 2012-07-13 12:56:51          | 2012-07-16 13:49:48           |
| 2012-07-16 14:10:54          | 2012-07-16 14:19:46           |
| 2012-07-24 16:05:05          | 2012-07-24 16:05:48           |
| 2012-07-24 17:42:58          | 2012-07-24 17:43:33           |
| 2012-07-24 17:42:58          | 2012-07-24 17:45:18           |
| 2012-07-26 16:55:40          | 2012-07-26 16:55:53           |
+------------------------------+-------------------------------+

হুঁ, শাখা মার্জ করার সময় এমনটি মনে হচ্ছে।
ফিশ মনিটর


এই দুটি ভিন্ন তারিখ থাকার একটি অপ্রত্যাশিত পার্শ্ব-প্রতিক্রিয়া: git logডিফল্টরূপে কেবল লেখক প্রতিশ্রুতি তারিখ দেখায়। কিন্তু যদি আপনি ব্যবহার --since, --until, --before, --after, আপেক্ষিক তারিখ, Git ব্যবহারসমূহ Committer তারিখ পরিবর্তে সঁপে দিচ্ছি git log --since="yesterday"প্রত্যাশিত ফলাফল দেখাবেন না পারে লেখক কমিট তারিখ থেকে ভিন্ন Committer তারিখ কমিট।
শেরিলহোমান 21

মার্জ হয়ে গেলে তারিখগুলি পরিবর্তন হতে পারে কিনা সে সম্পর্কে, মার্জটি কিছু অ-ডিফল্ট উপায়ে কনফিগার করা হয়েছে কিনা তা নির্ভর করে যা কমিটগুলি পরিবর্তন করে। উদাহরণস্বরূপ, git --squash mergeএটি কিছুটা সাধারণ মার্জ কৌশল যা কনফিগার করা যেতে পারে (যদিও এটি এখানে ব্যবহার করা হচ্ছে বলে মনে হচ্ছে না, এটি উদাহরণস্বরূপ উত্থাপিত হয়েছে)। এছাড়াও, যদি আইডিই বা গিট জিইউআইয়ের মাধ্যমে গিট ব্যবহার করা হয়, তবে সিএলআই-তে কনফিগারেশন / কার্যকারিতা উপস্থিত না থাকার সম্ভাবনা রয়েছে। আপনি যে
মার্জটি

উত্তর:


166

লেখক তারিখ নোট এই কমিট মূলত তৈরি করা হয়েছিল (অর্থাত যখন আপনি শেষ git commit)। ডক্স অনুসারে git commit, লেখকের তারিখটি --dateস্যুইচটি ব্যবহার করে ওভাররাইড করা যেতে পারে ।

কমিট তারিখ প্রত্যেক সময় কমিট উদাহরণস্বরূপ পরিবর্তিত হচ্ছে, যখন শাখা যেখানে কমিট অন্য শাখা (চালু হয় rebasing পরিবর্তিত পরার আরো )।

আপনি যদি প্রতিশ্রুতিবদ্ধ হন এবং প্যাচটিকে অন্য রেপোতে প্রয়োগ করার জন্য আপনার প্যাচটি অন্য কাউকে প্রেরণ করেন তবে একই ঘটনা ঘটতে পারে: লেখকের তারিখটি আপনার git commitতারিখ হবে, প্যাচটি প্রয়োগ হওয়ার পরে কমিটের তারিখটি সেই তারিখে সেট করা হবে অন্যান্য রেপো

আপনি যদি প্যাচটি দুটি সহকর্মীর কাছে প্রেরণ করেন তবে একজন লেখকের তারিখ হবে তবে দুটি পৃথক প্রতিশ্রুতিবদ্ধতার তারিখ থাকবে।

গিট বইতে এটিও উল্লেখ করা হয়েছে :

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


শাখা মার্জ করার সময় আমার মামলাটি ঘটবে?
ফিশ মনিটর

4
না। আমি বিশ্বাস করি যে তারিখটি SHA এর একটি অংশ, সুতরাং আপনি যদি এমন কিছু অপারেশন না করেন যা ইতিহাস পুনর্লিখনের মতো, যেমন অব্যাহতি দেয়, এটি পরিবর্তন করা উচিত নয়।
asmeurer

4
একটি চেরি-বাছাইয়ের পরে, সংশোধন করার পরে, বা পূর্বপুরুষদের প্রতিশোধ নেওয়ার পরে টাইমস্ট্যাম্পগুলি কীভাবে পরিবর্তিত হতে পারে সে সম্পর্কে আমাদের সংক্ষিপ্ত বিবরণ যথাযথভাবে প্রশংসিত হবে। সাথে খেলে git show -s --format="commit %cD author %aD" HEAD, মনে হবে, উদাহরণস্বরূপ, প্রতিশ্রুতি বার্তা সংশোধন করে git guiআপডেট উভয়ই, তবে git commit --amendকেবল প্রতিশ্রুতিবদ্ধ তারিখ আপডেট করে। অপরিহার্য
init_js

24

কোন প্রতিশ্রুতি লেখকের তারিখটি রিবেস / চেরি-পিক ইত্যাদি সংরক্ষণ করা হয় তবে কমিটের তারিখটি পরিবর্তন করা হয়।


কিছু প্রশ্ন কমিটিকে চেরি-বাছাই বা রিবেসিং নয়। তারা দেখতে অন্য একটি শাখা মার্জ করার মত।
ফিশ মনিটর

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