একটি নির্দিষ্ট দিনের জন্য সমস্ত কমিটগুলি কীভাবে দেখব?


187

আমি ইতিমধ্যে git-scm.com এবং gitref.org থেকে প্রাসঙ্গিক ডক্স দেখেছি , তবে আমি এটি খুঁজে পাচ্ছি না।

ধরা যাক আমি 12 নভেম্বর, মঙ্গলবার, মঙ্গলবারের জন্য সমস্ত কমিটগুলি পেতে চাই an একটি বিদ্যমান রেপো উদাহরণ হিসাবে ব্যবহার করে, আমি একটি সত্য জানি যে আমি সেদিন কমিট করেছি, পাশাপাশি দিনের এবং পরের দিনটিও কমিট করেছি।

সাথে 2013-11-11এবং2013-11-12

নিম্নলিখিত 11 টি এবং 12 শে নভেম্বর উভয়ের জন্য আমাকে কমিট দেয়:

  • git log --after="2013-11-11" --until="2013-11-12"
  • git log --since="2013-11-11" --until="2013-11-12"
  • git log --after="2013-11-11" --before="2013-11-12"
  • git log --since="2013-11-11" --before="2013-11-12"

সঙ্গে 2013-11-12শুধুমাত্র

নিম্নলিখিত সমস্ত আমাকে কোন প্রতিশ্রুতি দেয় না:

  • git log --since="2013-11-12" --until="2013-11-12"
  • git log --since="2013-11-12" --before="2013-11-12"
  • git log --after="2013-11-12" --until="2013-11-12"
  • git log --after="2013-11-12" --before="2013-11-12"

সাথে 2013-11-12এবং2013-11-13

যেমনটি প্রত্যাশিত (এর ফলাফল 2013-11-11এবং 2013-11-12উপরের ফলাফল থেকে ), নীচের সমস্তগুলি আমাকে 12 ও 13 নভেম্বর উভয় থেকেই ফলাফল দেয়:

  • git log --since="2013-11-12" --before="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"
  • git log --since="2013-11-12" --until="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"

...এবং তাই এবং তাই ঘোষণা. আমার মনে হয় আমার প্রতি সম্ভব সমন্বয় চেষ্টা করেছি মনে since, after, before, এবং untilকিন্তু এখনও উত্তর খুঁজে পাচ্ছি না, কিংবা আমি বুঝতে কিনা সেই সব বিকল্প, সমেত বা একচেটিয়া যেহেতু তারা সমেত হতে যদি দুইটি তারিখের ভিন্ন বলে মনে হচ্ছে না, কিন্তু একচেটিয়া যদি তারা একই দিনে হয়। আমি কি কিছু মিস করেছি / আমি কী ভুল করছি ?!


8
আমি খুব অদ্ভুতভাবে নিজেকে পরিচালনা করার আগে / পরে / অবধি / গিট খুঁজে পেয়েছি, সুতরাং উত্তরটি আমি জানি না, তবে আপনি তারিখ + সময় নির্দিষ্ট করার চেষ্টা করেছেন (উদাহরণস্বরূপ, --since = "2013-11-12 00:00 ")? এছাড়াও, (কোনও একটি) আপনার কমিটের তুলনায় লেখকের তারিখ বনাম বিভিন্ন প্রতিশ্রুতিবদ্ধ থাকে?
জন বার্থোলোমিউ

তুমি বুঝতে পেরেছ! কাজ সময় নির্দিষ্ট করে। এমনকি সময় নিয়ে চেষ্টা করার চেষ্টাও আমার কাছে ঘটেনি। ধন্যবাদ! যেমন প্রতিশ্রুতিবদ্ধ বনাম লেখকের তারিখগুলি - সেই তারিখগুলিতে কোনও প্যাচ প্রয়োগ করা হয়নি, তাই এটি ছিল না।
3cheesewheel

