আমি git pull
যে সর্বশেষ কার্যকর করা হয়েছিল তার তারিখ এবং সময় কীভাবে চেক করব ? যখন কোনও সার্ভারে কিছু ভুল হয়ে যায় তখন আমাকে প্রায়শই কোডটি পরিবর্তন হয় know
আমি git pull
যে সর্বশেষ কার্যকর করা হয়েছিল তার তারিখ এবং সময় কীভাবে চেক করব ? যখন কোনও সার্ভারে কিছু ভুল হয়ে যায় তখন আমাকে প্রায়শই কোডটি পরিবর্তন হয় know
উত্তর:
git show
কমান্ড শো সাম্প্রতিকতম তারিখ কমিট। এটি সেই তারিখ নয় যেখানে স্থানীয় ভান্ডারগুলিতে প্রতিশ্রুতিবদ্ধভাবে টানা হয়েছিল, তবে গিট এই ধরণের তথ্য রাখে না।
আপনি সার্ভারে থাকা ফাইলগুলির সিটিটাইম (তৈরির সময়) ব্যবহার করে শেষ টানার সময়টি সন্ধান করতে পারেন। উদাহরণ স্বরূপ:
ls -lct
সর্বাধিক সাম্প্রতিক প্রথমটির সাথে সাজানো প্রতিটি ফাইলের সিটিটাইম দেখায়।
git show
বর্তমান শাখার টিপ কমিটের তারিখটি দেখায়, যা রেপোতে সাম্প্রতিক প্রতিশ্রুতিবদ্ধ হওয়া আবশ্যক নয়, সর্বশেষতম আনতে / টানার তারিখটি ছেড়ে দিন। আমি স্মুওয়ের উত্তর চেক করারও পরামর্শ দিই।
git show
আপনার স্থানীয় ক্লোনটি কোনটি প্রতিশ্রুতিবদ্ধ তা আপনাকে জানায়। (আমি জানি এটি পুরানো, তবে আমি অনুসন্ধানের মাধ্যমে এখানেই শেষ করেছি))
stat -c %Y .git/FETCH_HEAD
আপনাকে সেই ফাইলটির সর্বশেষ পরিবর্তনের একটি ইউনিক্স টাইমস্ট্যাম্প দেবে। টানানোর মতো কিছু না থাকলেও গিট প্রতিবার টানতে বা আনতে প্রতিবার FETCH_HEAD ফাইলটি লিখে দেয়।
stat -f '%m' .git/FETCH_HEAD
stat -f '%Sm' $(git rev-parse --show-toplevel)/.git/FETCH_HEAD
.git/refs/heads/master
পরিবর্তনগুলি যখন আসে তখন git pull
ফলাফলগুলির মধ্যে কোনটির টাইমস্ট্যাম্প পরিবর্তন হবে তা আপনিও পরীক্ষা করতে পারেন master
, তবে git pull
প্রতিবেদনগুলির কোনও পরিবর্তন না হলে টাইমস্ট্যাম্প পরিবর্তন হবে না ।
এক কুঁচকিতে, আমি "স্ট্যাটাস-সি% ওয়াই। গিট / ফেইচটিএইচইএইডি" চেষ্টা করেছিলাম এবং সেই সময়ের একটি মানব-পঠনযোগ্য প্রিন্টআউট পেয়েছি:
> stat -c %y .git/FETCH_HEAD
2015-02-24 17:42:08.072094410 -0500
তদতিরিক্ত, আপনি যোগ করতে পারেন
when = !stat -c %y .git/FETCH_HEAD
থেকে [alias]
আপনার ~ / .gitconfig ফাইলে অধ্যায় (এটা এই স্বয়ংক্রিয়ভাবে করতে সবচেয়ে নিরাপদ এর কোন Git রেপো নিম্নলিখিত কমান্ড লাইন চলমান দ্বারা)
git config --global alias.when '!stat -c %y .git/FETCH_HEAD'
এবং তারপরে আপনি যে কোনও সময় আপনার নতুন "কমান্ড" দিয়ে এই তথ্যটি সন্ধান করতে সক্ষম হবেন:
> git when
2015-02-23 15:07:53.086254218 -0500
[তারপরে "ম্যান স্ট্যাট" করার বিষয়টি আমার কাছে ঘটেছিল এবং আমি দেখতে পেলাম যে 'স্ট্যাট' প্রোগ্রামের জন্য আরও অনেক% পরামিতি উপলব্ধ রয়েছে। ওয়াইএমএমভি।]
-c
কোনও বৈধ বিকল্প নয় stat
।
নন-বেয়ার রিপোজিটরিতে (এবং একটি খালি রেপোজিটরিটি বোঝায় না git pull
), গিট শাখা টিপসে সমস্ত পরিবর্তন এবং বর্তমান শাখা ধারণাটিকে "রিফ্লাগস" এ লগ করে .git/logs
। আপনি এগুলি ব্যবহার করে দেখতে পারেন git log -g
।
তবে লগ ফাইলগুলির টাইমস্ট্যাম্পগুলি থাকলেও git log -g
এটি প্রিন্ট হবে এমনটি দেখা যায় না। তবে, .git/logs/HEAD
উদাহরণস্বরূপ যদি আপনি একবার দেখুন , আপনি দেখতে পাবেন যে ফর্ম্যাটটি পার্স করার পক্ষে বেশ সহজ it এতে রেফ (বা হেড) কী থেকে পরিবর্তিত হয়েছিল, কে পরিবর্তিত হয়েছে, কখন এবং কোনও ক্রিয়াকলাপের বার্তা নিয়ে গঠিত।
@smooves
উত্তরে উত্তরের দ্বারা অনুপ্রাণিত : https://stackoverflow.com/a/9229377/622276 এবং মন্তব্যসমূহ।
তবে আমি আমার নিজস্ব বাশ প্রম্পট গিট সংহত রক্ষণ করছি
উত্সটির সাথে এখানে: https://github.com/neozenith/dotfiles/blob/master/bash-scriptts/function_parse_git_prompt.sh
msys
উইন্ডোজের জন্য গিট বাশ-এ সংস্করণ লিনাক্স সংস্করণের অনুরূপ কাজ করে।
আমি ক্রস প্ল্যাটফর্ম অপশনগুলি কেস স্টেটমেন্টে সংকলন করছি। সুতরাং এটি যে গিট রেপোতে নেভিগেট করব তাতে আনার প্রক্রিয়াটি কাঁটাবে, শেষ আনতে পনের মিনিটেরও বেশি পুরানো তাই আমার প্রম্পট স্ক্রিপ্টের বাকি অংশগুলি জানে যে আমার কাছে টানতে স্টাফ আছে কিনা।
গিট রাডারটি এটিতে অভ্যস্ত ছিল তবে শেষ ফ্যাচটি কখন ডাকা হয়েছিল তার টাইমস্ট্যাম্প সহ একটি ফাইল সংরক্ষণ করা দরকার। এটি কোনও অস্থায়ী ফাইল লেখেন না।
git rev-parse --show-toplevel
কেবলমাত্র আমি যদি গিট রেপোতে কোথাও থাকি তবে এটি রেপো রুটটি পাবেন যাতে আমরা .git
ফোল্ডারের পথটি উল্লেখ করতে পারি ।
# No repo == no more work
local REPO_ROOT=`git rev-parse --show-toplevel 2> /dev/null`
if [[ -n $REPO_ROOT && -e "$REPO_ROOT/.git/FETCH_HEAD" ]]; then
case $OSTYPE in
darwin*)
local LAST_FETCH="$(stat -f '%m' $REPO_ROOT/.git/FETCH_HEAD)"
local FETCH_THRESHOLD="$(date -v-15m +%s)"
;;
*)
local LAST_FETCH="$(stat -c %Y $REPO_ROOT/.git/FETCH_HEAD)"
local FETCH_THRESHOLD="$(date -d'15 minutes ago' +%s)"
;;
esac
# Fork fetch process in background
if [[ $LAST_FETCH -lt $FETCH_THRESHOLD ]]; then
git fetch --all --quiet --prune 2> /dev/null &
fi
fi
এখানে একটি ছোট গিট মোড়ক। নাম git
এবং অধিকার সহ এটি ইনস্টল করুন chmod a+x git
। তারপরে যোগ last_successful_fetch
করুন .git/info/exclude
।
আপনি যখন ফলাফলটি দেখতে চান তখন ব্যবহার করুন stat last_successful_fetch
।
#!/bin/sh
# This script just invokes git as expected, plus one additional action:
# If there stands last_successful_fetch in .git/info/exclude, then
# this file will be touched in top dir.
"`which --all git | uniq | head -n 2 | tail -n 1`" "$@"
status=$?
if [ _"$1" = _pull -o _"$1" = _fetch ]; then
if grep last_successful_fetch "`git rev-parse --git-dir`/info/exclude" >/dev/null 2>&1; then
[ $status = 0 ] && touch last_successful_fetch
fi
fi
$ # for the latest pull even if there's nothing new
$ stat -c %y .git/FETCH_HEAD
2017-12-15 11:24:25.000000000 +0100
$
$ # for records of updated references
$ git reflog --date=iso
db2bba84 (HEAD -> master, origin/master, origin/HEAD) HEAD@{2017-12-14 11:28:39 +0100}: pull: Fast-forward
37fe73ad HEAD@{2017-12-03 17:09:32 +0100}: pull: Fast-forward
c4107fcd HEAD@{2017-11-27 18:53:40 +0100}: clone: from https://github.com/macports/macports-base
$
$ # for a more detailed view of the latter
$ git log -g
commit db2bba84d5e8cd82ec94a19129deb91ef62287bb (HEAD -> master, origin/master, origin/HEAD)
Reflog: HEAD@{0} (me <me@machine.local>)
Reflog message: pull: Fast-forward
Author: Ryan Schmidt <ryandesign@macports.org>
Date: Wed Dec 13 10:23:47 2017 -0600
portutil.tcl: Fix renames that supply the -force option
Treat $options as a list not as a string.
See: https://trac.macports.org/ticket/55492
[snip]
ব্যবহারকারীর পরামর্শ অনুসারে: https://stackoverflow.com/users/83646/smoove , আপনি যখন গিট পুলটি সর্বশেষে .git / FETCH_HEAD এর সংশোধন টাইমস্ট্যাম্পটি পরীক্ষা করে রেপোতে ডেকেছিলেন তখন আবিষ্কার করতে পারেন: git লিখেছেন .git / আপনি টানতে বা আনতে প্রতিবার FETCH_HEAD ফাইলটি টানানোর মতো কিছু না থাকলেও
উদাহরণ: {মাস্টার} ভিনগুপ্ট @ bhling69 (/imsgit_local/work/vinegupt/ims_18.5a/ims_common) $ স্ট্যাটাস -c% y .git / FETCH_HEAD
2018-02-12 02: 01: 50.487160386 +0530
stat -f %Sm .git/FETCH_HEAD
তবে আমার পক্ষে এটি ভালভাবে কাজ করছে বলে মনে হচ্ছে।