.Gitconfig- এ আমি কি একাধিক ব্যবহারকারীকে নির্দিষ্ট করতে পারি?


753

আমার মধ্যে ~/.gitconfig, আমি আমার ব্যক্তিগত ইমেল ঠিকানাটির নীচে [user]তালিকাবদ্ধ করি, যেহেতু আমি গিথুব রেপোসের জন্য এটি ব্যবহার করতে চাই।

তবে, আমি সম্প্রতি কাজের জন্য গিট ব্যবহার করাও শুরু করেছি। আমার সংস্থার গিট রেপো আমাকে প্রতিশ্রুতিবদ্ধ করার অনুমতি দেয়, তবে যখন এটি নতুন চেঞ্জসেটের ঘোষণা প্রেরণ করে তখন এটি বলে যে তারা অনামী থেকে কারণ এটি আমার মধ্যে ইমেল ঠিকানাটি স্বীকৃতি দেয় না .gitconfig- অন্ততপক্ষে, এটি আমার তত্ত্ব।

একাধিক [user]সংজ্ঞা নির্দিষ্ট করা কি সম্ভব .gitconfig? বা .gitconfigকোনও নির্দিষ্ট ডিরেক্টরিতে ডিফল্টকে ওভাররাইড করার অন্য কোনও উপায় আছে ? আমার ক্ষেত্রে, আমি সমস্ত কাজের কোডটি যাচাই করে দেখি ~/worksrc/- .gitconfigকেবলমাত্র সেই ডিরেক্টরিতে (এবং এর উপ-ডিরেক্টরিগুলি) নির্দিষ্ট করার কোনও উপায় আছে কি?



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

1
@ অ্যালেক্স: সেখানে গুরুত্বপূর্ণ কিছুটি ভুলে গেছেন - এটি সহজেই ইমেল বিজ্ঞপ্তিতে একটি নাম হতে পারে, প্রতিশ্রুতিতে আসলে কিছুই পরিবর্তন করে না।
ক্যাসকেবেল

1
এই পুনরাবৃত্ত কাজটি স্বয়ংক্রিয় করতে আপনি গিট-হুক ব্যবহার করতে পারেন: github.com/DrVanScott/git-clone-init
হেনিং

1
দয়া করে এই উত্তরটি স্বীকার করুন: stackoverflow.com/a/43654115/482899 । 2.13 গিটের পরে এটি সেরা সমাধান।
উত্তরত্রী

উত্তর:


1015

আপনি কোনও নির্দিষ্ট ব্যবহারকারী / ইমেল ঠিকানা ব্যবহার করতে স্বতন্ত্র রেপো কনফিগার করতে পারেন যা বৈশ্বিক কনফিগারেশনকে ওভাররাইড করে। রেপোর মূল থেকে, চালান

git config user.name "Your Name Here"
git config user.email your@email.com

যদিও ডিফল্ট ব্যবহারকারী / ইমেলটি আপনার। / .gitconfig এ কনফিগার করা আছে

git config --global user.name "Your Name Here"
git config --global user.email your@email.com

83
আপনি .git/configফাইলটিতে এই সেটিংগুলির প্রভাবগুলি দেখতে পাচ্ছেন
অ্যাবিজার্ন

21
আপনি সেই কনফিগারেশন ফাইলগুলি ম্যানুয়ালি সম্পাদনা করতে পারেন git config --editএবং এর সাথে git config --global --edit। এবং যদি আপনি আবাইজার্নের মন্তব্য মিস করেছেন , একটি সংগ্রহস্থলের কনফিগারেশন ফাইলটি রয়েছে <repo-root>/.git/config
ররি ও'কেনে

13
আপনার GIT_AUTHOR_EMAIL এবং GIT_COMMITTER_EMAIL (এবং * _NAME) আনসেট করা উচিত কারণ তারা স্থানীয় সেটিংস ওভাররাইড করবে
এসাইক্লিক

6
আলাদা রেপসের পরিবর্তে কোনও প্রদত্ত ফোল্ডারে সমস্ত রেপসের জন্য এটি করার কোনও উপায় আছে কি? : এখানে আমার প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/21307793/...
scubbo

6
আজ প্রকাশিত আরও আপ-টু ডেট সমাধানের জন্য নীচের এই উত্তরটি দেখুন Git 2.13
তেজসবুবেনে

489

গিট 2.13 , যেহেতু সদ্য চালু হওয়া শর্তাধীন ব্যবহার করে এটি সমাধান করা সম্ভব ।

একটি উদাহরণ:

গ্লোবাল কনফিগারেশন। / .Gitconfig

[user]
    name = John Doe
    email = john@doe.tld

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

কাজের নির্দিষ্ট কনফিগারেশন work / work / .gitconfig

[user]
    email = john.doe@company.tld

48
এটি এখন সেরা উত্তর যে গিট 2.13 প্রকাশিত হয়েছে।
তেজবাসুবেনে

1
এই সমাধানটি কি স্টেটমেন্টের মধ্যে অন্তর্ভুক্ত সমস্ত সাব-ডাইরেক্টরির জন্য কাজ করে মনে করে তাদের নিজস্ব .gitconfig ফাইল নেই? আমি তাই মনে করি, কিন্তু এখনও পর্যন্ত পরীক্ষার দ্বারা এটি বহন করা হয়নি।
গ্যারি

2
@ গ্যারি হ্যাঁ, আমার অভিজ্ঞতা এবং ডক্স অনুসারে: "যদি প্যাটার্নটি /, ** দিয়ে শেষ হয় তবে স্বয়ংক্রিয়ভাবে যুক্ত হবে added উদাহরণস্বরূপ, প্যাটার্ন foo / foo / ** হয়। অন্য কথায়, এটি "ফু" এবং এর ভিতরে থাকা সমস্ত কিছুকে পুনরাবৃত্তির সাথে মেলে; " rep হোম / টু / গ্রুপের ভিতরে থাকা সমস্ত সংগ্রহস্থলের জন্য অন্তর্ভুক্ত করুন [অন্তর্ভুক্ত থাকলে "গিটডির: ~ / টু / গ্রুপ /"] "
টমো জ্যানউইক

6
Gitdir গত অন্তর্ভুক্ত করা উচিত '/'।
ক্রিস ইয়িম

