আপনার .gitconfig এ কোনও ফাইল অন্তর্ভুক্ত করা কি সম্ভব?


245

আমি আমার .gitconfig এ একটি ফাইল অন্তর্ভুক্ত করতে চাই যাতে আমার গিথুব সেটিংস রয়েছে - এটি কি সম্ভব?

আমি কি এরকম কিছু করতে পারি:

[core]
    include = /path/to/file

3
"আমি এতে গিথুব বিশদটি অন্তর্ভুক্ত করতে চাই না, সুতরাং কেন আমি তাদের কোনওরকম বাহ্যিক ফাইল থেকে অন্তর্ভুক্ত করতে চাই": বৈশ্বিক কনফিগারেশন ফাইলটি হ'ল এটি। আপনার ক্ষেত্রে এটি ব্যবহার না করার কোনও কারণ আছে কি?
ভনসি

11
হ্যাঁ, কারণ আমি গিট সংগ্রহস্থলে .gitconfig প্রকাশ করতে চাই এবং আমি চাই না যে কেউ আমার গিথুব শংসাপত্রগুলি চুরি করুক।
ডেভিড রেনল্ডস

আমি আপনাকে অনুসরণ করি না: আপনার নিয়মিত গিটকনফিগ ফাইলটি গিথুবে প্রকাশিত হবে তবে কোনও গিথাব সেটিংস ছাড়াই । কেন? কারণ এগুলি আপনার গ্লোবাল কনফিগারেশন ফাইল ( ~/.gitconfig) এ থাকবে, অর্থাত্ আপনার গিথুব রেপোতে ধাক্কা দেবে না । আপনি ' git config' টাইপ করার সময়, আপনি যা দেখেন তা হ'ল 3 টি কনফিগার ফাইল (রেপো, গ্লোবাল এবং সিস্টেম)। কেবল রেপো কনফিগারেশন ফাইলটি ধাক্কা খায়। অন্য 2 জন স্থানীয় থাকে।
ভনসি

90
দেখে মনে হচ্ছে সবাই এই প্রশ্নের পয়েন্ট মিস করেছে। ডেভিড স্পষ্টতই তার .gitconfig সহ তার সমস্ত ডট ফাইলের (বাশার্ক, জেমআরসি, ইত্যাদি) একটি রেপো চাপতে চান যাতে তার সমস্ত মেশিনে তার সমস্ত সেটিংস থাকতে পারে। প্রাইভেট এন্ট্রিগুলিকে অন্তর্ভুক্ত করে এবং উপেক্ষা করে একটি .gitconfig ফাইলের অংশগুলি ধাক্কা দেওয়ার একটি উপায় হ'ল তিনি (এবং আমি, এই বিষয়টির জন্য) তার পরে রয়েছে
বো জিনেস

5
@ বিজনেস: অবিকল! যদিও এখনও এটি করার কোনও উপায় আমি পাইনি।
ডেভিড রেইনল্ডস

উত্তর:


302

গিট (1.7.10+) এখন এই সিনট্যাক্সটিকে এতে সমর্থন করে .gitconfig:

[include]
    path = /path/to/file

গিট পরিবর্তন এবং এর প্রান্তের কেসগুলির বিশদ বিবরণের জন্য এখানে দেখুন ।

উপায় দ্বারা, কয়েকটি সূক্ষ্মতা দেখানো মূল্য:

  1. পরিবেশ-পরিবর্তনশীল প্রসারণ যেমন $HOME, সমর্থিত নয়। ( ~গিট 1.7.10.2 এ প্রদর্শিত হয়েছে))

  2. যদি কোনও আপেক্ষিক পাথ নির্দিষ্ট করা থাকে, তবে এটি .gitconfig ফাইলের সাথে সম্পর্কিত যা [include]বিবৃতি রয়েছে। এটি শিকলযুক্ত জুড়েও সঠিকভাবে কাজ করে - যেমন ~/.gitconfigথাকতে পারে:

    [include]
        path = subdir/gitconfig
    

    এবং subdir/gitconfigথাকতে পারে:

    [include]
        path = nested_subdir/gitconfig
    

    ... যা subdir/nested_subdir/gitconfigলোড হওয়ার কারণ হবে ।

  3. গিট যদি লক্ষ্য ফাইলটি খুঁজে না পায় তবে এটি চুপচাপ ত্রুটিটিকে উপেক্ষা করে। এটি নকশা দ্বারা প্রদর্শিত হয়।


