গিট ব্রাঞ্চকে ছাড় দেওয়ার সময় টাইমস্ট্যাম্পগুলি পরিবর্তন করুন


99

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

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

তাহলে আমি গিটকে কীভাবে রিবেসিংয়ের সময় নতুন টাইমস্ট্যাম্প তৈরি করতে বলব?


গিট 2.29 (কিউ 42020) এর সাথে, git rebase --rootবা এর -iসাথে --reset-author-dateকাজ করবে। দেখুন নিচের আমার উত্তর
VonC

উত্তর:


135
git rebase --ignore-date

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

4
হ্যাঁ, যদি ইন্টারঅ্যাক্টিভভাবে সম্পন্ন করা হয় তবে এটি কার্যকর হয়। তবে তারপরে - রিবেস হিসাবে সর্বদা - প্রথম প্রতিশ্রুতি প্রভাবিত হয় না।
তারেসিয়াস

4
@ মাইকেল ক্রেলিন-হ্যাকার: ডকুমেন্টেশন অনুসারে, --ignore-তারিখ
টিম

4
@ টিম মূল প্রতিশ্রুতির কোনও পিতা-মাতার নেই এবং আমি যখন এই প্রশ্নটি জিজ্ঞাসা করেছি তখন আমিও সেই প্রতিশ্রুতির তারিখটি পরিবর্তন করতে চেয়েছিলাম। এখন আমাদের আছে --root, যা এটি সম্ভব করে তোলে।
তারসিউস


28

আমার ক্ষেত্রে রিভিসিং টাইমস্ট্যাম্পগুলি কমিটডেট মান হিসাবে পরিবর্তিত করে, তাই গিটওয়েবে কয়েক মাস পুরানো কমিটস 4 দিনের পুরানো হিসাবে দেখানো হয়েছিল। আমি সঠিক তারিখ সহ শেষ প্রতিশ্রুতিটি পেয়েছি এবং করেছি:

$ git rebase --committer-date-is-author-date SHA

39
না এইটা না. আসলে, এটি ঠিক বিপরীত। দস্তাবেজগুলি থেকে git rebase: " এই পতাকাগুলি git amপ্রত্যাবর্তিত প্রতিশ্রুতিগুলির তারিখগুলি সহজেই পরিবর্তনের জন্য প্রেরণ করা হয় "। ইন git amএটা বলেন: --committer-date-is-author-date" [...] লেখক তারিখ হিসাবে একই মান ব্যবহার করে committer তারিখ নিয়ে মিথ্যা ব্যবহারকারীর অনুমতি দেয় " যখন --ignore-date" [...] লেখক তারিখ নিয়ে মিথ্যা ব্যবহারকারী একই মান ব্যবহার করে দেয় প্রতিশ্রুতিবদ্ধ তারিখ হিসাবে "।
এনরিকো ক্যাম্পিডোগলিও

13

নিম্নলিখিত উপায় আছে

  1. সাধারণ রিবেস

    git rebase --ignore-date
    
  2. ইন্টারেক্টিভ রিবেস

    git rebase -i master
    git commit --amend --date=now
    git push origin <branch> -f
    

1

মন্তব্য থেকে:

এর সাথে বেমানান --interactive option

আসলে ... এটি আর গিট 2.29 (Q4 2020) এর সাথে বেমানান নয়: " git rebase -i" ( মানুষ ) কিছুটা আরও বিকল্প শিখেছে
এর সাথে সামঞ্জস্যপূর্ণ বিকল্পগুলি:

  • --interactive/-i
  • --root!

দেখুন 6160b2e কমিট (26 আগস্ট 2020) দ্বারা junio সি Hamano ( gitster)
দেখুন কমিট 2712669 (17 আগস্ট 2020), এবং ef484ad কমিট দ্বারা (13 জুলাই 2020) রোহিত Ashiwal ( r1walz)
দেখুন a3894aa কমিট , 7573cec কমিট , কমিট e8cbe21 দ্বারা (17 আগস্ট 2020) ফিলিপ কাঠ ( phillipwood)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 9c31b19 , 03 সেপ্টেম্বর 2020)

rebase -i: সমর্থন --ignore-date

আসল-প্যাচ-বাই: রোহিত আশিওয়াল
সাইন-অফ-বাই: ফিলিপ উড

রিবেস দুটি পৃথক ব্যাকেন্ডের সাথে প্রয়োগ করা হয়েছে - ' apply' এবং ' merge' যার প্রত্যেকে বিকল্পের একটি পৃথক সেট সমর্থন করে।

বিশেষত প্রয়োগ ব্যাকএন্ড ' ( ম্যান ) দ্বারা প্রয়োগ করা অনেকগুলি বিকল্পকে সমর্থন করে যা মার্জ ব্যাকএন্ডে প্রয়োগ করা হয় না। এর অর্থ হ'ল উপলভ্য বিকল্পগুলি কোন ব্যাকএন্ড ব্যবহৃত হয় তার উপর নির্ভর করে বিভ্রান্তিকর।git am

এই প্যাচটি --ignore-dateমার্জ ব্যাকএন্ডে বিকল্পের জন্য সমর্থন যোগ করে।

এই বিকল্পটি লেখার তারিখ হিসাবে বর্তমান সময়কে পুনর্লিখনের সময় মূল লেখকের তারিখটিকে পুনরায় ব্যবহার করার পরিবর্তে ব্যবহার করে।
আমরা প্রয়োগ ব্যাকএন্ডের সমাহার --ignore-dateএবং --committer-date-is-author-dateএকইভাবে পরিচালনা করার যত্ন নিই।