5
আপনি এটি পরীক্ষা করতে পারেন যে এটি git config --listবিভিন্ন ডিরেক্টরিতে চালিয়ে পুনরাবৃত্তভাবে কাজ করে । এর একটি উপ-ডিরেক্টরিতে ~/work/গিট সংগ্রহস্থল রয়েছে, includeIfকার্যকর হয়। নোট করুন যে এর উপ-ডিরেক্টরিগুলিতে ~/work/গিট সংগ্রহস্থল নেই, includeIfকার্যকর করা হয় না।
এনজেডডি 21

104

অথবা আপনি আপনার স্থানীয় .git/configফাইলে নিম্নলিখিত তথ্য যুক্ত করতে পারেন

[user]  
    name = Your Name
    email = your.email@gmail.com

27
... যা আপনার জন্য @ ডিস্কমুরারে প্রস্তাবিত কমান্ডগুলি হ'ল ম্যানুয়াল উপায়।
ব্যবহারকারী 456584

1
এটি কি প্রতি দূরবর্তী একাধিক লাইন যুক্ত করা সম্ভব?
আবেল কালেজো

55

একটি কমান্ড গিথুব অ্যাকাউন্টগুলি স্যুইচ করে

এই দ্রবণটি একক গিট ওরফে রূপ নেয়। একবার কার্যকর করা হলে, বর্তমান প্রকল্প ব্যবহারকারী অন্য অ্যাকাউন্টে সংযুক্ত হবে be

Ssh কী তৈরি করুন

ssh-keygen -t rsa -C "rinquin.arnaud@gmail.com" -f '/Users/arnaudrinquin/.ssh/id_rsa'

[...]

ssh-keygen -t rsa -C "arnaud.rinquin@wopata.com" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'

এগুলি আপনার গিটহাব / বিটবকেট অ্যাকাউন্টগুলিতে লিঙ্ক করুন

  1. ডিফল্ট পাবলিক কী অনুলিপি করুন pbcopy < ~/.ssh/id_rsa.pub
  2. আপনার গিটহাব একাউন্টে লগইন করুন
  3. add SSH keyগিথুব পৃষ্ঠায় কীটি আটকান
  4. অন্যান্য পাবলিক কী অনুলিপি করুন pbcopy < ~/.ssh/id_rsa_pro.pub
  5. প্রতিটি অন্যান্য অ্যাকাউন্টের জন্য 2 থেকে 4 ধাপ পুনরাবৃত্তি করুন এবং মানিয়ে নিন

পদক্ষেপ 1. স্বয়ংক্রিয় ssh কী স্যুইচিং।

এর sshউপর নির্ভর করে একটি নির্দিষ্ট এনক্রিপশন কী ব্যবহার করতে পাঠাতে আমরা কনফিগার করতে পারি host। সুন্দর জিনিসটি হ'ল এটির জন্য বেশ কয়েকটি উপাত্ত থাকতে পারে hostname

এই উদাহরণ ~/.ssh/configফাইলটি দেখুন:

# Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

# Professional github alias
Host github_pro
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_pro

গিট দূরবর্তী কনফিগারেশন

আপনি এখন পরিবর্তন git@github.comদ্বারা গিট রিমোটগুলিতে এই উপকরণগুলি ব্যবহার করতে পারেন git@github_pro

আপনি হয় আপনার বিদ্যমান প্রকল্পগুলি রিমোটগুলি (এমন কিছু ব্যবহার করে git remote set-url origin git@github_pro:foo/bar.git) পরিবর্তন করতে পারেন বা ক্লোন করার সময় এগুলি সরাসরি অভিযোজিত করতে পারেন ।

git clone git@github.com:ArnaudRinquin/atom-zentabs.git

উপনাম ব্যবহার করে, এটি হয়ে যায়:

git clone git@github_pro:ArnaudRinquin/atom-zentabs.git

পদক্ষেপ 2. গিট ইউজার.ইমেল পরিবর্তন করা

গিট কনফিগারেশন সেটিংস বিশ্বব্যাপী বা প্রতি প্রকল্পে হতে পারে। আমাদের ক্ষেত্রে, আমরা প্রতি প্রকল্প সেটিংস চাই। এটি পরিবর্তন করা খুব সহজ:

git config user.email 'arnaud.rinquin@wopata.com'

যদিও এটি সহজ, এটি আমাদের বিকাশকারীদের দীর্ঘস্থায়ী হতে চলেছে। আমরা এটির জন্য একটি খুব সাধারণ গিট ওরফে লিখতে পারি।

আমরা এটি ~/.gitconfigফাইল যুক্ত করতে যাচ্ছি ।

[user]
    name = Arnaud Rinquin
    email = rinquin.arnaud@gmail.com

...

[alias]
    setpromail = "config user.email 'arnaud.rinquin@wopata.com'"

তারপরে, আমাদের যা করতে হবে তা হল git setpromailকেবলমাত্র এই প্রকল্পের জন্য আমাদের ইমেলটি পরিবর্তন করা changed

পদক্ষেপ 3. একটি কমান্ড সুইচ দয়া করে ?!

একক প্যারামিটার-কম কমান্ডের সাহায্যে ডিফল্ট অ্যাকাউন্ট থেকে কোনও নির্দিষ্টটিতে স্যুইচ করা ভাল না? এটি অবশ্যই সম্ভব। এই আদেশের দুটি পদক্ষেপ থাকবে:

  • বর্তমান প্রকল্পের রিমোটগুলি বেছে নেওয়া পছন্দসই উপকরণগুলিতে পরিবর্তন করুন
  • বর্তমান প্রকল্প user.email কনফিগারেশন পরিবর্তন করুন

আমাদের কাছে ইতিমধ্যে দ্বিতীয় পদক্ষেপের জন্য একটি কমান্ড সমাধান রয়েছে, তবে প্রথমটিটি আরও শক্ত। একটি কমান্ড রিমোট হোস্ট পরিবর্তন

আপনার আরও যোগ করতে অন্য গিট ওরফে কমান্ড আকারে সমাধানটি এখানে আসে ~/.gitconfig:

[alias]
  changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"

এটি সমস্ত হোস্টকে এক হোস্ট থেকে অন্য হোস্টে (ওরফে) পরিবর্তন করতে দেয়। উদাহরণ দেখুন:

$ > git remote -v
origin  git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin  git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (push)

