কোনও প্রদত্ত প্রকল্পের জন্য সঠিক পরিচয় (নাম এবং ইমেল) ব্যবহার করতে গিটকে কীভাবে বলবেন?


117

আমি আমার ব্যক্তিগত ল্যাপটপটি উভয় কাজ এবং ব্যক্তিগত প্রকল্পের জন্য ব্যবহার করি এবং আমি আমার কাজের প্রতিশ্রুতি (গিটোলাইট) এবং বাকী (গিথুব) এর জন্য আমার ব্যক্তিগত ইমেল ঠিকানা ব্যবহার করতে চাই।

আমি নিম্নলিখিত সমাধানগুলি সম্পর্কে পড়লাম যা সমস্ত বৈশ্বিক বা অস্থায়ী:

  • git config --global user.email "bob@example.com"
  • git config user.email "bob@example.com"
  • git commit --author "Bob <bob@example.com>"
  • এক সেটিং GIT_AUTHOR_EMAIL, GIT_COMMITTER_EMAILবা EMAILবিভিন্ন পরিবেশের

একটি সমাধান হ'ল ম্যানুয়ালি শেল ফাংশন চালানো যা আমার পরিবেশকে কাজ বা ব্যক্তিগত হিসাবে সেট করে তবে আমি নিশ্চিত যে আমি প্রায়শই ভুল পরিচয়ের অধীনে প্রতিশ্রুতিবদ্ধ হওয়ার ফলে সঠিক পরিচয়টিতে যেতে ভুলে যাব।

কোনও পরিচয় (নাম, ইমেল) এর সাথে কোনও নির্দিষ্ট ভাণ্ডার, প্রকল্পের নাম ইত্যাদি আবদ্ধ করার কোনও উপায় আছে কি? মানুষ কি করবেন?


1
আমি আপনাকে অনুরোধ দয়া করে একটি উত্তর গ্রহণ করুন। আমি আশা করি তাদের মধ্যে একটি অবশ্যই আপনাকে আপনার সমস্যার সমাধান করতে সহায়তা করেছে।
আরবিটি

উত্তর:


134

git config user.email "bob@example.com"

কোনও রেপোর ভিতরে এটি করার ফলে এটি বিশ্বব্যাপী নয়, সেই রেপিতে কনফিগারেশন সেট করবে।

মনে হচ্ছে আপনি যতটা পরে রয়েছেন তা হ'ল যতক্ষণ না আমি আপনাকে ভুল পাঠাচ্ছি।


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

1
@ মার্টিন - আমি গিটটি রিয়েল দীর্ঘদিন ব্যবহার করে আসছি না, তবে আমার যে ধারণাটি পেয়েছে তা হল একাধিক স্থানীয় রেপো ব্যবহার করা গিটের জন্য একটি অস্বাভাবিক কর্মপ্রবাহ হবে। তবুও, আপনাকে কেবল একবার রেপো চালানোর দরকার ছিল এবং এটি সেই রেপোর জীবনকাল নির্ধারণ করে, তাই এটি এত খারাপ নয়।
ড্যান রে

@ ড্যানরে এটি আসলে একটি সাধারণ সেটআপ যদি মার্টিনের মতো, স্থানীয় রেপোতে স্থানীয় আপত্তিহীন ফাইল থাকে। একটি শাখা থেকে অন্য শাখায় স্যুইচ করা ফাইলগুলি স্বয়ংক্রিয়ভাবে পুনর্নির্মাণ করবে না। যদি "সবকিছু পুনরায় সংকলন করা" এড়ানো একটি লক্ষ্য হয় তবে একাধিক স্থানীয় রেপো ব্যবহার করা এটি করার সঠিক উপায়।
ডলম্যান

1
git config --global user.email "bob@example.com" - - গ্লোবাল যুক্ত করে এটি সমস্ত রেপো জুড়ে কাজ করে। উত্স: help.github.com/articles/setting-your-username-in-git
সাশিয়ানো

1
এটি একটি ম্যানুয়াল কাজ এবং ভুলে যেতে পারে। অটোমেটিক সমাধানগুলি @ ড্রাগন and৮৮ এবং আমার দ্বারা পরামর্শ দেওয়া হয়েছে
নাইটসির্চ ১৯'১৯

47

আপনাকে নীচের স্থানীয় সেট কমান্ডটি ব্যবহার করতে হবে :

স্থানীয় সেট

git config user.email mahmoud@company.ccc
git config user.name 'Mahmoud Zalt'

স্থানীয় পেতে