আমার কাছে মনে হয় যে 'গিট লগ - সীমানা' আপনার জন্য এটি করা উচিত, যাতে 'গিট লগ - সীমানা - after = "2013-11-12" --before = "2013-11-12" "প্রদর্শিত হবে ঠিক একটি প্রতিশ্রুতিবদ্ধ (আপনি যে এটি মনে করেন :))।
qneill

উত্তর:


230

ধন্যবাদ জন বার্থলোমিউ!

উত্তরটি সময় নির্দিষ্ট করতে হয়, যেমন git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"


12
খুশী হলাম। তবে, সেই আদেশটি পরের দিন 23:59 এবং 00:00 এর মধ্যে কমিটগুলি বাদ দেবে, তাই git log --after="2013-11-12 00:00" --before="2013-11-13 00:00"আরও ভাল। আমি বিশ্বাস করি gitk --since="2013-11-12 00:00" --until="2013-11-13 00:00" &যদি আপনি গিটক ইনস্টল করেন তবে এটিও কাজ করবে।
হ্যালোগডবাই

6
গিট 2.13.0 এ। git log --after="2017-07-25" --before="2017-07-26"আমার জন্য বৈধ ফলাফল দেয়।
Powlo

1
এটি কি বর্তমান পরীক্ষিত শাখার জন্য? কিভাবে সব শাখা জুড়ে দেখতে হবে?
নওফাল

এটা সঠিক উত্তর, কিন্তু আমি এখনও এটি হতভম্ব করছি এবং এই ফলো-আপ প্রশ্ন পোস্ট: stackoverflow.com/questions/59691065/...
bgoodr

28

আমি সাধারণত আমার গিট লগটি পরীক্ষা করে দেখি যে আমি একটি নির্দিষ্ট দিনে কী কাজ করছিলাম এবং তার ভিত্তিতে আমার টাইমশিটটি আপডেট করেছিলাম তবে আইএসও ফর্ম্যাটে পুরো তারিখটি টাইপ করতে পাছার বেদনা আছে তাই আমি ঠিক এটি করি

git log --after=jun9 --before=jun10

এবং আমি --authorকেবল আমার কমিটগুলি মুদ্রণের জন্য যুক্ত করি

git log --since=jun9 --until=jun10 --author=Robert 

এই মুদ্রণগুলি কমিট করে যা গত 9 ই জুনে ঘটেছিল (তাই ২০১৫ সালের জন্য এবং 2015 বা 2014 এর জন্য নয় এবং আরও কিছু)।

--since/--afterএবং --until/--beforeপরামিতি এছাড়াও ভালো জিনিস নিতে পারেন 3 days ago, yesterdayইত্যাদি


কেবল কাজ করে না, কিছুই আউটপুট করে না। আমি কি কিছু মিস করছি? আমি একটি শাখা নির্দিষ্ট করা উচিত?
অরিমাস

1
@ অরিমাস ভাল, আপনার শেষের দিকে কী ভুল হয়েছে তা নিশ্চিত নন। যদি আপনার sinceএবং untilমানগুলি সঠিক না হয় তবে আপনি কোনও আউটপুট পাবেন না তা নিশ্চিত। git logপ্রথমে ব্যবহার করুন sinceএবং untilআপনি যা দেখেন তার উপর ভিত্তি করে একটি এবং মান বেছে নেওয়ার চেষ্টা করুন । কোনও শাখা বা বিশেষ কিছু প্রয়োজন নেই। কোন গিট সংস্করণটি থেকে এই বৈশিষ্ট্যটি উপলব্ধ তা নিশ্চিত নয়। আপনারও সাম্প্রতিক সংস্করণ রয়েছে তা নিশ্চিত করুন।
কোহানি রবার্ট

6
আমাকে স্পেস ব্যবহার করতে হয়েছিল:git log --after="may 2" --before="may 3"
কনার ক্লার্ক

15

গৃহীত উত্তরের (যা আমি উর্ধ্বতন দিয়েছি) কিছুই ভুল হয়নি, তবে ... আমরা এখানে বিজ্ঞানের জন্য রয়েছি!