$ > git changeremotehost github.com github_pro

$ > git remote -v
origin  git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin  git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)

তাদের সব একত্রিত করুন

আমাদের এখন দুটি কমান্ডকে একটিতে একত্রিত করতে হবে, এটি বেশ সহজ। আমি কীভাবে বিটবাকেট হোস্ট স্যুইচিংকে একীভূত করব দেখুন।

[alias]
  changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
  setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
  gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"

উত্স লিংক-টিউটোরিয়াল


এটি উজ্জ্বল, ধন্যবাদ। আমি প্রতি ইমেল প্রতি গুচ্ছের সাথে কাজ করি যাতে আমার setpromailউলামের config --globalপরিবর্তে এটি করা হয় (এবং বিভিন্ন ইমেল ঠিকানা সেট করার জন্য আমার অন্যান্য সেট উপাধি রয়েছে)। এটি কাজ করে!
মিশেল-স্ল্যাম

1
এই 2 টি আলাদা অ্যাকাউন্টের জন্য আমি কীভাবে বিভিন্ন জিপিজি কী দিয়ে সাইন করতে পারি? আমার কাছে 2x গিথব অ্যাকাউন্টগুলির জন্য 2x জিপিজি কী রয়েছে এবং আলাদাভাবে সাইন ইন করতে চাই। "Git কনফিগ --global user.signingkey হাতের"
hakkican

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

আইডেন্টিফাইফাইল নয়, এটি ইডেনফাইটি ফাইল।
খ্রিস্টান

40

অর সেলার ব্লগ পোস্ট থেকে কিছুটা অনুপ্রেরণা পাওয়ার পরে আমি একটি প্রাক-প্রতিশ্রুতিযুক্ত হুক লিখেছি (এতে থাকে ~/.git/templates/hooks) যা কোনও স্থানীয় রিপোসিটরের ভিতরে থাকা তথ্যের ভিত্তিতে নির্দিষ্ট ব্যবহারকারীর নাম এবং ইমেল ঠিকানা নির্ধারণ করে ./.git/config:

আপনাকে এতে টেমপ্লেট ডিরেক্টরিতে পথটি স্থাপন করতে হবে ~/.gitconfig:

[init]
    templatedir = ~/.git/templates

তারপরে প্রতিটি git initবা git cloneসেই হুকটি তুলে নেবে এবং পরবর্তী সময়ে ব্যবহারকারীর ডেটা প্রয়োগ করবে git commit। আপনি যদি ইতিমধ্যে বিদ্যমান উপস্থিত রেপগুলিতে হুকটি প্রয়োগ করতে চান তবে কেবল পুনরায় পুনর্বিবেচনার জন্য কেবল git initরেপোর ভিতরে একটি চালনা করুন ।

আমি যে হুকটি নিয়ে এসেছি তা এখানে (এটি এখনও কিছু পোলিশিংয়ের প্রয়োজন - পরামর্শগুলি স্বাগত। এটি হিসাবে সংরক্ষণ করুন

~/.git/templates/hooks/pre_commit

অথবা

~/.git/templates/hooks/post-checkout

এবং নিশ্চিত করুন যে এটি কার্যকর হয়: chmod +x ./post-checkout || chmod +x ./pre_commit

#!/usr/bin/env bash

# -------- USER CONFIG
# Patterns to match a repo's "remote.origin.url" - beginning portion of the hostname
git_remotes[0]="Github"
git_remotes[1]="Gitlab"

# Adjust names and e-mail addresses
local_id_0[0]="my_name_0"
local_id_0[1]="my_email_0"

local_id_1[0]="my_name_1"
local_id_1[1]="my_email_1"

local_fallback_id[0]="${local_id_0[0]}"
local_fallback_id[1]="${local_id_0[1]}"


# -------- FUNCTIONS
setIdentity()
{
    local current_id local_id

    current_id[0]="$(git config --get --local user.name)"
    current_id[1]="$(git config --get --local user.email)"

    local_id=("$@")

    if [[ "${current_id[0]}" == "${local_id[0]}" &&
          "${current_id[1]}" == "${local_id[1]}" ]]; then
        printf " Local identity is:\n"
        printf "»  User: %s\n»  Mail: %s\n\n" "${current_id[@]}"
    else
        printf "»  User: %s\n»  Mail: %s\n\n" "${local_id[@]}"
        git config --local user.name "${local_id[0]}"
        git config --local user.email "${local_id[1]}"
    fi

    return 0
}

# -------- IMPLEMENTATION
current_remote_url="$(git config --get --local remote.origin.url)"

if [[ "$current_remote_url" ]]; then

    for service in "${git_remotes[@]}"; do

        # Disable case sensitivity for regex matching
        shopt -s nocasematch

        if [[ "$current_remote_url" =~ $service ]]; then
            case "$service" in

                "${git_remotes[0]}" )
                    printf "\n»» An Intermission\n»  %s repository found." "${git_remotes[0]}"
                    setIdentity "${local_id_0[@]}"
                    exit 0
                    ;;

                "${git_remotes[1]}" )
                    printf "\n»» An Intermission\n»  %s repository found." "${git_remotes[1]}"
                    setIdentity "${local_id_1[@]}"
                    exit 0
                    ;;

                * )
                    printf "\n»  pre-commit hook: unknown error\n» Quitting.\n"
                    exit 1
                    ;;

            esac
        fi
    done
else
    printf "\n»» An Intermission\n»  No remote repository set. Using local fallback identity:\n"
    printf "»  User: %s\n»  Mail: %s\n\n" "${local_fallback_id[@]}"

    # Get the user's attention for a second
    sleep 1

    git config --local user.name "${local_fallback_id[0]}"
    git config --local user.email "${local_fallback_id[1]}"
fi

exit 0

সম্পাদনা করুন:

তাই আমি পাইথনে হুক এবং কমান্ড হিসাবে হুকটি পুনরায় লিখেছিলাম। অতিরিক্তভাবে স্ক্রিপ্টটিকে গিট কমান্ড ( git passport) হিসাবেও কল করা সম্ভব । এছাড়াও একটি কনফিগার ফাইল ( ~/.gitpassport) এর অভ্যন্তরে আইডির একটি স্বেচ্ছাসেবী সংখ্যার সংজ্ঞা দেওয়া সম্ভব যা একটি প্রম্পটে নির্বাচনযোগ্য। আপনি প্রকল্পটি github.com এ পাবেন: গিট-পাসপোর্ট - একাধিক গিট অ্যাকাউন্ট / ব্যবহারকারীর পরিচয় পরিচালনা করতে পাইথনে লিখিত একটি গিট কমান্ড এবং হুক


