একক গিট কমিটের জন্য কনফিগার করা ব্যবহারকারীকে ওভাররাইড করুন


106

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

আমি ব্যবহার করার চেষ্টা করেছি

--author="My Name <MyNameEmail@email.com>" 

এবং আমি বার্তাটি পেয়েছি:

 Committer: unknown <WorkEmail@workemail.net>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

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

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

তবে এটি github.com প্রকল্পে প্রতিশ্রুতিবদ্ধ হওয়ার জন্য এখনও আমার ব্যবহারকারীর নাম আপডেট করে নি। আমি চেষ্টা করতে পারি এমন আরও কিছু আছে এবং এটি কি সম্ভব?


4
গিট লেখক এবং প্রতিজ্ঞার মধ্যে পার্থক্য করে । একটি আদেশের জন্য অস্থায়ীভাবে কমিটর সেট করতে, ব্যবহার করুন -c user.name=Me user.email=me@example.com। একটি কাস্টম গ্লোবাল কনফিগারেশন ব্যবহার করতে, এই প্রশ্নটি দেখুন বা -cবিকল্পগুলি সহ শেল ওরফে ব্যবহার করুন। তবে এগুলির দুটিই সম্ভবত এই পরিস্থিতিতে সঠিক জিনিস নয় - আপনি প্রতি-রেপো কনফিগারেশন চান।
রবিন গ্রিন

গিট 2.22 (কিউ 2 2019) এর সাথে আপনার ডেডিকেটেড সেটিংস থাকবে {author,committer}.{name,email}নীচে আমার উত্তরটি দেখুন
ভনসি

উত্তর:


191

প্রথমত, লেখক অগত্যা প্রতিশ্রুতিবদ্ধর মতো নয়। গিট উভয় ট্র্যাক।

কেবলমাত্র এই সংগ্রহস্থলের জন্য কোন নামটি ব্যবহার করতে হবে তা নির্ধারণ করতে আপনি এটি করতে পারেন:

git config user.name "Your Name"
git config user.email "Your email"

--globalবিকল্পের অনুপস্থিতি লক্ষ্য করুন । এটি কেবলমাত্র এই সংগ্রহস্থলে কনফিগারেশন সেট করবে।

বিকল্পভাবে, আপনি কেবল একটি একক কমান্ডের জন্য -cবিকল্পটি ব্যবহার করে এটি করতে পারেন :

git -c "user.name=Your Name" -c "user.email=Your email" commit ...

তবে আমি মনে করি কেবল উপরের কনফিগারেশন বিকল্পগুলি ব্যবহার করা ভাল।


7
শেয়ারড অ্যাকাউন্ট (ডেভেল সার্ভারের মূল) থেকে নিজের অধীনে গিটি রেপোতে প্রতিশ্রুতিবদ্ধ হওয়া আমার প্রয়োজন ঠিক এটিই এবং আমি চাই না যে অন্যরা আমার নাম / ইমেল অফার করুক।
andrej

60

আপনার গিট কমান্ড এ এটিকে পুনরায় চাপানোর চেষ্টা করুন:

git -c user.email=email@domain.fr -c user.name='Your Name'

এটি এক শটের জন্য ঠিক আছে তবে আপনি গিট থেকে ক্লোন করেছেন এমন স্থানীয় রেপো .git / কনফিগারেশন ফাইলে এটি সংরক্ষণ করতে পছন্দ করতে পারেন। এটি চালিয়ে git config (কোনও - গ্লোবাল বা - সিস্টেমটিকে "রেপোর কাছে স্থানীয়" করার জন্য) চালিয়ে বা সম্পাদনা করে .git/config(এটি একই সিনট্যাক্সের মতো করা যায়)~/.gitconfig


4
ধন্যবাদ! আমি একাধিক ব্যক্তির সাথে একটি সার্ভার ভাগ করছি এবং কোনও ডিফল্ট ব্যবহারকারী সেট করতে চাই না। এটি নিখুঁত!
ভয়াবহভাবেউপথিউনিক

4
@ সংক্ষিপ্তঅ্যান্টিথথোনিক আপনাকে স্বাগত জানানো হয় :) আপনি নিজের মধ্যে একটি নামও তৈরি করতে পারেন .bash_aliasesএবং / অথবা ব্যবহারকারী সংজ্ঞায়িত না হলে কমিট প্রত্যাখ্যান করার জন্য আপনি একটি প্রাক-কমিট হুকও সেট করতে পারেন।
আসেনার

28

এছাড়াও আপনি বিভিন্ন পরিবেশের স্থির করতে পারে GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME, এবং GIT_AUTHOR_EMAILপ্রতি শেল বা এমনকি প্রতি-কমান্ড ভিত্তিতে।


দুর্দান্ত, যেহেতু এটি বেশিরভাগ ভাগ করা কম্পিউটার দৃশ্যে ব্যবহৃত হবে, স্বয়ংক্রিয় ক্লিনআপ সহ প্রতি সেশানটি উপযুক্ত।
kmac

4
আমার পক্ষে কাজ করেনি। লেখক পরেও একই থাকলেন git commit --amend। কেবল প্রতিশ্রুতিবদ্ধ পরিবর্তন হয়েছে।
ওন্দ্র Žižka

এখানেও একই কাজ করেছিgit commit --amend --author="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
কেসিডি