7
আসলে আপনি প্রয়োজন হবে না ~। কারণ আপনার .gitconfig- ফাইলটি এখনও ~/.gitconfigকনফিগারেশনের কোনও আপেক্ষিক পথে থাকতে হবে তা বোঝায় ~...
রোবটাস

2
~/ $HOMEসম্প্রসারণের যেমন আসলে git describe --contains 4c0a89fc> - v1.7.10.2~12^2(অর্থাত v1.7.10.2উল্লেখযোগ্য যেমন ডেবিয়ান 7 বলে মনে হয় এবং উবুন্টু Quantal সঙ্গে মুক্তি দেয়া হবে অথবা পরে), v1.7.10.4
ফক্সফক্স

1
এই গ্লোব সমর্থন করে? যেমন পথ = ~ / gitconfig.d / *?
ব্রেট

1
@ ব্রিট না, এটি গ্লোবগুলিকে সমর্থন করে না।
মাইক মোরার্টি

8
নোট করুন যে কনফিগারেশনগুলি অন্তর্ভুক্ত রয়েছে যখন কোনও নির্দিষ্ট ফাইল দেওয়া হয় (যা এটি সহ --global, --localবা --file) দেওয়া হয় না, যদি না --includes(যেমন git config --global --includes --list) দিয়ে স্পষ্টভাবে বলা হয় ।
ফ্র্যাঙ্কলিন ইউ

16

আপডেট 2012:

দেখুন মাইক Morearty এর উত্তর :

সহ

অন্তর্ভুক্ত include.pathকরার জন্য ফাইলটির নামের সাথে বিশেষ ভেরিয়েবল সেট করে আপনি অন্য একটি কনফিগারেশন ফাইল অন্তর্ভুক্ত করতে পারেন ।
অন্তর্ভুক্ত ফাইলটি তত্ক্ষণাত প্রসারিত হবে, যদি এর বিষয়বস্তু অন্তর্ভুক্ত নির্দেশের জায়গায় পাওয়া যায়।
যদি include.pathভেরিয়েবলের মান একটি আপেক্ষিক পথ হয় তবে সেই পথটি কনফিগারেশন ফাইলের সাথে সম্পর্কিত বলে মনে করা হয় যেখানে অন্তর্ভুক্ত নির্দেশিকাটি পাওয়া গেছে।
এর মান include.pathটিলডে সম্প্রসারণ সাপেক্ষে: ~/এর মান $HOMEএবং ~user/নির্দিষ্ট ব্যবহারকারীর হোম ডিরেক্টরিতে প্রসারিত হয় ।


আমি এমন মনে করি না.

আমি বরং সেটিংটি ফাইলে রাখি~/.gitconfig

ব্যবহারকারী-নির্দিষ্ট কনফিগারেশন ফাইল। একে "গ্লোবাল" কনফিগারেশন ফাইলও বলা হয়।

এইভাবে, এটি গিটহাবের দিকে ধাক্কা দেওয়ার পরে প্রকাশিত না করেই .gitconfig প্রকল্প-নির্দিষ্ট ফাইলটি সম্পূর্ণ করে। আরও দেখুন এই এইরকম উত্তর দেন গ্লোবাল কনফিগ ফাইলে আরো অনেক কিছুর জন্য।
গিটের 3 টি কনফিগার ফাইল রয়েছে


বিজনেস মন্তব্যগুলিতে যুক্ত করেছে:

দেখে মনে হচ্ছে সবাই এই প্রশ্নের পয়েন্ট মিস করেছে।
ডেভিড স্পষ্টত একটি (তাঁর সব ডট ফাইল রেপো আপ ধাক্কা চায় bashrc, gemrcইত্যাদি) তার সহ .gitconfigতাই তিনি সব থাকতে পারে তার সব তার মেশিনে সেটিংস। ব্যক্তিগত এন্ট্রিগুলিকে অন্তর্ভুক্ত করে এবং উপেক্ষা করে
কোনও .gitconfigফাইলের অংশগুলি ধাক্কা দেওয়ার একটি উপায় হ'ল তিনি (এবং আমি এই বিষয়ে) is

Possible / .gitconfig এর মতো একটি স্থানীয় ফাইল ডিক্রিপ্টেড অংশগুলির সাথে প্রাসঙ্গিকভাবে সম্পূর্ণ করার জন্য একটি ব্যক্তিগত উপায়টি ব্যক্তিগত সংবেদনশীল তথ্য ( এই থ্রেড ) সহ একটি ফাইল ডিক্রিপ্ট / এনক্রিপ্ট করতে একটি স্মাডজ / ক্লিন ফিল্টার ড্রাইভার ব্যবহার করা হবে that ফাইল।