1
এটি ঝরঝরে কাজ করে। তবে এটি পোস্ট-চেকআউট (পোস্ট-কমিটের পরিবর্তে) হুক তৈরি করে আমার পক্ষে আরও ভাল কাজ করেছে। এই উত্তরটির উন্নতি করার জন্য আমার পরামর্শগুলি হ'ল উল্লেখ করুন: ১. স্নিপেটটি ~ / .git / টেমপ্লেট / হুক / পোস্ট-চেকআউট হিসাবে সংরক্ষণ করতে হবে এবং অনুমতি দেওয়া হবে chmod +x post-checkout, ২. git_remotesমানগুলি পুরো হোস্টনামের প্রথম অংশ, যেমন git@github.com, ৩. local_idমানগুলি ব্যবহারকারীদের নিজ নিজ নাম এবং ইমেল ঠিকানার সাথে সম্পাদনা করতে হবে।
শান্তনু কুমার

@ শান্তানু কুমার আপনার মন্তব্যের জন্য ধন্যবাদ। আপনার প্রস্তাব অনুসারে আমি উত্তরটি সামঞ্জস্য করেছি। আমি শিগগিরই পাইথনের স্ক্রিপ্টটি আবার লিখব।
স্যুসিয়ার

নিয়মিত এক্সপ্রেশন এবং রিমোটগুলি ছাড়াই সংগ্রহস্থলের জন্য সমর্থন যুক্ত করা হয়েছে। সহজ ডাউনলোডের জন্য সমস্ত এখানে মার্জড । একই পরিষেবাতে বিভিন্ন প্রকল্পের জন্য পরিচয় আলাদা করার জন্য রিজেক্সপ্স। এবং যেমন রিমোটলেস রেপোগুলিকে সমর্থন করে যেমন git initকোনও আইডিই থেকে নতুন প্রকল্প যেমন eclipse(যা ইন্টারেক্টিভ প্রাক-কমিট ট্রিগারগুলি পরিচালনা করতে পারে না)
সিএফআই

25

আপনি যদি কোনও ডিফল্ট ইমেল ঠিকানা ( গিথুব ব্যবহারকারীর ইমেল ঠিকানা লিঙ্ক ) রাখতে না চান, আপনি কনফিগার করতে পারেন যে আপনাকে জিজ্ঞাসা করতে হবে। আপনি কীভাবে এটি করতে পারেন তা আপনার ব্যবহার করা গিটের সংস্করণের উপর নির্ভর করে, নীচে দেখুন।

(উদ্দেশ্য) ত্রুটিটি হ'ল প্রতিটি প্রতিবেদনের জন্য আপনাকে একবার নিজের ইমেল ঠিকানা (এবং আপনার নাম) কনফিগার করতে হবে। সুতরাং, আপনি এটি করতে ভুলবেন না।

সংস্করণ <2.7.0

[user]
    name = Your name
    email = "(none)"

অর সেলার ব্লগ পোস্টে~/.gitconfig ড্যান অ্যালোনির একটি মন্তব্যে যেমন আপনার বৈশ্বিক কনফিগারেশন রয়েছে । কোনও সংগ্রহস্থলে প্রথম প্রতিশ্রুতিবদ্ধ করার চেষ্টা করার সময়, গিটটি সুন্দর বার্তার সাথে ব্যর্থ হয়:

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got '(none)')

স্থানীয়ভাবে ইমেল ঠিকানা সেট করা থাকলে নামটি বিশ্বব্যাপী কনফিগারেশন থেকে নেওয়া হয় (বার্তাটি পুরোপুরি সঠিক নয়)।

2.7.0 ≤ সংস্করণ <2.8.0

<2.7.0 সংস্করণে আচরণটি 2.7.0 এর সাথে লক্ষ্যযুক্ত এবং ঠিক করা হয়নি। অর সেলার ব্লগ পোস্টে বর্ণিত হিসাবে আপনি এখনও একটি প্রাক-কমিট হুক ব্যবহার করতে পারেন । এই সমাধানটি অন্যান্য সংস্করণগুলির জন্যও কাজ করে, তবে অন্যান্য সংস্করণগুলির জন্য নয়।

সংস্করণ ≥ 2.8.0

ড্যান অ্যালনি সেই আচরণ অর্জনের জন্য একটি বিকল্প যুক্ত করেছিলেন ( রিলিজ নোট দেখুন )। এটি দিয়ে ব্যবহার করুন:

[user]
    useConfigOnly = true

এটিকে কাজ করতে আপনি বৈশ্বিক কনফিগারেশনে কোনও নাম বা ইমেল ঠিকানা দিতে পারেন না। তারপরে, প্রথম প্রতিশ্রুতিতে, আপনি একটি ত্রুটি বার্তা পান

fatal: user.useConfigOnly set but no name given

সুতরাং বার্তাটি খুব শিক্ষামূলক নয়, তবে যেহেতু আপনি স্পষ্টভাবে বিকল্পটি সেট করেছেন, আপনার কী করা উচিত তা আপনার জানা উচিত। <2.7.0 সংস্করণগুলির সমাধানের বিপরীতে, আপনাকে সর্বদা নাম এবং ইমেল দুটি নিজেই সেট করতে হবে।


আমি কয়েক মাস এই পদ্ধতিটি ব্যবহার করি, এটি দুর্দান্ত কাজ করেছিল। আমার একাধিক ইমেল ঠিকানা রয়েছে (ব্যক্তিগত, কাজ) এবং আমি গ্লোবাল গিটকনফাইগে একটি "ডিফল্ট" কনফিগার করতে চাই না। বিশেষ মান সহ "(কিছুই নয়)" গিটটি যখনই আমি ব্যবহারকারীর নাম এবং হোস্টনামের উপর ভিত্তি করে একটি ধারণা অনুমান করার পরিবর্তে নতুন রেপো স্পিন করি তখন এটি বৈধ ঠিকানা সরবরাহ করতে অনুরোধ জানায় (যা বিরক্তিকর এবং আমি এটির প্রয়োজন)। যাইহোক, সম্প্রতি গিটের আপগ্রেড সংস্করণ (২.7.০, সম্ভবত এর আগে) দিয়ে আমি খুঁজে পেয়েছি যে বিশেষ মান "(কোনওটি নয়)" মারাত্মক ত্রুটিগুলি আর ট্রিগার করে না। পরিবর্তে এটি "জন দো <(কোনও নয়)>" যেমনটি ব্যবহার করবে ...
ঝুইয়ুন ওয়েই