এবং:

rebase: যোগ করুন --reset-author-date

সহায়তায় : জুনিও সি হামানো
স্বাক্ষরিত: রোহিত আশিওয়াল

পূর্ববর্তী প্রতিশ্রুতিতে --ignore-dateপতাকাটি পরিচয় করিয়ে দেওয়া হয়েছিল rebase -i, তবে নামটি অস্পষ্ট কারণ এটি লেখকের তারিখ বা কমিটরের তারিখ উপেক্ষা করা হয়েছে কিনা তা বলে না।
সুনির্দিষ্ট উদ্দেশ্যটি জানাতে একটি উপনাম যুক্ত করুন।

--reset-author-date

এছাড়াও:

rebase -i: সমর্থন - কমিটর-তারিখ-লেখক-তারিখ

আসল-প্যাচ-বাই: রোহিত আশিওয়াল
সাইন-অফ-বাই: ফিলিপ উড

এই প্যাচটি --committer-date-is-author-dateমার্জ ব্যাকএন্ডে বিকল্পের জন্য সমর্থন যোগ করে।
এই বিকল্পটি কমিটের লেখকের তারিখটি ব্যবহার করে যা নতুন কমিট তৈরি হওয়ার সময় কমিটরের তারিখ হিসাবে পুনর্লিখন করা হয়।

git rebaseএখন এর ম্যান পৃষ্ঠাতে অন্তর্ভুক্ত :

--committer-date-is-author-date:

পরিবর্তিত তারিখ হিসাবে বর্তমান সময়কে ব্যবহার না করে, প্রতিশ্রুতিবদ্ধতার তারিখ হিসাবে পুনর্বাসিত হওয়ার প্রতিশ্রুতি লেখকের তারিখটি ব্যবহার করুন।
এই বিকল্পটি বোঝায় --force-rebase

git rebaseএছাড়াও এর ম্যান পৃষ্ঠাতে অন্তর্ভুক্ত :

--ignore-date:

প্রতিটি পতাকাবিহীন প্রতিশ্রুতি (দেখুন git am) এর লেখকের তারিখ পরিবর্তন করতে এই পতাকাটি 'গিট am' এ দেওয়া হয়েছে ।


নোট করুন যে ২.২ in (উপরে) এ --committer-date-is-author-date" rebase" এবং " am" সাবকম্যান্ডের বিকল্পটি ভুলক্রমে ইমেল ঠিকানাটি হারিয়েছে, যা গিট ২.২ 29 .১ (কিউ ২০২০) দিয়ে সংশোধন করা হয়েছে।

দেখুন প্রতিশ্রুতি 5f35dd , 16b0bb9 প্রতিশ্রুতিবদ্ধ , প্রতিশ্রুতিবদ্ধ 56706db (23 অক্টোবর 2020) জেফ কিং ( peff) দ্বারা
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট f34687d 26 অক্টোবর 2020)

am: এর সাথে ভাঙা ইমেল ঠিক করুন --committer-date-is-author-date

সাইন-অফ-বাই: জেফ কিং

প্রতিশ্রুতিবদ্ধ e8cbe2118a ( am: GIT_COMMITTER_DATE,2020-08-17 রফতানি বন্ধ করুন ) fmt_ident()পরিবেশের পরিবর্তনশীল সেট করা এবং commit_tree()এটি পরিচালনা করার পরিবর্তে কমিটরের তারিখটি ব্যবহারের জন্য সেট করার কোডটি পুনরায় লিখেছিলেন ।
তবে এটি দুটি বাগ প্রবর্তন করেছে:

  • আমরা প্রতিশ্রুতিবদ্ধ ইমেলের পরিবর্তে লেখক ইমেল স্ট্রিং ব্যবহার করি
  • কমিটর আইডেন্টিটি পার্স করার সময়, আমরা ইমেলের দৈর্ঘ্য গণনা করতে ভুল ভেরিয়েবল ব্যবহার করি, ফলস্বরূপ এটি সর্বদা শূন্য দৈর্ঘ্যের স্ট্রিং হয়ে থাকে

এটি প্রতিশ্রুতি দেয় উভয়ই স্থির করে, যার ফলে রিবেস applyব্যাকএন্ডের মাধ্যমে এই বিকল্পটির " " বিকল্পটি এখন আমাদের সফল হতে পারে।

এবং:

rebase: - কমিটর-তারিখ-লেখক-তারিখ সহ ভাঙ্গা ইমেল ঠিক করুন

প্রতিবেদনিত: ভেনমভেন্ডর
সাইন-অফ-বাই: জেফ কিং

কমিট 7573cec52c ( "রি-বেসের ফলে -i: সমর্থন --committer-ডেট-লেখক-ডেট হয়", 2020-08-17, গীত v2.29.0-rc0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ # 13 ) কপি committer ident-পার্স কোড থেকে builtin/am.c
এবং এটি করার সাথে সাথে এটি একটি বাগ অনুলিপি করেছে যাতে আমরা সর্বদা ইমেলটিকে খালি স্ট্রিংয়ে সেট করি।

আমরা git-amপূর্ববর্তী প্রতিশ্রুতিতে সংস্করণটি ঠিক করেছি ; এই প্রতিশ্রুতি অনুলিপি কোড সংশোধন করে।

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