ক্লোনিং ছাড়াই গিট রেপোতে ফাইলগুলি ব্রাউজ করুন এবং প্রদর্শন করুন


107

গিট রেপোগুলিতে প্রথমে ক্লোনিং না করে ব্রাউজ এবং প্রদর্শন করার কোনও উপায় আছে কি? কমান্ডগুলি ব্যবহার করে আমি এসএনএন-এ যা করতে পারি:

এসএনএন এলএস / পাথ / টু / রেপো 
এসএনএন বিড়াল / পথ / থেকে / রেপো / ফাইল-ইন-রেপো

আমি অনুমিতভাবে গিট শো ব্যবহার করতে পারি তবে করছি:

গিট শো / পাথ / টু / রেপো
গিট শো হেড: / পাথ / টু / রেপো

এর ফল

মারাত্মক: গিট সংগ্রহস্থল নয়

উত্তর:


72

আপনি যে কমান্ডটি চান তা হ'ল git ls-remoteযা আপনাকে দূরবর্তী সংগ্রহস্থল সম্পর্কে কিছু তথ্য পেতে দেয় তবে আপনি ইতিহাস বা তালিকা প্রদর্শন করতে পারবেন না বা সেই স্তরটির কিছুও প্রদর্শন করতে পারবেন: মূলত এটি আপনাকে কেবলমাত্র একটি উচ্চ স্তরের দূরবর্তী বস্তুগুলি দেখতে দেয় (আপনি দেখতে পারেন উদাহরণস্বরূপ বর্তমান হেড এবং ট্যাগগুলি)।

আপনি যা চান তা করার একমাত্র আসল উপায় (যদি আমি সঠিকভাবে বুঝতে পারি) তবে রিমোট কমান্ড চালানোর জন্য ssh ব্যবহার করা এবং ফলাফলগুলি ফিরে আসা, উদাহরণস্বরূপ:

ssh me@otherhost "cd repo && git log -n 10"

আপনি যা চান তা সুন্দর ক্রিয়াকলাপ হতে পারে যদি তারা এটি যুক্ত করতে পারে তবে আমি যা পড়েছি তা ইতিহাস পাওয়ার খুব সহজ নয় কারণ গিটারের স্থানীয় হওয়ার জন্য প্রচুর তথ্য প্রয়োজন, এবং সেই মুহুর্তে আপনি সম্ভবত গিট সংগ্রহ করতে পারেন ।


14
তবে আপনি যা করতে পারেন তা git cloneহ'ল পাস করার মাধ্যমে কেবল একটি একক সংশোধনী আনা --depth 1। এটি সম্ভাব্য পরিমাণে বিশাল পরিমাণে ইতিহাস এড়ানো এড়ায় এবং "কোন ফাইলগুলি পুনর্বিবেচনায় উপস্থিত রয়েছে abcdef1234567890?" এই জাতীয় প্রশ্নের উত্তর দেওয়ার পক্ষে যথেষ্ট ?
ctrueden

21

গিট বিতরণ করা হয় সংস্করণ নিয়ন্ত্রণ ব্যবস্থা, অন্যদিকে সাবভার্সনটি কেন্দ্রিয়ায়িত (ক্লায়েন্ট-সার্ভার) সংস্করণ নিয়ন্ত্রণ ব্যবস্থা। তারা ভিন্নভাবে কাজ করে; অভ্যাস করুন। স্ট্যাকওভারফ্লোতে প্রশ্নের সমমানেরsvn status -u এই পার্থক্যের পরিণতি ব্যাখ্যা করে আমার উত্তরটি পড়ুন ।

নিজেকে কিছুটা পুনরাবৃত্তি করা: সেন্ট্রালাইজড ভার্সন কন্ট্রোল সিস্টেমে (সিভিএস বা সাবভার্সনের মতো) প্রায় সমস্ত কমান্ড সার্ভারে প্রক্রিয়া করা হয় এবং নেটওয়ার্ক জড়িত। খুব কম কমান্ড স্থানীয়ভাবে সঞ্চালিত হয়। নোট করুন যে ক্লায়েন্টে "এসএনএন স্ট্যাটাস" এবং "এসএনএন ডিফ" সাবভার্সন স্টোরের 'প্রিন্সিন কপি'র চেক-আউট সংস্করণটির সাধারণ ক্রিয়াকলাপগুলির জন্য নেটওয়ার্ক ট্রান্সফারকে জড়িত না করার জন্য (যার অর্থ সাবভারশন চেকআউট = 2 x কমপক্ষে কর্মরত ডিরেক্টরি আকার)।