@ ওয়াজিবয়: ওহ, আপনি ঠিক বলেছেন। আমি git bisectযে 19ce497c প্রতিশ্রুতিবদ্ধ তা খুঁজে পেয়েছি ... এই আচরণের পরিচয় করিয়ে দিয়েছি । তবে, সংস্করণটি থেকে স্বতন্ত্র (2.5 - 2.7) আমি email =কনফিগারেশনে (কোনও যুক্তি ছাড়াই) ব্যবহার করতে পারি এবং এটি email = "(none)"পুরানো সংস্করণগুলির মতোই আচরণ দেখায় । আপনি এটা নিশ্চিত করতে পারেন? যদি তা হয় তবে আমি আমার উত্তরটি সম্পাদনা করব। এটি এতটা সুস্পষ্ট বলে মনে হওয়ায় আমি কেবল সন্দেহবাদী এবং আমি এটি আগে ব্যবহার করি নি।
জন

আমি email =২.7.০ এ চেষ্টা করেছি , গিট এখনও ব্যবহারকারীর নাম এবং হোস্টনামের ভিত্তিতে ইমেল ঠিকানাটি অনুমান করে। আমি এখন pre-commitসেলার ব্লগে অ্যাপ্রোচ ব্যবহার করি । আমিও ড্যান Aloni যারা নিয়ে এসেছেন বিজ্ঞাপিত "(none)"Sella এর পোস্টে ধারণা এবং তিনি একজন প্যাচ আনুষ্ঠানিকভাবে একটি বৈশিষ্ট্য হিসাবে এই বাস্তবায়ন পর্যন্ত দায়ের: permalink.gmane.org/gmane.comp.version-control.git/285301
Zhuoyun ওয়েই

3
git-2.8 যেহেতু: "user.useConfigOnly" কনফিগারেশন ভেরিয়েবলটি ব্যবহারকারীকে সর্বদা user.email এবং user.name github.com/git/git/blob/master/Docamentation/RelNotes/2.8.0
rofrol

@ রফ্রোল তথ্যের জন্য ধন্যবাদ। আমি সেই অনুযায়ী আমার উত্তর আপডেট করেছি।
জন

24

সঙ্গে শর্তসাপেক্ষ অন্তর্ভুক্ত গীত 2.13, এটা এখন সামান্য কাজের সঙ্গে এক মেশিনে একাধিক ব্যবহারকারী / ইমেল সহাবস্থান আছে করা সম্ভব।

user.gitconfigআমার ব্যক্তিগত নাম এবং ইমেল আছে work-user.gitconfigআমার কাজের নাম এবং ইমেল আছে। দুটি ফাইলই ~পথে রয়েছে।

সুতরাং আমার ব্যক্তিগত নাম / ইমেলটি ডিফল্টরূপে প্রয়োগ হয়। জন্য c:/work/Dir, আমার কাজ নাম / ইমেল প্রয়োগ করা হয়। জন্য c:/work/github/Dir, আমার ব্যক্তিগত নাম / ইমেল প্রয়োগ করা হয়। শেষ সেটিংস প্রয়োগ হওয়ার সাথে সাথে এটি কাজ করে।

# ~/.gitconfig
[include]
    path = user.gitconfig
[includeIf "gitdir/i:c:/work/"]
    path = work-user.gitconfig
[includeIf "gitdir/i:c:/work/github/"]
    path = user.gitconfig

gitdirকেস-সংবেদনশীল এবং gitdir/iকেস-সংবেদনশীল।

"gitdir/i:github/"শর্তসাপেক্ষে কোনও ডিরেক্টরিতে githubএটির সাথে যুক্ত ব্যবহার করে।


যদিও আপনার উত্তরটির প্রশংসা করা হয়েছে এবং ভাল টোমো জেনউইক আপনার 20 দিন আগে একই দিয়েছে। দয়া করে এই উত্তরটি মুছে ফেলার বিষয়ে বিবেচনা করুন।
Hedge

5
@ হ্যাজ হ্যাঁ, আমি তার উত্তরটিকে উচ্চ করে দিয়েছি, তবে উইন্ডোতে কনফিগার করতে আমার কিছুটা সময় লেগেছে এবং এটিই আমাকে gitdir/iসাহায্য করেছিল (যার উত্তর তার উল্লেখ করে না)।
hIpPy

নির্দিষ্টভাবে @hIpPy এটিকে আমার ব্যবহারের ক্ষেত্রে সরাসরি প্রয়োগ করেছে এবং টমাসের উত্তরের চেয়ে অনুসরণ করা এত সহজ করে তুলেছে। আমি উভয় upvated।
আইজাক অ্যাডামস

18

gitএকাধিক নাম / ইমেল নিয়ে কাজ করার আরেকটি বিকল্প হ'ল গ্লোবাল এবং রিপোজিটরি-নির্দিষ্ট কনফিগারটিকে ওভাররাইড করতে পতাকাটি gitব্যবহার করে এবং ব্যবহার করা -c

উদাহরণস্বরূপ, একটি উপনাম সংজ্ঞায়িত করে:

alias git='/usr/bin/git -c user.name="Your name" -c user.email="name@example.com"'

এটি কাজ করে কিনা তা দেখতে, কেবল টাইপ করুন git config user.email:

$ git config user.email
name@example.com

একটি উপনামের পরিবর্তে, আপনি নিজের gitমধ্যে একটি কাস্টম এক্সিকিউটেবলও রাখতে পারেন $PATH

#!/bin/sh
/usr/bin/git -c user.name="Your name" -c user.email="name@example.com" "$@"