এইভাবে আপনার সমস্ত ডট ফাইলের সাথে একটি গিট রেপো থাকতে পারে, এবং এনক্রিপ্ট করা তথ্যের সাথে একটি ফাইল ডিক্রিপ্ট করা এবং ডট ফাইলগুলিতে যোগ করা হতে পারে।

বিকল্প পাঠ

ইন .gitattributes(অথবা .git/info/a..) ব্যবহার:

myPrivateInfosFile filter=gpg diff=gpg

আপনার রেপো। কনফিগ ফাইলে:

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt

(একটি জিপিজি ভিত্তিক সমাধানের অর্থ অবশ্যই, আপনি আপনার ব্যক্তিগত / পাবলিক কীগুলি অন্য কোনও মাধ্যমে গন্তব্য কম্পিউটারে যোগাযোগ করেছেন যেখানে আপনি এই বিশেষ রেপো ক্লোন করে আপনার সমস্ত ডট ফাইল পুনরুদ্ধার করতে চান)

প্রকৃতপক্ষে, আপনার ক্ষেত্রে, স্মাড স্ক্রিপ্টটি যেমন সম্পূর্ণ হবে ততই ফাইলটি ডিক্রিপ্ট করার পরে আপনার গ্লোবাল ~/.gitconfigফাইলে প্রাসঙ্গিক অংশ যুক্ত করুন (যদি না আপনি অন্য কোনও স্থানের সাথে বৈশ্বিক কনফিগারেশন ফাইলটি ওভাররাইট না করেন ) বা তার জন্য অন্যান্য ডট ফাইলগুলি ব্যাপার।

https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (GPG অসুবিধা আরও আলোচনা করা হয়েছে এই থ্রেড ) (হিসাবে এই একটি পূর্ণ encrytped গীত রেপো থাকার চেয়ে ভিন্ন, এখানে আলোচনা )


5
আমি আমার বেসিক .gitconfig ফাইলটি একটি গিট সংগ্রহস্থলে প্রকাশ করতে চাই, তবে আমি তাতে গিথুব বিশদটি অন্তর্ভুক্ত করতে চাই না, সুতরাং কেন আমি কোনওভাবেই বাহ্যিক ফাইল থেকে তাদের অন্তর্ভুক্ত করতে চাই।
ডেভিড রেইনল্ডস

10

আপনি এটি কমান্ড-লাইন থেকে লোড করতে পারেন:

$ git config --local include.path "/path/to/.gitconfig"

"$PWD"/.gitconfigপরিবর্তে ব্যবহার করুন, যদি আপনি বর্তমান ডিরেক্টরি থেকে ফাইলটি লোড করতে চান।

উপরের কমান্ডটি চালানোর পরে, নিম্নলিখিত .git/configফাইলগুলি আপনার ফাইলে যুক্ত হবে:

[include]
        path = /path/to/.gitconfig

2

আমি বিশ্বাস করি আপনি ডিফঙ্ক্টের হাব সরঞ্জামটি ব্যবহার করে এটি সম্পাদন করতে পারবেন । এই Git কমান্ড যা অন্যান্য বিষয়ের মধ্যে, আপনি করতে সক্ষম হবেন একটি মোড়কের হয় GITHUB_USERএবং GITHUB_TOKENবিভিন্ন পরিবেশের। যা স্থানীয় .gitconfigফাইলের সেটিংসকে ওভাররাইড করবে ।

তারপরে এটি নির্বিঘ্নে ব্যবহারকারীর তৈরি করতে alias git=hubআপনি তার ZSH কনফিগারেশনে এলিয়াসে নির্দেশ করেছেন । তারপরে আপনি এমন একটি স্থানীয় ফাইল উত্স করতে সক্ষম হবেন যেখানে আপনি আপনার পরিবেশের ভেরিয়েবলগুলি সেট করে এবং কৌশলে আপনার সমস্ত ব্যক্তিগত তথ্যের সাহায্যে আপনার ভান্ডারটিকে সর্বজনীন বিশ্বে ঠেলাবেন।

** ওএসএক্স-এ হোমব্রিউ ব্যবহারকারীদের জন্য দ্রষ্টব্য, আপনি এর মাধ্যমে সরঞ্জামটি ইনস্টল করতে পারেন brew install hub

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