git config --get user.email
git config --get user.name

স্থানীয় কনফিগ ফাইল প্রকল্পের ডিরেক্টরির মধ্যে হল: .git/config

গ্লোবাল সেট

git config --global user.email mahmoud@zalt.me
git config --global user.name 'Mahmoud Zalt'

গ্লোবাল পেতে

git config --global --get user.email
git config --global --get user.name

আপনার home ডিরেক্টরিতে বৈশ্বিক কনফিগ ফাইল: ~/.gitconfig

ফাঁকা ইত্যাদি উদ্ধৃতি মনে রাখবেন উদাহরণস্বরূপ: 'ফার্স্টনেম লাস্টনেম'


23

বিভিন্ন ইউজারনেম এবং ইমেল বজায় রাখতে ".git" ফোল্ডারে কনফিগার ফাইলটি সম্পাদনা করুন upon

  • আপনার ভাণ্ডারে যান
  • লুকানো ফাইলগুলি দেখান এবং ".git" ফোল্ডারে যান
  • "কনফিগারেশন" ফাইলটি সন্ধান করুন
  • EOF এ নীচের লাইনগুলি যুক্ত করুন

[ব্যবহারকারী]

নাম = বব

ইমেল = bob@example.com

নীচের এই কমান্ডটি আপনাকে দেখায় যে এই সংগ্রহস্থলের জন্য ব্যবহারকারী নাম এবং ইমেল সেট আছে।

গিট কনফিগারেশন - ব্যবহারকারীর নাম

git config --get user.email

উদাহরণ: আমার জন্য যে ডি: \ ওয়ার্কস্পেস cl গ্রিপস \ ipchat \ .git \ কনফিগারেশন কনফিগারেশন ফাইল

এখানে আইপ্যাচটি আমার রেপো নাম


16

আপনি যদি git config user.email "foo@example.com"এটি ব্যবহার করেন তবে এটি আপনার বর্তমান প্রকল্পের সাথে আবদ্ধ হবে।

আমি আমার প্রকল্পগুলির জন্য এটিই করি। আমি রেপো ক্লোন / আরম্ভ করার সময় উপযুক্ত পরিচয় সেট করি। এটি মূর্খ-প্রমাণ নয় (যদি আপনি ভুলে গিয়ে ধাক্কা দেওয়ার আগে ধাক্কা খেয়ে থাকেন তবে আপনাকে বলার অপেক্ষা রাখে না) তবে এটি যতটা সম্ভব বলার ক্ষমতা ছাড়াই পেতে পারেgit config --global user.email 'ILLEGAL_VALUE'

আসলে, আপনি একটি অবৈধ মান করতে পারেন। আপনার সেট করুনgit config --global user.name $(perl -e 'print "x"x968;')

তারপরে আপনি যদি আপনার অ-বৈশ্বিক মান সেট করতে ভুলে যান তবে আপনি একটি ত্রুটি বার্তা পাবেন।

[সম্পাদনা] একটি ভিন্ন সিস্টেমে আমাকে "মারাত্মক: অসম্ভব দীর্ঘ ব্যক্তিগত পরিচয়দাতা" দিয়ে ব্যর্থ হওয়ার জন্য x সংখ্যা বাড়িয়ে 968 করতে হয়েছিল। গিট একই সংস্করণ। স্ট্রেঞ্জ।


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

@ মার্টিন জাম্বন: অদ্ভুত। আমি গিট সংস্করণটি 1.7.4.5 ব্যবহার করছি
শেঠ রবার্টসন

@ মার্টিন জাম্বন: আপনি আপনার বিশ্বব্যাপী ব্যবহারকারীর নাম / ইমেল ঠিকানাটি "এক্স" এ সেট করতেও পারেন। গিটের কিছু পুরানো সংস্করণ খুব ছোট মান প্রত্যাখ্যান করেছে। যদি এটি কাজ না করে তবে আপনার কাছে কি গিট সংস্করণ / ওএস রয়েছে তা জানান।
শেঠ রবার্টসন

@ মার্টিন জাম্বান: 968 "এক্স" ব্যবহার করে দেখুন এবং এটি আপনার পক্ষে আরও ভাল কাজ করে কিনা see
শেঠ রবার্টসন

8

আপনি যদি --globalপ্যারামিটার ব্যবহার না করেন তবে এটি কেবলমাত্র বর্তমান প্রকল্পের জন্য ভেরিয়েবল সেট করবে।


8

