git --git-dir প্রত্যাশার মতো কাজ করছে না


209

আমি যাচ্ছি তার চেয়ে আলাদা ডিরেক্টরি থেকে গিট চালানোর চেষ্টা করছি So সুতরাং উদাহরণস্বরূপ যদি আমি এখানে থাকি:

cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.

সুতরাং এখন আমি --git-dirবিকল্পটি ব্যবহার করে এই কমান্ডটি একটি ভিন্ন ডিরেক্টরি থেকে চালাতে চাই ।

সুতরাং আসুন বলতে দিন যে আমি আছি root/এবং এটি ব্যবহার করে দেখুন:

git --git-dir="/home/domain/" status
## Error 
fatal: Not a git repository: '/home/domain/'

আমি .gitফোল্ডারটি যেমন অন্তর্ভুক্ত করার চেষ্টা করেছি

git --git-dir="/home/domain/.git/" status

তবে দেখে মনে হচ্ছে এটি রুট থেকে গিট চালানোর চেষ্টা করছে, অর্থাত্ আমার ডোমেন ফোল্ডার থেকে সবকিছু মুছে ফেলা এবং রুটে সমস্ত কিছু যুক্ত করা।

আশা করি যে আমি কী ভুল করছি সে সম্পর্কে কেউ পরামর্শ দিতে পারে।


4
এখন আমি স্থিতিস্থাপক হয়ে স্থিতি পেয়েছি তবে টান ত্রুটি দিচ্ছে। যেমন রুট @ এরেক্স [/] # গিট --git-dir = / হোম / ডোমেন / .git - ওয়ার্ক-ট্রি = / হোম / ডোমেন / টান উত্সাহী মাস্টার মারাত্মক: / মার্কিন / স্থানীয় / লিবেক্সেক / গিট-কোর / গিট -পুল একটি কার্যক্ষম গাছ ছাড়া ব্যবহার করা যাবে না। তবে স্ট্যাটাস কাজ করে ?? কোনও ধারণা জোন
লি

4
এই মুহূর্তে গিট মধ্যে বৃহত্তম বাগ। - ওয়ার্ক-ট্রি এবং / অথবা --git-dir প্যারামিটারগুলি সম্মান করে না।
অ্যাডাম ডাইমিট্রিক

5
গিট ১.৮.৫ শুরু করে, আপনার কাছে সেট না করার পছন্দ রয়েছে --git-dirএবং --work-treeএকটি সাধারণ কমান্ডের জন্য: নীচে আমার উত্তরটি দেখুন
ভোনসি

উত্তর:


314

আপনাকে কার্যনির্বাহী ডিয়ারও নির্ধারণ করতে হবে। বিভ্রান্তিকর আমি জানি তবে এটি নমনীয়তার বিষয়।

git --git-dir=/mycode/.git --work-tree=/mycode status

আপনি এখানে আরও কিছু পড়তে পারেন


3
ধন্যবাদ এই কাজ! এটি বিভ্রান্তিকর বলে সম্মত হয়েছে। এর নাম রাখুন এটি সরল বোকা up একই সময়ে ডিফল্ট দেওয়ার সময় আপনি প্রায় সর্বদা নমনীয়তার অনুমতি দিতে পারেন যা কমান্ড থাকা সর্বাধিক বুদ্ধিমান ভিএসকে কাজ করে না make
নয়

3
@ নিক সম্মত হয়েছিলেন, আপনি মনে করেন --git-dirনির্দিষ্ট না করা থাকলে /mycode/.gitতা বিদ্যমান ছিল কিনা তা পরীক্ষা করে ত্রুটি ছুঁড়ে দেওয়ার আগে এটি ব্যবহার করবে।
জিপি 89

4
@ নিক ওয়াইটস দ্বিতীয়! এছাড়াও আমার হোম ডিরেক্টরিটি উল্লেখ করতে using ব্যবহার করার সময় আমার একটি সমস্যা হয়েছিল, উদাহরণস্বরূপ git --git-dir=~/src/s3cmd/.git --work-tree=~/src/s3cmd pullকাজ git --git-dir=/home/username/src/s3cmd/.git --work-tree=/home/username/src/s3cmd pullহয়নি তবে করেছে
জেমি কুক

1
নোট করুন যে সমস্ত কমান্ডের জন্য কার্য-বৃক্ষের প্রয়োজন হয় না, উদাহরণস্বরূপ, "গিট --git-dir = / মাইকোড / .গিট লগ" সূক্ষ্মভাবে কাজ করে। যদিও এটি বিভ্রান্ত হওয়ার বিষয়ে একমত!
ইয়োও

4
সামান্য ব্যাখ্যা: git --git-dir="$HOME/foo/.git" --work-tree="$HOME/foo" status
হরিস ক্রাজিনা

136

1.8.5 গিট শুরু করা (যা পরের সপ্তাহে হওয়া উচিত) এটি আরও সহজ হবে:

 git -C "/home/domain/" status

সেট করার কোন প্রয়োজন নেই --git-dirএবং --work-treeকি আর চলবে!


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

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

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-dir=~/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

4
গিট কমান্ডের পরে আমি সি-ফ্ল্যাগটি ব্যবহার করার চেষ্টা করতে গিয়ে git status -C <path>
ফাঁস হয়ে গেলাম

42

উপরের আপনার মন্তব্যের ভিত্তিতে মনে হচ্ছে আপনি এখনও কোনও সমস্যার মধ্যে চলেছেন:

রুট @ এরএক্স [/] # গিট --git-dir = / হোম / ডোমেন / .git - ওয়ার্ক-ট্রি = / হোম / ডোমেন / টান উত্স মাস্টার
মারাত্মক: / ইউএসআর / লোকাল / লিবেক্সেক / গিট-কোর / গিট-টান একটি কার্যক্ষম গাছ ছাড়া ব্যবহার করা যায় না

দেখে মনে হচ্ছে আপনি এটিকে crontabবা অন্য কোনও কিছু থেকে চালানোর ইচ্ছা করছেন । আপনি ব্যবহার বন্ধ হতে পারেcdপ্রথমে আপনার কার্যনির্বাহী ডিরেক্টরিতে স্যুইচ করতে আপনি করতে পারেন। উদাহরণ স্বরূপ:

রুট @ এরএক্স [/] # (সিডি / হোম / ডোমেন এবং& গিট পুলের উত্স মাস্টার)

এটি অস্থায়ীভাবে (একটি সাবশেলে, যা প্রথম বন্ধনীগুলি করছে) বর্তমান ডিরেক্টরিটি পরিবর্তিত করবে /home/domainএবং তারপরে চলবে git pull origin master। কমান্ডটি সম্পূর্ণ হওয়ার পরে, আপনার বর্তমান ডিরেক্টরিটি কমান্ডের আগে যা ছিল তা থেকে যায়।


একটি সাব-শেল ব্যবহার করা সহজ এবং মার্জিত। আমি জানি না কেন আগে আমি তা ভেবে দেখিনি!
এহতেশ চৌধুরী

দুঃখিত @ গ্রেগ, জনের অন্য প্রশ্নের জবাব হিসাবে যেমনটি জিজ্ঞাসা করা হয়েছে তার উত্তর দিয়েছিল - তবে আমি মনে করি আপনি উদ্দেশ্য এবং আপনার অন্তর্দৃষ্টি অর্থাৎ () এর উত্তর দিয়ে স্পট করছেন এবং আমি ঠিক ১০-এর সন্ধান করছিলাম
ড্যারেন বিশপ

1
git --git-dir="/home/domain/" status
## Error 
fatal: Not a git repository: '/home/domain/'

গিট 2.26 (কিউ 12020) এর সাথে ডকুমেন্টেশনটি আরও পরিষ্কার।

এটি কোথায় রয়েছে তা নির্দিষ্ট করার একটি প্রভাব GIT_DIR(হয় পরিবেশের সাথে পরিবর্তনশীল, অথবা git --git-dir=<where> cmdবিকল্পের সাহায্যে) সংগ্রহস্থল আবিষ্কারটি অক্ষম করা

নতুন ব্যবহারকারীরা প্রায়শই বিভ্রান্ত হয়ে পড়ায় ডকুমেন্টেশনে এটিকে কিছুটা চাপ দেওয়া হয়েছে।

হেবা ওয়ালি ( ) দ্বারা d82ad54 (30 জানুয়ারী 2020) কমিট দেখুন । (দ্বারা একীভূত junio সি Hamano - - মধ্যে 17e4a1b কমিট , 12 ফেব্রুয়ারী 2020)HebaWaly
gitster

git: --git-dir এর জন্য ডকুমেন্টেশন আপডেট করুন

সাইন-অফ-বাই: হেবা ওয়ালি সহায়ত
: জুনিও সি হামানো

git --git-dir <path> কিছুটা বিভ্রান্তিকর এবং কখনও কখনও ব্যবহারকারী এটি প্রত্যাশার মতো কাজ করে না।

উদাহরণস্বরূপ, যদি ব্যবহারকারী চালায় তবে git --git-dir=<path> statusগিটটি সংগ্রহস্থল আবিষ্কারের অ্যালগরিদম এড়িয়ে যাবে এবং অন্যথায় নির্দিষ্ট না করা থাকলে ব্যবহারকারীর বর্তমান কার্য ডিরেক্টরিতে ওয়ার্ক ট্রিকে বরাদ্দ করবে।
যখন এই অ্যাসাইনমেন্টটি ভুল হয়, আউটপুট ব্যবহারকারীর প্রত্যাশার সাথে মেলে না।

এই প্যাচটি আরও পরিষ্কার করার জন্য ডকুমেন্টেশন আপডেট করে।

সুতরাং এখনকার ডকুমেন্টেশনেরgit --git-dir মধ্যে রয়েছে:

--git-dir=<path>:

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

.gitএই বিকল্পটি (অথবা GIT_DIRপরিবেশের পরিবর্তনশীল) ব্যবহার করে ডিরেক্টরিটির অবস্থান নির্দিষ্ট করে " .git" উপ-ডিরেক্টরি নির্দেশক (যা কীভাবে সংগ্রহশালা এবং কার্যকারী গাছের শীর্ষ স্তরের সন্ধান করা হয়) দিয়ে ডিরেক্টরি আবিষ্কার করার চেষ্টা করে এমন সংগ্রহস্থল আবিষ্কার সক্রিয় করে " এবং গিটকে বলে যে আপনি কার্যনির্বাহী গাছের শীর্ষ স্তরে আছেন।

আপনি যদি কার্যনির্বাহী গাছের শীর্ষ স্তরের ডিরেক্টরিতে না থাকেন তবে আপনাকে গিটকে বলা উচিত কর্মক্ষম গাছের উপরের স্তরটি কোথায় রয়েছে, --work-tree=<path>বিকল্পটি (বা GIT_WORK_TREEপরিবেশ পরিবর্তনশীল) সহ

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