दूरस्थ भंडार पर प्रतिबद्ध इतिहास


206

मैं एक दूरस्थ रिपॉजिटरी पर एक शाखा के प्रतिबद्ध इतिहास तक पहुंचने का प्रयास कर रहा हूं। मुझे डॉक्टर पर एक नज़र थी , लेकिन अपने स्थानीय git क्लाइंट का उपयोग करके दूरस्थ रेपो के प्रतिबद्ध इतिहास तक पहुंचने के बारे में कोई ठोस जानकारी नहीं मिल सकी।

जवाबों:


252
git log remotename/branchname

उस रिपॉजिटरी में किसी दिए गए रिमोट ब्रांच के लॉग को प्रदर्शित करेगा, लेकिन केवल वे रिपॉजिटरी से आपकी पर्सनल "कॉपी" के लिए "रिपॉजिटरी" में आपके द्वारा "लाए गए" लॉग।

याद रखें कि रिपॉजिटरी का आपका क्लोन केवल किसी भी दूरस्थ शाखाओं की स्थिति को अपडेट करके करेगा git fetch। आप लॉग को जांचने के लिए सर्वर से सीधे कनेक्ट नहीं कर सकते, आप जो करते हैं वह सर्वर की स्थिति को डाउनलोड करता है git fetchऔर फिर स्थानीय रूप से दूरस्थ शाखाओं के लॉग को देखता है।

शायद एक और उपयोगी आदेश हो सकता है:

git log HEAD..remote/branch

जो आपको दूरस्थ शाखा में हैं, लेकिन आपकी वर्तमान शाखा में नहीं ( HEAD) में दिखाएंगे ।


8
"आप लॉग को जांचने के लिए सर्वर से सीधे कनेक्ट नहीं कर सकते हैं" - यही वह मुद्दा था जो मेरे पास था
ब्रायन जे

1
मैं केवल स्थानीय खींचे हुए परिवर्तन प्राप्त कर रहा हूं ... दूरस्थ लोगों पर ध्यान दें, यहां तक ​​कि पहले भी कर रहे हैं।
लूनिक्स

6
जब git fetchआप का उपयोग --allकरने के लिए रिमोट से लाने की जरूरत है ।
ओसोडो

25
यह बहुत बुरा है, इसलिए मुझे कमिट लॉग के माध्यम से देखने के लिए 2GB मूल्य की वस्तुओं को क्लोन करना है?
TWStStrrob

2
हाय @TWiStErRob आप उथले क्लोन के साथ लाए गए डेटा की मात्रा का प्रबंधन करके दर्द को कम कर सकते हैं (देखें - git-scm.com/docs/git-clone में - ), फिर git- scm में "उथले" देखें .com / डॉक्स / git-fetch )।
११

66

एनबी। "मूल" एक क्लोन रिपोजिटरी के अपस्ट्रीम का प्रतिनिधित्व करने के लिए उपयोग के नीचे, रिमोट रेपो के लिए एक वर्णनात्मक नाम के साथ "मूल" को बदलें। "रिमोट रेफरेंस" क्लोन कमांड में उपयोग किए गए समान प्रारूप का उपयोग कर सकता है।

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 दूरस्थ रिपॉजिटरी Git URL, जैसेgit://git.somedomain.tld/some/repo
gertvdijk

1
यदि आप रिमोट पर किसी शाखा को ट्रैक नहीं कर रहे हैं तो आपको <refspec>(या उपयोग करते समय fetch --all) निर्दिष्ट करने की आवश्यकता नहीं है?
gertvdijk

1
"प्रोजेक्ट वेंडर / डायग" से आपका क्या अभिप्राय है? क्या वह भंडार के अंदर एक फ़ोल्डर है? एक और शाखा?
लोपासै

1
एक रिपॉजिटरी की कई शाखाएँ हो सकती हैं, लेकिन "प्रोजेक्ट" इस से संबंधित नहीं है कि इस मामले में "प्रोजेक्ट" का क्या अर्थ है, इस भ्रम की स्थिति है। फिर भी, प्रश्न के साथ क्या करना होगा?
लोपासे

1
मैं जीआईटी में ऐसा करना संभव नहीं मानता। इससे पहले कि आप इसके विरुद्ध कोई लॉग लॉग जारी कर सकें, आपको उस दूरस्थ रिपॉजिटरी को क्लोन करना होगा।
user959690

12

आप केवल स्थानीय रिपॉजिटरी पर लॉग को देख सकते हैं, हालांकि इसमें आपके द्वारा सेट-अप किए गए सभी रीमोक की शाखाओं को शामिल किया जा सकता है।

तो, अगर आप एक रेपो क्लोन ...