গিট includeIf২.১13 অনুসারে আপনি আপনার গিট কমান্ডগুলি চালাচ্ছেন এমন সংগ্রহস্থলের পাথের উপর ভিত্তি করে একটি আলাদা কনফিগারেশনযুক্ত একটি ফাইল অন্তর্ভুক্ত করতে আপনার গিটকনফিগটিতে একটি ব্যবহার করতে পারেন ।

যেহেতু একটি নতুন যথেষ্ট গিট উবুন্টু 18.04 এর সাথে আসে আমি এটিকে আমার ~/.gitconfigবেশ আনন্দের সাথে ব্যবহার করছি ।

[include]
  path = ~/.gitconfig.alias # I like to keep global aliases separate
  path = ~/.gitconfig.defaultusername # can maybe leave values unset/empty to get warned if a below path didn't match
# If using multiple identities can use per path user/email
# The trailing / is VERY important, git won't apply the config to subdirectories without it
[includeIf "gitdir:~/projects/azure/"]
  path = ~/.gitconfig.azure # user.name and user.email for Azure
[includeIf "gitdir:~/projects/gitlab/"]
  path = ~/.gitconfig.gitlab # user.name and user.email for GitLab
[includeIf "gitdir:~/projects/foss/"]
  path = ~/.gitconfig.github # user.name and user.email for GitHub

https://motowilliams.com/conditional-includes-for-git-config#disqus_thread

গিট ২.১ use ব্যবহার করার জন্য আপনাকে হয় পিপিএ যুক্ত করতে হবে (উবুন্টু 18.04 / ডেবিয়ানের চেয়ে পুরানো) বা বাইনারিগুলি ডাউনলোড করে ইনস্টল করতে হবে (উইন্ডোজ / অন্যান্য লিনাক্স)।


খুব সহায়ক এবং ঠিক আমি যা খুঁজছিলাম git config core.sshCommandএকাধিক ব্যক্তিগত কীগুলির সাথে সম্মিলিত , সম্পূর্ণ বিজোড় গিট সনাক্তকরণ পরিচালনা দেয়।
টপার

0

একটি সমাধান হ'ল ম্যানুয়ালি শেল ফাংশন চালানো যা আমার পরিবেশকে কাজ বা ব্যক্তিগত হিসাবে সেট করে তবে আমি নিশ্চিত যে আমি প্রায়শই ভুল পরিচয়ের অধীনে প্রতিশ্রুতিবদ্ধ হওয়ার ফলে সঠিক পরিচয়টিতে যেতে ভুলব।

ঠিক আমার সমস্যা ছিল। আমি একটি হুক স্ক্রিপ্ট লিখেছি যা আপনাকে সতর্ক করে দেয় যদি আপনার কাছে কোনও গিথুব রিমোট থাকে এবং স্থানীয় ব্যবহারকারীর নামটি সংজ্ঞায়িত না করা হয়।

আপনি এটি কীভাবে সেট আপ করেছেন তা এখানে:

  1. গ্লোবাল হুক ধরে রাখতে একটি ডিরেক্টরি তৈরি করুন

    mkdir -p ~/.git-templates/hooks

  2. আপনি যখন গিট টিআর বা ক্লোন চালান তখন গিটকে~/.git-templates আপনার প্রতি-প্রকল্প .gitডিরেক্টরিতে সমস্ত কিছু অনুলিপি করতে বলুন

    git config --global init.templatedir '~/.git-templates'

  3. এবং এখন নিম্নলিখিত লাইনগুলিকে অনুলিপি ~/.git-templates/hooks/pre-commitকরুন এবং ফাইলটিকে এক্সিকিউটেবল করুন (এটি ভুলে যাবেন না অন্যথায় গিট এটি কার্যকর করবে না!)

#!/bin/bash

RED='\033[0;31m' # red color
NC='\033[0m' # no color

GITHUB_REMOTE=$(git remote -v | grep github.com)
LOCAL_USERNAME=$(git config --local user.name)

if [ -n "$GITHUB_REMOTE" ] && [ -z "$LOCAL_USERNAME" ]; then
    printf "\n${RED}ATTENTION: At least one Github remote repository is configured, but no local username. "
    printf "Please define a local username that matches your Github account.${NC} [pre-commit hook]\n\n"
    exit 1
fi

আপনি যদি আপনার ব্যক্তিগত সংগ্রহস্থলের জন্য অন্যান্য হোস্ট ব্যবহার করেন তবে আপনাকে github.comআপনার প্রয়োজন অনুসারে প্রতিস্থাপন করতে হবে।