একটি সংগ্রহস্থল-নির্দিষ্ট এই পদ্ধতির সুবিধা .git/configহ'ল gitকাস্টম gitপ্রোগ্রামটি সক্রিয় থাকাকালীন এটি প্রতিটি সংগ্রহস্থলের ক্ষেত্রে প্রযোজ্য । এইভাবে, আপনি কোনও (ভাগ করা) কনফিগারেশন পরিবর্তন না করেই সহজেই ব্যবহারকারী / নামের মধ্যে স্যুইচ করতে পারেন।


14

গিট এলিয়াস (এবং গিট কনফিগারেশনের বিভাগগুলি) উদ্ধারে!

একটি নাম (কমান্ড লাইন থেকে) যুক্ত করুন:

git config --global alias.identity '! git config user.name "$(git config user.$1.name)"; git config user.email "$(git config user.$1.email)"; :'

তারপরে, উদাহরণস্বরূপ সেট করুন

git config --global user.github.name "your github username"
git config --global user.github.email your@github.email

এবং নতুন বা ক্লোন করা রেপোতে আপনি এই আদেশটি চালাতে পারেন:

git identity github

এই সমাধান স্বয়ংক্রিয় নয়, কিন্তু unsetting ব্যবহারকারী এবং ইমেল আপনার বিশ্বব্যাপী মধ্যে ~/.gitconfigএবং সেটিং user.useConfigOnlyকরতে trueGit জোর দেবে আপনি তাদের প্রতিটি নতুন বা ক্লোন রেপো তে ম্যানুয়ালি সেট করতে মনে করিয়ে দিতে।

git config --global --unset user.name
git config --global --unset user.email
git config --global user.useConfigOnly true

1
আমি আপনার সমাধান পছন্দ করি; যাইহোক, আমি যখন আমার বিশ্বব্যাপী আনসেট সেট করি তখন এটি কেবলমাত্র আমার কম্পিউটারের হোস্টের সাথে প্রতিশ্রুতি দেয় না বরং গিট আমাকে কোনও
রেপোগুলিতে

12

এখানে অনেক উত্তর পড়ার পরে সম্পূর্ণ পদক্ষেপ এখানে

বিভিন্ন গিথব অ্যাকাউন্টের জন্য কীভাবে একাধিক এসএসএইচ কী সেটিংস সেট আপ করবেন

আপনি সম্ভবত বর্তমানে সংরক্ষিত কীগুলি পরীক্ষা করা শুরু করতে পারেন

$ ssh-add -l

যদি আপনি আগে সমস্ত ক্যাশেড কীগুলি মুছতে চান ( alচ্ছিক, এটি সম্পর্কে যত্নবান )

$ ssh-add -D

তারপরে আপনি প্রতিটি ইমেইল / অ্যাকাউন্টের সাথে লিঙ্কিত একটি ssh পাব / প্রাইভেট কী তৈরি করতে পারেন যা আপনি চান / ব্যবহার করতে চান

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "work@company.com" <-- save it as "id_rsa_work"
$ ssh-keygen -t rsa -C "pers@email.com" <-- save it as "id_rsa_pers"

এই কমান্ডগুলি সম্পাদন করার পরে আপনার নীচের ফাইলগুলি তৈরি হবে

~/.ssh/id_rsa_work      
~/.ssh/id_rsa_work.pub

~/.ssh/id_rsa_pers
~/.ssh/id_rsa_pers.pub 

প্রমাণীকরণ এজেন্ট চলমান আছে তা নিশ্চিত করুন

$ eval `ssh-agent -s`

উত্পন্ন কীগুলি নিম্নলিখিত হিসাবে যুক্ত করুন (~ / .ssh ফোল্ডার থেকে)

$ ssh-add id_rsa_work
$ ssh-add id_rsa_pers

এখন আপনি আপনার সংরক্ষিত কীগুলি আবার পরীক্ষা করতে পারেন

$ ssh-add -l

এখন আপনি প্রয়োজন আপনার GitHub / bickbuket সার্ভার acces কী করতে উত্পন্ন সার্বজনিক কী যোগ করার জন্য

প্রতিটি রেপোকে বিভিন্ন ফোল্ডারে ক্লোন করুন

সেই ফোল্ডারে যান যেখানে ব্যবহারকারী কাজ করবে এবং এটি সম্পাদন করবে

$ git config user.name "Working Hard"
$ git config user.email "work@company.com" 

এটি ".git / কনফিগারেশন" এর বিষয়বস্তু যাচাই করে তা দেখতে কেবল

যে ফোল্ডারে ব্যবহারকারী কাজ করবে এবং এটিকে সম্পাদন করবে exec

$ git config user.name "Personal Account"
$ git config user.email "pers@email.com" 

এটি ".git / কনফিগারেশন" এর বিষয়বস্তু যাচাই করে তা দেখতে কেবল

এত কিছুর পরে আপনি কেবলমাত্র এই দুটি ফোল্ডারের মধ্যে স্যুইচ করে আপনার ব্যক্তিগত এবং কাজের কোডটি প্রতিশ্রুতিবদ্ধ করতে সক্ষম হবেন

আপনি যদি গিট ব্যাশ ব্যবহার করছেন এবং উইন্ডোজের অধীনে ssh কী উত্পন্ন করার দরকার রয়েছে তবে এই পদক্ষেপগুলি অনুসরণ করুন:

https://support.automaticsync.com/hc/en-us/articles/202357115-Generating-an-SSH-Key-on-Windows


9

একটি সহজ সমাধান রয়েছে যা ভুলগুলি এড়ানোর জন্য ভাল কাজ করে বলে মনে হচ্ছে।

কেবল [user]আপনার থেকে বিভাগটি সরিয়ে ফেলুন ~/.gitconfig, যা user.nameপ্রতিটি সংগ্রহস্থলের জন্য সেট না করেই আপনাকে কোনও কমিট করা থেকে বিরত রাখবে ।

আপনার মধ্যে ~/.bashrc, ব্যবহারকারীর জন্য কিছু সাধারণ উপকরণ এবং ইমেল যুক্ত করুন:

alias ggmail='git config user.name "My Name";git config user.email me@gmail.com'
alias gwork='git config user.name "My Name";git config user.email me@work.job'

দুর্দান্ত কারণ নয় আপনি প্রতিটি গিট
রেপিতে

9