বিতরণিত সংস্করণ নিয়ন্ত্রণ সিস্টেমে (যেমন গিট, মার্কিউরিয়াল বা বাজার), যেখানে আপনার কাছে একটি সম্পূর্ণ সংগ্রহস্থলের স্থানীয় অনুলিপি (ক্লোন) রয়েছে, প্রায় সমস্ত কমান্ড ক্লায়েন্টের উপর সঞ্চালিত হয় । খুব কম কমান্ডের জন্য অন্যান্য সংগ্রহস্থলের (সার্ভারে) নেটওয়ার্ক সংযোগ প্রয়োজন।

সার্ভারে আপনি যে কমান্ডটি করতে পারবেন তা সীমিত।

  • আপনি " গিট এলএস-রিমোট <URL>" দিয়ে রিমোটে সমস্ত রেফারেন্স তালিকাভুক্ত করতে পারেন ।

  • " গিট আর্কাইভ --remote = <URL> হেড" দিয়ে আপনি সংগ্রহস্থলের (অংশ) স্ন্যাপশট পেতে পারেন (রিমোট সার্ভার এটি সক্ষম করে থাকলে) ।
  • আপনি
    " গিট ক্লোন --depth = 1 <URL>" দিয়ে কেবলমাত্র কয়েকটি শেষ কমিট (তথাকথিত "অগভীর ক্লোন") ক্লোন করতে পারেন।
  • সার্ভার যদি গিট ওয়েব ইন্টারফেসটিকে ভান্ডারগুলিতে সরবরাহ করে তবে আপনি এটি ব্রাউজ করতে ব্যবহার করতে পারেন।

36
আপনার যেমন সঠিক, আপনি যদি প্রথমে ক্লোনিং না করে কোনও রিমোট রেপো ব্রাউজ করছেন তবে স্পষ্টতই আপনি সিদ্ধান্ত নিয়েছেন যে গিটের অফলাইনে থাকা সক্ষমতাটি পূর্ববর্তী করা ঠিক আছে ok এটি দিয়ে, আমি ভান করার কোনও কারণ দেখছি না যে এটি কিছু জিনিসের জন্য দরকারী বৈশিষ্ট্য হবে না, উদাহরণস্বরূপ, স্থানীয় ক্লায়েন্ট যা আপনাকে স্থানীয়ভাবে একটি রিমোট রেপোর ফাইল সামগ্রী ব্রাউজ করার অনুমতি দেয়।
লেডি ক্যালিন

12
সম্মত হন, জাকুব যে অবস্থান নেয় তা অত্যন্ত সীমাবদ্ধ is এটি উল্লেখ করার জন্য একাধিকবার খ্যাতি হারানো মূল্যবান।
সিটিপেনরোজ

9
আমি "সেই অভ্যাস" টি পছন্দ করি না, তবে শেষ অবধি রিডিন করার পরে আমি আমার বর্তমান সমস্যার সমাধান খুঁজে পেয়েছি - ১১০ টি ভাণ্ডারে কী আছে তা দেখার জন্য আমার এক গিট আছে, তবে এতে কোনও এসএসএস বা শেল অ্যাক্সেস নেই এবং যাগুলি সব সম্ভবত বেশ বড়, কিছু 12 জিবি বা আরও কিছু। সুতরাং একটি মিনিমাইজড গভীরতার ক্লোনটি কমপক্ষে কেবলমাত্র আকর্ষণীয় ইতিহাস দেখতে সহায়তা করে to এবং গিট রেপোকে যতটা সম্ভব ছোট করুন।
হেনিং

3
কোড পর্যালোচনা সরঞ্জামগুলির ক্ষেত্রে এই জাতীয় কার্যকারিতাটি চমৎকার হবে যেখানে আপনার পুরো রেপোর প্রয়োজন হয় না কেবল পরিবর্তনগুলি দিয়ে লগইন করা যথেষ্ট।
লুকাশ লেনার্ট

2
@ হেনিং, ঠিক আপনি আছেন, আমি অনুমান করি যে আপনি এটিকে "সুর" করতে "গিফটি" বলতে পারেন, এলওএল
এসএন

17

কিছু পরিবহন প্রোটোকল থেকে কীভাবে এটি করা যায় সে সম্পর্কে তথ্যের জন্য http://git-scm.com/book/en/Git-Internals- Transfer-Proocols এ একবার দেখুন । নোট করুন এটি SSH এর চেয়ে বেশি মানক গিটের জন্য কাজ করবে না won't

এসএসএইচ-এর উপর গিটের জন্য, একটি আপ টু ডেট সার্ভার-সাইড গিট আপনাকে সরাসরি রিমোট থেকে গিট-সংরক্ষণাগার দেওয়ার অনুমতি দেয় যা আপনি যেমন প্রদত্ত প্রতিশ্রুতিতে সমস্ত ফাইলের একটি তালিকা পেতে পাইপ "টার টি" তে পাইবেন।