নীচের আউটপুট pretty=format:<string> স্থানধারকগুলির সাথে প্রসারিত / কাস্টমাইজ করা যেতে পারে :

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12

একই স্ট্রিং হিসাবে ব্যবহারকারীর দ্বারা প্রবেশ করা যেতে পারে 100% ত্রুটি প্রতিরোধী নয়।তবে কোন স্থানধারক ব্যবহৃত হয় তার উপর নির্ভর করে গ্রহণযোগ্য। উদাহরণস্বরূপ উপরের স্নিপেটটি ব্যর্থ হবে না।

কেউ কেবল তার হৃদয়ের সামগ্রীতে এর ডেটা পুরোপুরি পার্স git logকরতে JSONএবং সেটির ডেটা ব্যবহার / চালনা করতে পারে। পরীক্ষা করে দেখুন https://github.com/dreamyguy/gitlogg আউট এবং পিছনে তাকান না!

দাবি অস্বীকার: এটি আমার একটি প্রকল্প।


10

আমি সেই নির্দিষ্ট উদ্দেশ্যে একটি গিট ওরফে তৈরি করেছি :

commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

ব্যবহার:

git commitsAtDate 2017-08-18

1
আপনার কাছে আপেক্ষিক তারিখ এই উপনাম, অর্থাত্ নির্দিষ্ট করতে পারেন git commitsAtDate yesterday, 2 days agoইত্যাদি
voiger

-2

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

আপনি এন্টার বা কন্ট্রোল-ডি চাপ না দেওয়া পর্যন্ত স্ক্রিপ্টটি তারিখের জন্য অনুরোধ জানায়।

ম্যাক ব্যবহারকারীরা: gnu তারিখের প্রয়োজন।

#!/bin/bash

COMMITS=`git log --abbrev-commit --pretty="format:%h %H %ai" | sort -k3 -k4`
FIRST=`echo "$COMMITS" | head -n 1`
LAST=`echo "$COMMITS" | tail -n 1`
echo "First commit: $FIRST"
echo "Last commit: $LAST"
printf "Date to search for commits: "
read DATE
while [[ "$DATE" ]]; do
  NEXT_DATE=`date +%Y-%m-%d -d "$DATE +1 day"`
  #echo "Searching for commits from $DATE to $NEXT_DATE"
  echo `git log --after="$DATE" --before="$NEXT_DATE" --pretty="format:%h %H %an %ci '%s'"`
  printf "\nDate to search for commits: "
  read DATE
done

আমি স্ক্রিপ্টটি কল করেছি commitsOnDatesএবং এটি এখানে চলছে। আমি প্রবেশের প্রথম তারিখটির কোনও কমিট নেই, সুতরাং প্রতিক্রিয়াটি কেবল একটি খালি লাইন:

$ commitsOnDates
First commit: 375bcfb 375bcfbbf548134a4e34c36e3f28d87c53b2445f 2015-08-03 13:37:16 -0700
Last commit: 1d4c88c 1d4c88ce6a15efaceda1d653eed3346fcae8f5e6 2018-10-13 21:32:27 -0700
Date to search for commits: 2015-08-13


Date to search for commits: 2015-08-03
375bcfb 375bcfbbf548134a4e34c36e3f28d87c53b2445f Mike Slinn 2015-08-03 13:37:16 -0700 'this is a comment'

Date to search for commits: 2018-10-13
1d4c88c 1d4c88ce6a15efaceda1d653eed3346fcae8f5e6 Mike Slinn 2018-10-13 21:32:27 -0700 'a comment' 64d6e16 64d6e16338657b82c91ac94bea8ebf7b80dc4c28 Mike Slinn 2018-10-13 18:28:41 -0700 'nother comment' d5eb26e d5eb26e49fc9dceee9b9f5a2d8fa052bff2cfbbc Mike Slinn 2018-10-13 18:16:20 -0700 'no comment' d8a4992 d8a4992df208ba5efb50728311820bdad5ba5332 Mike Slinn 2018-10-13 12:02:00 -0700 'commented'

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