এই উত্তরটি আঞ্চলিকভাবে @ সৌসির দ্বারা পোস্টটি দ্বারা অনুপ্রাণিত হয়েছে, তবে আমি সেট করার একটি স্বয়ংক্রিয় উপায় user.nameএবং user.emailপ্রতি রিপো ভিত্তিতে রিমোটের উপর ভিত্তি করে সন্ধান করছিলাম , এটি যে গিট-পাসপোর্ট প্যাকেজটি তৈরি করেছিল তার চেয়ে কিছুটা হালকা ওজন ছিল । ব্যবহারের কনফিগ কেবলমাত্র সেটিংসের জন্য @ জনকে h / t করুন। এখানে আমার সমাধান:

.gitconfig পরিবর্তনগুলি:

[github]
    name = <github username>
    email = <github email>
[gitlab]
    name = <gitlab username>
    email = <gitlab email>
[init]
    templatedir = ~/.git-templates
[user]
    useConfigOnly = true

পোস্ট-চেকআউট হুক যা নিম্নলিখিত পথে সংরক্ষণ করা উচিত ~/.git-templates/hooks/post-checkout:

#!/usr/bin/env bash

# make regex matching below case insensitive
shopt -s nocasematch

# values in the services array should have a corresponding section in
# .gitconfig where the 'name' and 'email' for that service are specified
remote_url="$( git config --get --local remote.origin.url )"
services=(
    'github'
    'gitlab'
)

set_local_user_config() {
    local service="${1}"
    local config="${2}"
    local service_config="$( git config --get ${service}.${config} )"
    local local_config="$( git config --get --local user.${config} )"

    if [[ "${local_config}" != "${service_config}" ]]; then
        git config --local "user.${config}" "${service_config}"
        echo "repo 'user.${config}' has been set to '${service_config}'"
    fi
}

# if remote_url doesn't contain the any of the values in the services
# array the user name and email will remain unset and the
# user.useConfigOnly = true setting in .gitconfig will prompt for those
# credentials and prevent commits until they are defined
for s in "${services[@]}"; do
    if [[ "${remote_url}" =~ "${s}" ]]; then
        set_local_user_config "${s}" 'name'
        set_local_user_config "${s}" 'email'
        break
    fi
done

আমি গিথাব এবং গিটল্যাবের জন্য বিভিন্ন শংসাপত্র ব্যবহার করি, তবে উপরের কোডে সেই উল্লেখগুলি আপনার ব্যবহার করা কোনও পরিষেবাতে প্রতিস্থাপন বা সংযোজন করা যেতে পারে। পোস্ট-চেকআউট হুকটি স্বয়ংক্রিয়ভাবে কোনও রেপির জন্য স্থানীয়ভাবে ব্যবহারকারী নাম এবং ইমেল সেট করে একটি চেকআউট করার পরে পরিষেবার নামটি দূরবর্তী ইউআরএলে উপস্থিত রয়েছে তা নিশ্চিত করে নিন, post-checkoutস্ক্রিপ্টের পরিষেবাগুলির অ্যারেতে যুক্ত করুন এবং এর জন্য একটি বিভাগ তৈরি করুন আপনার .gitconfigসেই পরিষেবার জন্য আপনার ব্যবহারকারীর নাম এবং ইমেল রয়েছে।

যদি পরিষেবার কোনও নামই দূরবর্তী url তে উপস্থিত না হয় বা রেপোতে দূরবর্তী না থাকে তবে ব্যবহারকারীর নাম এবং ইমেল স্থানীয়ভাবে সেট করা হবে না। এই ক্ষেত্রে user.useConfigOnlyসেটিংসটি প্লেতে থাকবে যা ব্যবহারকারীর নাম এবং ইমেলটি রেপো স্তরে সেট না করা পর্যন্ত আপনাকে কমিট করার অনুমতি দেয় না এবং ব্যবহারকারীকে সেই তথ্য কনফিগার করার অনুরোধ জানায়।


1
দুর্দান্ত সমাধান। chmod 755হুক স্ক্রিপ্ট ভুলবেন না । অন্যথায়, এটি অনুলিপি করা হবে তবে কখনও কার্যকর করা হবে না।
onekiloparsec

5

GIT_AUTHOR_EMAIL স্থানীয় .bashrc

.bashrc_local: এই ফাইলটি ট্র্যাক করবেন না, এটি কেবল আপনার কাজের কম্পিউটারে রাখুন:

export GIT_AUTHOR_EMAIL='me@work.com'
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"

.bashrc: এই ফাইলটি ট্র্যাক করুন, কাজ এবং হোম কম্পিউটার উভয় ক্ষেত্রেই এটি একই করুন:

F="$HOME/.bashrc_local"
if [ -r "$F" ]; then
    . "$F"
fi

আমি আমার ডটফাইলগুলি সিঙ্ক করতে https://github.com/technicalpickles/homesick ব্যবহার করছি ।

যদি কেবল gitconfig পরিবেশের ভেরিয়েবল গ্রহণ করে: গিট কনফিগারেশনে শেল পরিবর্তনশীল প্রসারিত


5

উইন্ডোজ পরিবেশ

Git Extensions --> Settings --> Global Settingsআপনার সিস্টেমে এটি ইনস্টল করা থাকলে অতিরিক্ত এটি থেকে পরিবর্তন করা যেতে পারে ।

gitextensions-সর্বশেষ রিলিজ

এই সেটিংস অ্যাক্সেস করতে উইন্ডোজ এনভায়রনমেন্টের একটি ফোল্ডার / ডিরেক্টরিতে ডান ক্লিক করুন। এখানে চিত্র বর্ণনা লিখুন

আপডেট : সংস্করণ 2.49 এ একাধিক সেটিংস কীভাবে স্যুইচ / রক্ষণাবেক্ষণ করা যায় সংস্করণ 2.49 এ একাধিক সেটিংস কীভাবে স্যুইচ / রক্ষণাবেক্ষণ করবেন


এই একাধিক ব্যবহারকারীকে কেবল তাদের সম্পাদনা করার পরিবর্তে কীভাবে সম্বোধন করবে?

@D_N সেটিংসে স্যুইচ করার বিকল্পগুলির সাথে নতুন স্ক্রিনশট আপডেট করেছে।
অভিজিৎ

স্থানীয় রেপো ফোল্ডারটি খুলুন এবং নেভিগেশন মেনু থেকে গিট-কনফিগার নির্বাচন করুন তারপরে স্থানীয় রেপো ট্যাবটি ক্লিক করুন, বিষয়বস্তুগুলি উপরের উত্তর হিসাবে $ লোকাল_রেপো_প্যাথ / .git / কনফিগারে প্রয়োগ করা হবে।
ম্যাক্সইউ