git clone git@gitserver:folder/repo.git

यह करने के लिए डिफ़ॉल्ट होगा origin/master

आप इस रेपो में एक रिमोट जोड़ सकते हैं, originआइए जोड़ के अलावा production। स्थानीय क्लोन फ़ोल्डर के भीतर से:

git remote add production git@production-server:folder/repo.git

अगर हम कभी लॉग इन करना चाहते हैं तो हमें करना productionहोगा:

git fetch --all 

यह सभी रीमेक से प्राप्त होता है (बिना डिस्चार्ज किए बिना --allलाया गया भ्रूण origin)

लाने के बाद हम productionरिमोट पर लॉग देख सकते हैं , आपको शाखा भी निर्दिष्ट करनी होगी।

git log production/master

सभी विकल्प काम करेंगे क्योंकि वे स्थानीय शाखाओं पर लॉग के साथ करते हैं।


12

ऐसा करने का एक तेज़ तरीका --bareकीवर्ड का उपयोग करके क्लोन करना और फिर लॉग की जांच करना है:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

मुझे विश्वास नहीं होता कि यह संभव है। मेरा मानना ​​है कि आपको उस रिमोट रेपो को स्थानीय रूप से क्लोन करना होगा और git fetchइसके git logखिलाफ प्रदर्शन करने से पहले उस पर प्रदर्शन करना होगा।


1
कल्पना कीजिए कि आप पहले से ही रेपो को लोकल में क्लोन कर लेते हैं और कुछ बदलाव कर लेते हैं। । तब आप जांचना चाहते हैं कि किसी ने रिमोट रेपो के लिए प्रतिबद्ध किया है
छोर्न एलिट

2
यदि आप इस उत्तर को "यह संभव नहीं है" में बदल देते हैं तो यह सबसे अच्छा उत्तर है। रिमोट गैट क्लाइंट का उपयोग करके दूरस्थ रेपो के प्रतिबद्ध इतिहास तक पहुंचने का कोई तरीका नहीं है।
११

11

इसी से मेरा काम बना है:

git fetch --all 
git log production/master

ध्यान दें कि यह सभी रिमोट से प्राप्त होता है, अर्थात संभावित रूप से आपको "2GB मूल्य की वस्तुओं को क्लोन करना है, बस कमिट लॉग के माध्यम से देखना है"


2

मुझे यकीन नहीं है कि जब फ़िल्टरिंग को जोड़ा गया था, लेकिन यह ऑब्जेक्ट को बाहर करने का एक तरीका है अगर आप केवल इतिहास / लॉग-इन प्राप्त करना चाहते हैं:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

यह एकदम सही है । अन्य उत्तरों को देखते हुए, यह भयानक होगा यदि यह दिए गए उत्तर के बगल में खड़े होने में सक्षम थे।
एरिक कूसिएउ

0

आप दूरस्थ सर्वर का लॉग आसानी से प्राप्त कर सकते हैं। ऐसे:

(1) यदि ssh के माध्यम से git का उपयोग कर रहे हैं - तो बस अपने git लॉगिन और पासवर्ड का उपयोग करके रिमोट सर्वर पर लॉग इन करें - और उस दूरस्थ फ़ोल्डर को chdir करें जहाँ आपका रिपॉजिटरी मौजूद है- और रिमोट सर्वर पर अपने रिपॉजिटरी के अंदर "git log" कमांड चलाएँ।

(2) यदि यूनिक्स के मानक लॉगिन प्रोटोकॉल के माध्यम से गिट का उपयोग कर रहे हैं- तो बस अपने दूरस्थ सर्वर को टेलनेट करें और वहां एक लॉग लॉग करें।

उम्मीद है की यह मदद करेगा।


13
Rephrase करने के लिए, "आपको एक दूरस्थ सर्वर का लॉग नहीं मिल सकता है, आपको स्थानीय गिट क्लाइंट का उपयोग करके लॉग इन करना होगा और लॉग इन करना होगा"
qneill

बस इस उत्तर को हटा दें, यह सवाल का जवाब नहीं देता है और यह नहीं कि अधिकांश गिट उपयोगकर्ताओं के पास सर्वर शेल एक्सेस कैसे नहीं है
nhed

0

यहां एक बैश फ़ंक्शन है जो रिमोट पर लॉग को देखना आसान बनाता है। यह दो वैकल्पिक तर्क देता है। पहले एक शाखा है , यह मास्टर को चूकता है । दूसरा एक रिमोट है , यह स्टेजिंग के लिए डिफॉल्ट करता है ।

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

उदाहरण:

 $ git_log_remote
 $ git_log_remote development origin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.