অন্য ফোল্ডারে গিট "লগ" কমান্ডটি ব্যবহার করুন


127

আমার একটি ফোল্ডার এতে কিছু পিএইচপি ফাইল রয়েছে (যা গিট প্রকল্প)। এই পিএইচপি ফাইলে আমি "গিট লগ" চালাতে চাই তবে ফোল্ডার বি এর জন্য ফোল্ডার বি আরেকটি গিট প্রকল্প (সুতরাং ল এবং এ এবং বি এর মধ্যে পৃথক)।

আমি কীভাবে শেল কমান্ড দিয়ে এটি করতে পারি?


3
cd /other/dir && git log && cd -বাশ শেলের মধ্যে?
তাকেশিন

1
1.8.5 গিট (Q4 2013) এর সাথে আপনার সেট করার পরিবর্তে অন্য একটি পছন্দ থাকবে --git-dir: নীচে আমার উত্তরটি দেখুন
ভোনসি

উত্তর:


188

থেকে man git,:

--git-dirকোনও কমান্ড দেওয়ার আগে আপনি প্যারামিটার দিয়ে এটি করতে পারেন ।

git --git-dir /foo/bar/.git log

( .gitডিরেক্টরিটি নির্দিষ্ট করা প্রয়োজনীয়)) ডকুমেন্টেশন থেকে :

--git-dir=<path>

সংগ্রহস্থলের পথ নির্ধারণ করুন। GIT_DIRপরিবেশের পরিবর্তনশীল সেট করে এটিও নিয়ন্ত্রণ করা যায় । এটি একটি বর্তমান পথ বা বর্তমান ওয়ার্কিং ডিরেক্টরি সম্পর্কিত আপেক্ষিক পথ হতে পারে।


26
আপনাকে .gitডিরেক্টরিটি উল্লেখ করতে হবে । ব্যবহার করে দেখুন git --git-dir=/foo/bar/.git log
মিপাদি

6
দুঃখিত, আমার ভুল আপনি = --git-dir এবং ডিরেক্টরি নামের মধ্যে রাখেন না। সুতরাং এটি গিট --git-dir / foo / বার লগ হয়ে যায়
rgngl

23
সতর্কবাণী! এই পদ্ধতির ব্যতীত অন্য ক্রিয়াকলাপগুলির জন্য ভাঙা log। চেষ্টা করুন git --git-dir /foo/someclone/.git status- গিটটি সম্পূর্ণ বিভ্রান্ত হয়। -Cনীচে উল্লিখিত হিসাবে আমি সুপারিশ ।
এয়ার

আমি এখনও একটি গিট সহায়তা পৃষ্ঠাটি দেখতে পাচ্ছি যা "--git-dir": "(
থিনসোল্ডার

1
@ থিনসোল্ডার man gitআমার সিস্টেমে করেন (২.৩.৫) তবে @ ভনসি উত্তর আরও ভাল কাজ করে।
ক্যালিমো

144

সঙ্গে Git 1.8.5 (Q4 ই 2013) , আপনি সেটিংয়ের পরিবর্তে আরেকটি উপায় থাকবে --git-dir
আপনি যদি git logফোল্ডারে নির্বাহ করতে চান তবে Bটাইপ করুন:

git -C B log

ঠিক যেমন " make -C <directory>", " git -C <directory> ..." গিটকে অন্য কিছু করার আগে সেখানে যেতে বলে


দেখুন 44e1e4 কমিট দ্বারা নাজরি Ramliy :

বর্তমান ডিরেক্টরিটি না রেখে ভিন্ন ডিরেক্টরিতে গিট কমান্ড চাওয়ার জন্য আরও কীপ্রেসগুলি লাগে:

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-tree=~/foo status
    GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)
  3. for d in d1 d2 d3; do (cd $d && git svn rebase); done

উপরে প্রদর্শিত পদ্ধতিগুলি স্ক্রিপ্টিংয়ের জন্য গ্রহণযোগ্য তবে দ্রুত কমান্ড লাইন অনুরোধগুলির জন্য খুব জটিল।

এই নতুন বিকল্পের সাহায্যে উপরেরটি কয়েকটি কী-স্ট্রোক দিয়ে করা যেতে পারে:

  1. git -C ~/foo status
  2. git -C ../.. grep foo
  3. for d in d1 d2 d3; do git -C $d svn rebase; done

19
এটি অনেক বেশি নির্ভরযোগ্য পদ্ধতির এবং এটি ছাড়াও অন্যান্য আদেশের জন্য কাজ করে log
এয়ার

বাহ, আর ম্যান পেজে কিছুই নেই! কি লজ্জা. (ঠিক আছে, এখন আমি এটি ২.7 ম্যান পৃষ্ঠাতে যুক্ত দেখতে পেয়েছি)
akostadinov

দুঃখের বিষয়, এটি এখনও মার্চুরিয়ালের -Rবিকল্প হিসাবে খুব বেশি সুন্দর নয় , যেহেতু এটি আপেক্ষিক পথগুলিকে মিস করে। উদাহরণস্বরূপ, আমি টাইপ git -C subdir log subdir/myfileকরলে এটি একটি ত্রুটি দেয় (যেহেতু এটি ফাইলটির সন্ধান করে subdir/subdir/myfile)।
jwd

--git-dir হ্যান্ডিয়ার হয় যখন আপনি এই জাতীয় কিছু করেন:for p in (find . -type d -name ".git"); do git --git-dir $p ...; done
shabunc

1
@jwd: আমি নিশ্চিত না যে এটি কীভাবে সমস্যা? আপনি যা উদ্ধৃত করেছেন তা হ'ল আমি প্রত্যাশা করেছিলাম এমন নির্ভুল আচরণ এবং আমি gitএটি ভাবতে চাই না যে এটি আমার চেয়ে চালাক এবং আমি কী টাইপ করেছি। যদি আমি বলি যে এটি 'এক্স এক্স ডিরেক্টরিতে চালান', তবে এর অর্থ 'কখনও কখনও বাদে অন্য কিছু করুন' don't
আন্ডারস্কোর_ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.