দূরবর্তী সংগ্রহস্থলে ইতিহাস প্রতিশ্রুতিবদ্ধ


206

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

উত্তর:


252
git log remotename/branchname

সেই সংগ্রহস্থলে প্রদত্ত একটি দূরবর্তী শাখার লগ প্রদর্শিত হবে, তবে কেবলমাত্র যে লগগুলি আপনি তাদের সংগ্রহস্থল থেকে রিমোট সংগ্রহস্থলের ব্যক্তিগত "অনুলিপি" এ "পেয়েছেন"।

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

সম্ভবত অন্য দরকারী কমান্ড হতে পারে:

git log HEAD..remote/branch

যা আপনাকে দূরবর্তী শাখায় থাকা কমিটগুলি দেখায়, তবে আপনার বর্তমান শাখায় নয় ( HEAD)।


8
"সেখানে লগ চেক করতে আপনি সরাসরি সার্ভারের সাথে সংযোগ করতে পারবেন না" - আমার এই সমস্যাটি ছিল
ব্রায়ান জে

1
আমি কেবল স্থানীয় টানা পরিবর্তন আনছি ... রিমোটগুলি নোট করুন, এমনকি আনার আগেও।
লোনিক্স

6
একটি করার সময় git fetchআপনাকে --allরিমোটগুলি থেকে আনার জন্য ব্যবহার করতে হবে।
অক্টোডো

25
এটি খুব খারাপ, সুতরাং আমাকে কেবল কমিট লগগুলি দেখতে 2 জিবি মূল্যবান অবজেক্টগুলি ক্লোন করতে হবে?
TWiStErRob

2
হাই @TWiStErRob আপনি অগভীর ক্লোন দিয়ে প্রাপ্ত ডেটার পরিমাণ পরিচালনা করে ব্যথা প্রশমিত করতে পারেন (git-scm.com/docs/git-clone- এ ডিপথ দেখুন ), তারপরে গিট- স্কেমে "অগভীর" দেখুন .com / ডকস / গিট-ফেচ )।
qneill

66

বিশেষ দ্রষ্টব্য। ক্লোন করা সংগ্রহস্থলের প্রবাহকে উপস্থাপন করতে নীচে "উত্স" ব্যবহার করুন, রিমোট রেপোর বর্ণনামূলক নামের সাথে "উত্স" প্রতিস্থাপন করুন। "রিমোট রেফারেন্স" ক্লোন কমান্ডে ব্যবহৃত একই ফর্ম্যাটটি ব্যবহার করতে পারে।

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

2
@ ব্যবহারকারী 1795998 দূরবর্তী সংগ্রহস্থল গিট ইউআরএল, উদাহরণস্বরূপgit://git.somedomain.tld/some/repo
জার্মটভিডিজক

1
আপনি যদি রিমোটের কোনও শাখা ট্র্যাক না করে থাকেন তবে আপনার <refspec>(বা ব্যবহার fetch --all) আনার সময় নির্দিষ্ট করার দরকার নেই ?
gertvdijk

1
"প্রকল্পের বিক্রেতা / ডায়াগ" এর অর্থ কী? এটি কি ভাণ্ডারের ভিতরে কোনও ফোল্ডার? আর একটি শাখা?
লোপসেই

1
একটি সংগ্রহস্থলের একাধিক শাখা থাকতে পারে তবে "প্রকল্প" গিট সম্পর্কিত কোনও শব্দ নয়, সেখান থেকে এই ক্ষেত্রে একটি "প্রকল্প" এর অর্থ কী তা নিয়ে বিভ্রান্তি। তবুও, এই প্রশ্নের সাথে কী করতে হবে?
লোপসেই

1
জিআইটিতে এটি করা সম্ভব বলে আমি বিশ্বাস করি না। এর বিরুদ্ধে গিট লগ দেওয়ার আগে আপনাকে অবশ্যই সেই দূরবর্তী সংগ্রহস্থলটি ক্লোন করতে হবে।
ব্যবহারকারী 959690

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
আপনি যদি এই উত্তরটি "এটি সম্ভব না" তে পরিবর্তন করেন তবে এটি সেরা উত্তর। রিমোট গিট ক্লায়েন্ট ব্যবহার করে রিমোট রেপোর কমিটের ইতিহাস অ্যাক্সেস করার কোনও উপায় নেই।
qneill

11

এটিই আমার পক্ষে কাজ করেছে:

git fetch --all 
git log production/master

মনে রাখবেন যে সমস্ত রিমোটগুলি থেকে এনেছে, সম্ভবত সম্ভাব্যভাবে আপনাকে "কমিট লগগুলি সন্ধান করতে 2 জিবি মূল্যমানের বস্তু ক্লোন করতে হবে"


2

ফিল্টারিং যুক্ত হওয়ার সময় আমি নিশ্চিত নই তবে আপনি যদি কেবল ইতিহাস / রেফ-লগগুলি আনতে চান তবে অবজেক্ট ব্লবগুলি বাদ দেওয়ার উপায়:

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

এটি নিখুঁত । অন্যান্য উত্তরগুলি দেওয়া, যদি এটি প্রদত্ত উত্তরের পাশে দাঁড়াতে সক্ষম হয় তবে এটি দুর্দান্ত।
এরিক কাজিনো

0

আপনি সহজেই রিমোট সার্ভারের লগ পেতে পারেন। এখানে কীভাবে:

(1) যদি ssh- এর মাধ্যমে গিট ব্যবহার করা হয় - তবে কেবল আপনার গিট লগইন এবং পাসওয়ার্ড ব্যবহার করে দূরবর্তী সার্ভারে লগইন করুন - এবং যেখানে আপনার সংগ্রহস্থল উপস্থিত রয়েছে এমন রিমোট ফোল্ডারটি সিডিআর করুন - এবং রিমোট সার্ভারে আপনার সংগ্রহস্থলের ভিতরে "গিট লগ" কমান্ডটি চালান।

(২) যদি ইউনিক্সের স্ট্যান্ডার্ড লগইন প্রোটোকলের মাধ্যমে গিট ব্যবহার করা হয়- তবে কেবল আপনার দূরবর্তী সার্ভারে টেলনেট করুন এবং সেখানে গিট লগ করুন।

আশাকরি এটা সাহায্য করবে.


13
পুনঃব্যবহার করতে, "আপনি কোনও রিমোট সার্ভারের লগ পেতে পারেন না, আপনাকে স্থানীয় গিট ক্লায়েন্ট ব্যবহার করে লগইন করতে হবে এবং লগ পেতে হবে"
qneill

কেবল এই উত্তরটি মুছুন, এটি প্রশ্নের উত্তর দেয় না এবং সর্বাধিক গিট ব্যবহারকারীরা কীভাবে সার্ভার শেল অ্যাক্সেস না রাখেন তা নয়

0

এখানে একটি বাশ ফাংশন যা কোনও রিমোটে লগগুলি দেখতে সহজ করে তোলে। এটি দুটি alচ্ছিক যুক্তি লাগে। প্রথমটি শাখা , এটি মাস্টারকে ডিফল্ট করে । দ্বিতীয়টি হ'ল রিমোট , এটি মঞ্চে ডিফল্ট হয় ।

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.