এখন প্রতিবার আপনি git initবা git cloneগিট করার সময় এই স্ক্রিপ্টটি সংগ্রহস্থলে অনুলিপি করবে এবং কোনও প্রতিশ্রুতি সম্পন্ন হওয়ার আগেই এটি সম্পাদন করে। যদি আপনি কোনও স্থানীয় ব্যবহারকারীর নাম সেট না করে থাকেন তবে এটি একটি সতর্কবার্তা আউট করবে এবং আপনাকে প্রতিশ্রুতিবদ্ধ হতে দেবে না।


0

আমি এই বিষয়ে মাইকা হেনিংয়ের তার প্রবন্ধে ( গিট আইডেন্টিটিস সেটআপ করা দেখুন ) পদ্ধতিতে খুব পছন্দ করি । তিনি যে আবেদন তৈরি করেছেন এবং তৈরি করেছেন এমন প্রতিটি ভান্ডারটিতে পরিচয় জোর করেছেন তা প্রতিবার সেট আপ করতে ভুলে যাবেন না এটি একটি ভাল উপায়।

বেসিক গিট কনফিগারেশন

গিটে বর্তমান ব্যবহারকারী কনফিগারেটটি আনসেট করুন:

$ git config --global --unset user.name
$ git config --global --unset user.email
$ git config --global --unset user.signingkey

প্রতিটি নতুন স্থানীয় সংগ্রহস্থলে পরিচয় কনফিগারেশন জোর করে:

$ git config --global user.useConfigOnly true

identityকমান্ডের জন্য গিট ওরফে তৈরি করুন , আমরা পরে ব্যবহার করব:

$ 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 user.signingkey "$(git config user.$1.signingkey)"; :'

পরিচয় তৈরি

দ্বারা GPG সঙ্গে একটি পরিচয় তৈরি করুন (ব্যবহার gpgবা gpg2কি আপনার সিস্টেমে পেয়েছিলাম উপর নির্ভর করে)। আপনি যে প্রতিটি পরিচয় ব্যবহার করতে চান তার জন্য পরবর্তী পদক্ষেপগুলি পুনরাবৃত্তি করুন।

দ্রষ্টব্য: [keyid]এখানে তৈরি গোপন কীটির শনাক্তকারী । উদাহরণ এখানে:

sec   rsa4096/8A5C011E4CE081A5 2020-06-09 [SC] [expires: 2021-06-09]
      CCC470AE787C057557F421488C4C951E4CE081A5
uid                 [ultimate] Your Name <youremail@domain>
ssb   rsa4096/1EA965889861C1C0 2020-06-09 [E] [expires: 2021-06-09]

8A5C011E4CE081A5অংশ পরে sec rsa4096/হয় শনাক্তকারী কী।

$ gpg --full-gen-key
$ gpg --list-secret-keys --keyid-format LONG <youremail@domain>
$ gpg --armor --export [keyid]

সর্বজনীন কী ব্লকটি অনুলিপি করুন এবং এটিকে GPG কী হিসাবে আপনার গিটহাব / গিটপ্রোভাইডারঅফচয়েস সেটিংসে যুক্ত করুন।

গিট কনফিগারেশনে পরিচয় যুক্ত করুন। আপনি যে প্রতিটি পরিচয় যুক্ত করতে চান তার জন্য এটি পুনরাবৃত্তি করুন:

নোট: এখানে আমি ব্যবহার gitlabকরতে নাম : আমার পরিচয়, কিন্তু তোমার প্রশ্নটা থেকে এটা কিছু, প্রাক্তন হতে পারে gitoliteবা github, workইত্যাদি

$ git config --global user.gitlab.name "Your Name"
$ git config --global user.gitlab.email "youremail@domain"
$ git config --global user.gitlab.signingkey [keyid]

একটি সংগ্রহস্থলের জন্য পরিচয় সেটআপ করুন

যদি কোনও নতুন রেপোর কোনও পরিচয় জড়িত না থাকে তবে কমিট করার সময় একটি ত্রুটি উপস্থিত হবে, এটি সেট করতে আপনাকে স্মরণ করিয়ে দিচ্ছে।

*** Please tell me who you are.

## parts of message skipped ##

fatal: no email was given and auto-detection is disabled

নতুন সঞ্চিত্রে আপনি যে পরিচয় চান তা উল্লেখ করুন:

$ git identity gitlab

আপনি এখন গিটল্যাব পরিচয় দিয়ে প্রতিশ্রুতিবদ্ধ করতে প্রস্তুত ।

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