4
এটি কারণ git commit --amendনকশা দ্বারা লেখককে পরিবর্তন করে না, ম্যানপেজটি বলেছে। সমাধান: git commit --amend --reset-author
কুবাঞ্চিযেক

7

আমি বিশ্বাস করি আপনি চালাতে পারেন:

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

গিট বিভিন্ন অংশের জন্য। গিথুব সার্ভারে রেপোর জন্য যেখানে কাজ চলছে সেই ফোল্ডারটি খোলার চেষ্টা করুন।

নিশ্চিত হয়ে নিন যে আপনি সেই কাজের ফোল্ডারে একটি .git ফোল্ডারটি দেখছেন। এখন সেই ফোল্ডারটি টার্মিনাল / কনসোল / কমান্ডপ্রম্পটে খুলুন এবং কেবলমাত্র উপরে উল্লিখিত আদেশগুলি চালিয়ে সেই ফোল্ডারের জন্য ব্যবহারকারীর নাম এবং ইমেল পরিবর্তন করার চেষ্টা করুন।

এটি পরিবর্তন করে আপনি এখন গিটহাব সার্ভারটি অ্যাক্সেস করতে পারবেন।

এখানে দেখে নিন: https://help.github.com/articles/setting-your-username-in-git

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


5

জেসি গ্লিকের উত্তরটি এখানে একটি প্রসারিত বাস্তবায়নের সাথে অনুসরণ করা কারণ আইএমও তাঁর পরামর্শই এটির জন্য সবচেয়ে ভাল উপায়।

নীচে আপনার .bash_ প্রোফাইলে যোগ করুন। সক্রিয় শেলটিতে প্রথমে কোনও গিট কমান্ড চালানোর সময় এটি আপনাকে ব্যবহারকারীর জন্য অনুরোধ জানাবে। এটি তারপরে সমস্ত রান করার জন্য ব্যবহারকারীর কথা মনে রাখবে।

(কেস ব্লকের বিভিন্ন গিট অथर / নাম মানগুলির জন্য যথাযথ পছন্দসই নাম এবং ইমেল ঠিকানাগুলির জন্য একটি ইনপুট ব্যবহারকারী মান স্পষ্টতই ক্রস রেফারেন্স করুন এবং প্রয়োজন অনুসারে অ্যাসাইনগুলি আপডেট করুন)

git() {
  echo "Running BETTER git..."
  if [ -z "$GIT_COMMITTER_NAME" ]; then
    while true; do
      read -p "Git User: " UNAME
      case $UNAME in
          user1 ) break;;
          user2 ) break;;
          * ) echo "Invalid User";;
      esac
    done
    GIT_COMMITTER_NAME=$UNAME
    export GIT_COMMITTER_NAME
    GIT_COMMITTER_EMAIL=$UNAME@domain.com
    export GIT_COMMITTER_EMAIL
    GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME
    export GIT_AUTHOR_NAME
    GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL
    export GIT_AUTHOR_EMAIL
  fi
  echo "  using git user: $GIT_AUTHOR_NAME / $GIT_AUTHOR_EMAIL"
  /usr/bin/git "$@"
}

2

এছাড়াও আপনি বিভিন্ন পরিবেশের স্থির করতে পারে GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, GIT_AUTHOR_NAME, এবং GIT_AUTHOR_EMAILপ্রতি শেল বা এমনকি প্রতি-কমান্ড ভিত্তিতে।

আসলে, গিট ২.২২ (Q2 2019) থেকে আপনার একটি নতুন বিকল্প রয়েছে: আরও সুনির্দিষ্ট ক্ষেত্রে {author,committer}.{name,email}ওভাররাইড user.{name,email}করার জন্য চারটি নতুন কনফিগারেশন ভেরিয়েবল চালু করা হয়েছে ।

দেখুন কমিট 39ab4d0 দ্বারা (04 ফেব্রুয়ারী 2019) উইলিয়াম Hubbs ( ``)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে 4e021dc কমিট , 07 মার্চ 2019)

config: পৃথক লেখক এবং প্রতিশ্রুতিবদ্ধ বাসস্থান দেওয়ার অনুমতি দিন

author.email, author.name, committer.emailএবং committer.nameসেটিংস অনুরূপ হয় GIT_AUTHOR_*এবং GIT_COMMITTER_*এর জন্য বিভিন্ন পরিবেশের কিন্তু git configসিস্টেম।
এটি তাদের প্রতিটি সংগ্রহস্থলের জন্য পৃথক করে সেট করার অনুমতি দেয়।

গিট পরিবেশের ভেরিয়েবলগুলির সাথে বিভিন্ন লেখকতা এবং প্রতিশ্রুতিবদ্ধ তথ্য নির্ধারণ সমর্থন করে। যাইহোক, এনভায়রনমেন্ট ভেরিয়েবলগুলি শেলের মধ্যে সেট করা থাকে, সুতরাং বিভিন্ন সংগ্রহস্থলের জন্য যদি বিভিন্ন লেখক এবং প্রতিশ্রুতিবদ্ধ তথ্য প্রয়োজন হয় তবে একটি বাহ্যিক সরঞ্জাম প্রয়োজন।

এই জন্য Git কনফিগ সমর্থন যোগ করা author.email, author.name, committer.emailএবং committer.name সেটিংস এই তথ্য ভান্ডার প্রতি সেট করা যেতে পারে তাই।

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