যে সংগ্রহস্থলের মধ্যে ছাড়া একটি সংগ্রহস্থলের বিরুদ্ধে গীত কমান্ডগুলো করার জন্য একটি উপায় আছে কি?
: এই মত উদাহরণ কিছু git /home/repo log?
দয়া করে আমাকে cdএটি বলবেন না । আমি একটি execকল মাধ্যমে এটি করছি ।
যে সংগ্রহস্থলের মধ্যে ছাড়া একটি সংগ্রহস্থলের বিরুদ্ধে গীত কমান্ডগুলো করার জন্য একটি উপায় আছে কি?
: এই মত উদাহরণ কিছু git /home/repo log?
দয়া করে আমাকে cdএটি বলবেন না । আমি একটি execকল মাধ্যমে এটি করছি ।
উত্তর:
চেষ্টা করুন:
git --git-dir=/home/repo/.git log
আপনার সংগ্রহস্থলের .git ডিরেক্টরি পর্যন্ত সমস্ত পথ দেওয়া গুরুত্বপূর্ণ। অন্যথায় আপনি কেবল একটি ত্রুটি বার্তা পাবেন যা এরকম কিছু বলে:
fatal: Not a git repository
fatal: Not a git repository (or any of the parent directories): .git। @ পেট্রিক আমি কি কিছুতেই ভোট দিলাম না?
--work-dirআমার মনে হয় বলেছিল )
git status,। -Cযাওয়ার সঠিক উপায়।
-Cবিকল্প ( ডক্স ) ব্যবহার করুন :
git -C /home/repo log
এটি প্রায়শই সাধারণ ফোল্ডার সংযোজন --git-dirএবং সমতুল্য--work-tree.git
সম্পাদনা:
উত্তর নিম্নোক্ত ... যথেষ্ট আশ্চর্যজনক, কঠোরভাবে বলতে গেলে, এই প্রশ্নের একমাত্র সঠিক উত্তর। কার্য গাছের বাইরে থেকে সংগ্রহগুলি অ্যাক্সেস করার বিকল্পগুলি --git-dirএবং --work-treeবিদ্যমান .gitনেই, এগুলি অন্য কোথাও স্থানান্তর করতে ব্যবহৃত হয় এবং কিছু ক্ষেত্রে এগুলি ব্যবহার করা আরও জটিল।
উদাহরণস্বরূপ, /home/repo/subdirশুধুমাত্র লগ পেতে :
git -C /home/repo/subdir log .
অথবা
git -C /home/repo log subdir
বা log .দিয়ে ব্যবহার করা সম্ভব নয় । কাজের গাছের শীর্ষের সাথে সম্পর্কিত সাবপথটি বের করার জন্য অবশ্যই পথটি প্রক্রিয়া করা উচিত এবং সেই ক্ষেত্রেও, আপনি বিকল্পটি ব্যবহার না করলে গিটটি এটিকে পথ হিসাবে স্বীকৃতি দেবে না , সুতরাং একমাত্র সম্ভাব্য উপায় হ'ল:--git-dir--work-tree--
git --git-dir /home/repo/.git log -- subdir
তদ্ব্যতীত, আমার সংস্করণ (গিট 1.9.1) --work-treeসহ logসাবকম্যান্ডের সাথে মোটেই কাজ করছে না । এটি কেবল উপেক্ষা করা হয়:
git --git-dir /home/repo/.git --work-tree /home/repo/subdir log -- subdir
git --git-dir /home/repo/.git --work-tree /home/repo/whatever log -- subdir
আমি এমনকি বুঝতে পারি না এটি কোনও বাগ বা কোনও বৈশিষ্ট্য ... যথারীতি অনেকগুলি গিট ডিজাইনের পছন্দ সহ।
git stashএটি একটি সাবকম্যান্ডের অন্য একটি উদাহরণ যা ব্যর্থ হলে --git-dirএবং --work-treeব্যবহৃত হয়।
আসলে আপনার একসাথে --git-dir এবং - ওয়ার্ক-ট্রি ব্যবহার করা দরকার। এখানে একটি উদাহরণ:
local [] Desktop: mkdir git
local [] Desktop: cd git
local [] git: touch README.txt
local [] git: git init
Initialized empty Git repository in /Users/albert/Desktop/git/.git/
local [] git: cd ..
local [] Desktop: git --work-tree=git --git-dir=git/.git add .
local [] Desktop: git --work-tree=git --git-dir=git/.git commit -a -m 'initial commit, called from outside the git directory'
[master (root-commit) ee951b1] initial commit, called from outside the git directory
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.txt
local [] Desktop: cd git
local [] git: git log --pretty=oneline
ee951b161053e0e0948f9e2a36bfbb60f9c87abe initial commit, called from outside the git di
অনেকবার চেষ্টা করেছি! আমি অবশেষে এটি পেয়েছি!
git -C dir --no-pager log --format='%an' -1 filename
মনে রাখবেন, দয়া করে আপনার .git যুক্ত করবেন না
-সি দির
এটি @ ম্যাক্সের উত্তরের অনুরূপ। দুর্ভাগ্যক্রমে, --git-dir আমার যা প্রয়োজন তা করেন নি। রেট্রোস্পেক্টে সম্পাদনা করুন , আর একটি উত্তর [পূর্ববর্তী] যা আমি ব্যবহার করে প্রস্তাবিত পড়িনি --work-tree। পরিবেশ বা পতাকা ব্যবহার করা আরও উপযুক্ত কিনা তা আমি নিশ্চিত নই তাই কেউ যদি এর ব্যবহার খুঁজে পায় তবে আমি আমার উত্তরটি রেখে দেব, তবে আমি ব্যবহার করতে স্যুইচ করব --work-tree/ --git-dir।
দুটি রেপো রয়েছে, একটি অন্যের ভিতরে কিন্তু একটি সাবমডিউল নয়; বাইরের রেপো এটিকে উপেক্ষা করে:
tools (outer repo)
gcc/4.9.2 (inner repo)
আমি যা চেয়েছিলাম তা ছিল git rev-parse --show-prefixবাইরের রেপোর তুলনায় আউটপুট । আমি এখানে যা এলাম তা এখানে (বাশ সিনট্যাক্স; পঠনযোগ্যতার জন্য লাইন জুড়ে বিভক্ত):
prefix_dir=$(cd ..; git rev-parse --show-toplevel)
prefix_dir=$(GIT_WORK_TREE=${prefix_dir} git rev-parse --show-prefix)
৪.৯.২ এর মধ্যে থেকে মৃত্যুদন্ড কার্যকর করা হলে এটি স্ট্রিং তৈরি করে gcc/4.9.2।
যে কোনও গিট কমান্ডের জন্য, আপনি এটি করতে পারেন:
git --git-dir=<PATH-TO-REPO>/.git --work-tree=<PATH-TO-REPO> <git-command>
উদাহরণস্বরূপ, আপনি যদি গিট স্ট্যাটাসটি করতে চান:
git --git-dir=/home/myrepo/.git --work-tree=/home/myrepo/ status
বা আপনি যদি শাখাটি পরীক্ষা করতে চান তবে রেপো রয়েছে:
git --git-dir=/home/myrepo/.git --work-tree=/home/myrepo/ rev-parse --abbrev-ref HEAD