13

গিটহাবটি এসএনএন সামঞ্জস্যপূর্ণ যাতে আপনি এসএনএন এলএস ব্যবহার করতে পারেন

svn ls https://github.com/user/repository.git/branches/master/

বিটবকেট গিট সংরক্ষণাগারটিকে সমর্থন করে যাতে আপনি টাকার সংরক্ষণাগারটি ডাউনলোড করতে এবং সংরক্ষণাগারভুক্ত ফাইলগুলি তালিকাভুক্ত করতে পারেন। এটি খুব দক্ষ নয় তবে কাজ করে:

git archive --remote=git@bitbucket.org:repository HEAD directory | tar -t

6
গিটকে গিটহাবের সাথে বিভ্রান্ত করবেন না :)
এলআর

এটি বেশ ভঙ্গুরও বোধ করে - অনেকগুলি (প্রায় 100) রেপোতে চালিত হয়ে, আমি এসএনএন থেকে বিভিন্ন ত্রুটি পেয়েছি: "নন-ডিরেক্টরিতে প্রবেশাধিকার পাওয়া যায় না" "500 অভ্যন্তরীণ সার্ভার ত্রুটি" "আর কোনও শংসাপত্র নেই"
মাইকেলচিরিকো

5

হুবহু নয়, প্রায় এক পথ।

গিটহাব বিকাশকারী এপিআই ব্যবহার করুন

  1. এটি খোলার ফলে আপনি সাম্প্রতিক কমিটগুলি পাবেন।

    https://api.github.com/repos/learningequality/ka-lite/commits

    উপরের ইউআরএল শেষে কমিট হ্যাশ সংযুক্ত করে আপনি নির্দিষ্ট কমিটের বিশদটি পেতে পারেন।

  2. সমস্ত ফাইল (আপনার মূল গাছের জন্য শা দরকার)

    https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01

আমি আশা করি এটি সাহায্য করতে পারে।


17
গিটকে গিটহাবের সাথে বিভ্রান্ত করবেন না - আমি বিশ্বাস করি মূল প্রশ্নগুলি গিট সম্পর্কেই ছিল। গিট ইনস্টলেশন / হোস্টিং (গিটহাব / বিটবকেট / স্ট্যাশ) ব্রাউজারের সংগ্রহস্থলগুলির বিভিন্ন সম্ভাবনা থাকতে পারে।
Krzysztof Wolny

ভাল ধারণা @ অনুরগ কানুনগো বাক্সের বাইরে ভাবছেন 😉
e ই

2

এটি সম্ভবত কিছু দ্বারা নোংরা হিসাবে বিবেচিত হয়, তবে গিথুব সংগ্রহস্থলের ক্ষেত্রে একটি খুব কার্যকর সমাধান কেবল একটি স্ক্রিপ্ট তৈরি করা, যেমন "গিট-এলএস":

#!/bin/sh
remote_url=${1:? "$0 requires URL as argument"}
curl -s $remote_url | grep js-directory-link | sed "s/.* title=\"\(.*\)\".*/\1/"

এটা এক্সিকিউটেবল এবং অবশ্যই পৌঁছানো করুন: chmod a+x git-ls; sudo cp git-ls /usr/local/bin। এখন, আপনি এটি আপনার ইচ্ছামতো চালান:

git-ls https://github.com/mrquincle/aim-bzr
git-ls https://github.com/mrquincle/aim-bzr/tree/master/aim_modules

git instawebআপনার স্থানীয় ফাইলগুলির জন্য একটি ইউটিলিটি রয়েছে তাও জানুন। আমার মতামত অনুযায়ী ফাইলগুলি দেখানোর ক্ষমতা রাখার এবং এমন একটি সার্ভার রাখার ফলে গিটের অন্তর্নিহিত বিকেন্দ্রীভূত বৈশিষ্ট্যগুলির কোনও ক্ষতি হয় না।


আমি এর সাথে কোনও ফল পাচ্ছি না। কার্ল কিছুই ফেরত বলে মনে হচ্ছে না।
ম্যাথু

আমি এখন অবশ্যই আনারুগ থেকে এপিআই পদ্ধতিটি সুপারিশ করব। এই পদ্ধতিটি এখনও কাজ করে:curl -s https://github.com/Itseez/opencv | grep js-directory-link | sed 's|.* title="\(.*\)".*|\1|'
অ্যান ভ্যান রসম

-1

আপনি যদি চেক করতে চান এমন রিমোট শাখাটি জানেন তবে আপনি এর মাধ্যমে সর্বশেষটি খুঁজে পেতে পারেন:

git ls-tree -r <remote_branch> --name-only

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