3

হতে পারে এটি একটি সাধারণ হ্যাক, তবে এটি কার্যকর। কেবল নীচের মতো 2 টি এসএস কী তৈরি করুন।

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/GowthamSai/.ssh/id_rsa): work
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in damsn.
Your public key has been saved in damsn.pub.
The key fingerprint is:
SHA256:CrsKDJWVVek5GTCqmq8/8RnwvAo1G6UOmQFbzddcoAY GowthamSai@Gowtham-MacBook-Air.local
The key's randomart image is:
+---[RSA 4096]----+
|. .oEo+=o+.      |
|.o o+o.o=        |
|o o o.o. +       |
| =.+ .  =        |
|= *+.   S.       |
|o*.++o .         |
|=.oo.+.          |
| +. +.           |
|.o=+.            |
+----[SHA256]-----+

একইভাবে ব্যক্তিগতর জন্য আরও একটি তৈরি করুন। সুতরাং, আপনার কাছে 2 টি এসএস কী, কাজ এবং সংস্থা রয়েছে। Work.pub, work, personal.pub, ~ / .ssh / ডিরেক্টরিতে ব্যক্তিগত অনুলিপি করুন ।

তারপরে নিম্নলিখিত লাইনগুলির সাথে একটি শেল স্ক্রিপ্ট তৈরি করুন এবং নীচের বিষয়বস্তু সহ এটি crev.sh (কোম্পানী বিপরীত) হিসাবে নাম দিন।

cp ~/.ssh/work ~/.ssh/id_rsa
cp ~/.ssh/work.pub ~/.ssh/id_rsa.pub

একই উপায়ে, নীচের বিষয়বস্তু সহ আরও একটি নামক prev.sh (ব্যক্তিগত বিপরীত) তৈরি করুন।

cp ~/.ssh/personal ~/.ssh/id_rsa
cp ~/.ssh/personal.pub ~/.ssh/id_rsa.pub

~ / .bashrc এ নীচের মতো sc স্ক্রিপ্টগুলির জন্য উপকরণ যুক্ত করুন

alias crev="sh ~/.ssh/crev.sh"
alias prev="sh ~/.ssh/prev.sh"
source ~/.bashrc

আপনি যখনই সংস্থাটি ব্যবহার করতে চান, কেবল ক্রেভ করুন এবং আপনি ব্যক্তিগত ব্যবহার করতে চান :- পি করুন।

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


1

আমি একটি ব্যাশ ফাংশন তৈরি করেছি যা এটি পরিচালনা করে। এখানে গিথুব রেপো রয়েছে

রেকর্ডের জন্য:

# Look for closest .gitconfig file in parent directories
# This file will be used as main .gitconfig file.
function __recursive_gitconfig_git {
    gitconfig_file=$(__recursive_gitconfig_closest)
    if [ "$gitconfig_file" != '' ]; then
        home="$(dirname $gitconfig_file)/"
        HOME=$home /usr/bin/git "$@"
    else
        /usr/bin/git "$@"
    fi
}

# Look for closest .gitconfig file in parents directories
function __recursive_gitconfig_closest {
    slashes=${PWD//[^\/]/}
    directory="$PWD"
    for (( n=${#slashes}; n>0; --n ))
    do
        test -e "$directory/.gitconfig" && echo "$directory/.gitconfig" && return 
        directory="$directory/.."
    done
}


alias git='__recursive_gitconfig_git'

1

Github.com- এর জন্য ডিফল্ট কীগুলির মধ্যে স্যুইচ করতে কেবল এটি আপনার ~ / .bash_profile এ যুক্ত করুন

# Git SSH keys swap
alias work_git="ssh-add -D  && ssh-add -K ~/.ssh/id_rsa_work"
alias personal_git="ssh-add -D && ssh-add -K ~/.ssh/id_rsa"

1

আপনি git commit --author "Your Name <your@email.com>"কোনও আলাদা ব্যবহারকারী হিসাবে প্রতিশ্রুতিবদ্ধ করতে চান এমন রেপোতে প্রতিশ্রুতি দেওয়ার মুহুর্তে আপনি ব্যবহার করতে পারেন।


0

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

আমি ~/bin/git_poweruserএক্সিকিউটেবল অনুমতি এবং PATH- এ ফাইলটি তৈরি করেছি :

#!/bin/bash

TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT

cat > $TMPDIR/ssh << 'EOF'
#!/bin/bash
ssh -i $HOME/.ssh/poweruserprivatekey $@
EOF

chmod +x $TMPDIR/ssh
export GIT_SSH=$TMPDIR/ssh

git -c user.name="Power User name" -c user.email="power@user.email" $@

যখনই আমি "পাওয়ার ব্যবহারকারী" হিসাবে কিছু প্রতিশ্রুতিবদ্ধ বা ধাক্কা দিতে চাই, আমি তার git_poweruserপরিবর্তে ব্যবহার করি git। এটা কোনো ডিরেক্টরির কাজ করা উচিত, এবং পরিবর্তন প্রয়োজন হয় না .gitconfigবা .ssh/configঅন্তত খনি নেই।


0

যদিও বেশিরভাগ প্রশ্নের ধরণের ওপিতে উত্তর দেওয়া হয়েছে, আমাকে কেবল নিজেরাই এটি করতে হয়েছিল এবং গুগলিং ছাড়াই আমি দ্রুত এবং সহজ সমাধানটি সন্ধান করতে সক্ষম হয়েছি। এখানে সহজ পদক্ষেপ:

  • .gitconfgআপনার অন্যান্য রেপো থেকে বিদ্যমান অনুলিপি
  • আপনার নতুন যুক্ত রেপোতে পেস্ট করুন
  • .gitconfigনাম, ইমেল এবং ব্যবহারকারীর নাম হিসাবে ফাইলের মান পরিবর্তন করুন [user] name = John email = john@email.net username = john133
  • আপনার কাজের রেপোতে ফাইল .gitignoreপ্রতিশ্রুতিবদ্ধ না তা নিশ্চিত করার জন্য তালিকায় ফাইলের নাম যুক্ত করুন.gitconfig
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.