मैं git pullनिष्पादित की गई नवीनतम की तारीख और समय की जांच कैसे करूं ? मुझे अक्सर यह जानना होता है कि जब सर्वर में कुछ गलत होता है तो कोड बदल जाता है।
मैं git pullनिष्पादित की गई नवीनतम की तारीख और समय की जांच कैसे करूं ? मुझे अक्सर यह जानना होता है कि जब सर्वर में कुछ गलत होता है तो कोड बदल जाता है।
जवाबों:
git showआदेश से पता चलता है सबसे हाल ही में की तारीख के लिए प्रतिबद्ध। यह वह तारीख नहीं है, जिस पर स्थानीय रिपॉजिटरी के लिए कमिट की गई थी, लेकिन Git इस तरह की जानकारी नहीं रखता है।
आप सर्वर पर फ़ाइलों के समय (निर्माण समय) का उपयोग करके अंतिम खींचने का समय पा सकते हैं। उदाहरण के लिए:
ls -lct
प्रत्येक फ़ाइल का समय दर्शाता है, सबसे हाल ही में पहले के साथ क्रमबद्ध।
git showवर्तमान शाखा के टिप कमेटी की तारीख को दर्शाता है, जो रेपो में हाल की कमिटमेंट के लिए आवश्यक नहीं है, अकेले लेटेस्ट ब्रांच / पुल की तारीख दें। मैं स्मूव के जवाब की जांच करने की भी सलाह देता हूं।
git showआपको बताता है कि आपका स्थानीय क्लोन किस पर है। (मुझे पता है कि यह पुराना है, लेकिन मैं खोज के माध्यम से यहां समाप्त हो गया।)
stat -c %Y .git/FETCH_HEAD
आपको उस फ़ाइल के अंतिम संशोधन का यूनिक्स टाइमस्टैम्प देगा। Git हर बार आपके द्वारा खींचे जाने या लाने के लिए FETCH_HEAD फ़ाइल लिखता है, भले ही खींचने के लिए कुछ भी न हो।
stat -f '%m' .git/FETCH_HEAD
stat -f '%Sm' $(git rev-parse --show-toplevel)/.git/FETCH_HEAD
.git/refs/heads/masterइसका टाइमस्टैम्प परिवर्तन होगा , लेकिन रिपोर्ट में कोई परिवर्तन नहीं होने पर टाइमस्टैम्प नहीं बदलेगा । git pullmastergit pull
एक कूबड़ पर, मैंने "स्टेट -c% y .गित / FETCH_HEAD" की कोशिश की, और उस समय का मानव-पठनीय प्रिंटआउट मिला:
> 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
[फिर यह मेरे लिए "मैन स्टैट" करने के लिए हुआ, और मैंने पाया कि 'स्टैट' प्रोग्राम के लिए अन्य% मापदंडों का एक गुच्छा उपलब्ध है। YMMV।]
-cके statलिए एक वैध विकल्प नहीं है ।
गैर-नंगे रिपॉजिटरी में (और नंगे रिपॉजिटरी के लिए कोई मतलब नहीं है git pull), git सभी सुझावों को ब्रांच टिप्स और "रिफ्लॉग्स" में करंट ब्रांच आइडिया में लॉग करता है .git/logs। आप इनका उपयोग करके देख सकते हैं git log -g।
हालाँकि, हालांकि लॉग फ़ाइलों में टाइमस्टैम्प हैं, लेकिन यह प्रकट नहीं होता है कि git log -gयह प्रिंट करेगा। हालाँकि, यदि आप .git/logs/HEADउदाहरण के लिए एक नज़र डालते हैं, तो आप देखेंगे कि प्रारूप को पार्स करने के लिए काफी सरल है- इसमें रेफ (या HEAD) से क्या बदला, किससे बदला, कब और किस गतिविधि संदेश में बदल गया।
भारी @smoovesजवाब से प्रेरित : https://stackoverflow.com/a/9229377/622276 और टिप्पणियाँ।
लेकिन मैं अपना बैश प्रॉम्प्ट गिट इंटीग्रेशन बनाए हुए हूं
यहाँ स्रोत के साथ: https://github.com/neozenith/dotfiles/blob/master/bash-scripts/function_parse_git_prompt.sh
msys Windows के लिए Git Bash में संस्करण लिनक्स संस्करण के समान काम करता है।
मैं एक केस स्टेटमेंट में क्रॉस प्लेटफॉर्म विकल्पों का संकलन कर रहा हूं। तो यह किसी भी git रेपो पर लाने के लिए एक प्रक्रिया है जिसे मैं लाऊंगा, जो कि पिछले लाने के पंद्रह मिनट से पुरानी है, इसलिए मेरी शीघ्र स्क्रिप्ट के बाकी हिस्सों को पता है कि क्या मेरे पास खींचने के लिए सामान है।
Git रडार इस के लिए इस्तेमाल किया है, लेकिन यह अंतिम लाने जब कहा जाता है टाइमस्टैम्प के साथ एक फ़ाइल को बचाने की आवश्यकता थी। यह कोई अस्थायी फ़ाइलें नहीं लिखता है।
git rev-parse --show-toplevelबस इसका मतलब है कि अगर मैं कहीं भी एक git रेपो में हूँ तो इसे रेपो रूट मिलेगा ताकि हम .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 , आप पा सकते हैं जब गिट पुल को रेपो पर पिछली बार संशोधन के टाइमस्टैम्प की जाँच करके बुलाया गया था। FETCH_HEAD फ़ाइल हर बार जब आप खींचते हैं या लाते हैं, भले ही खींचने के लिए कुछ भी न हो।
उदाहरण: {मास्टर} सिरकाटु @ bhling69 (/imsgit_local/work/vinegupt/ims_18.5a/ims_common) $ stat -c% y .गित / FETCH_HEAD।
2018-02-12 02: 01: 50.487160386 +0530
stat -f %Sm .git/FETCH_HEADलेकिन मेरे लिए अच्छा काम करता है।