গাইড

Git সেটিংস: git config, নাম, ইমেইল ও SSH কী

হালনাগাদ: · Skillaria.Top

Git-এর মৌলিক সেটআপ হলো git config --global user.name ও user.email, যা আপনার কমিট চিহ্নিত করে, সঙ্গে এডিটর ও ডিফল্ট ব্রাঞ্চ বেছে নেওয়া। পাসওয়ার্ড ছাড়া GitHub-এ ঢুকতে ssh-keygen -t ed25519 দিয়ে কী বানান, পাবলিক কী অ্যাকাউন্টে যোগ করুন এবং ssh -T git@github.com দিয়ে সংযোগ যাচাই করুন।

এক মিনিটে Git-এর ন্যূনতম সেটআপ

ইনস্টলের পরপরই চারটি কমান্ড চালান। প্রথম দুটি ছাড়া Git কমিট করতে দেবে না, বাকিগুলো সাধারণ অসুবিধা দূর করে।

git config --global user.name "রিমা আক্তার"
git config --global user.email "rima@example.com"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"

ফলাফল যাচাই করুন:

$ git config --global --list
user.name=রিমা আক্তার
user.email=rima@example.com
init.defaultbranch=main
core.editor=code --wait

এরপর দেখব প্রতিটি সেটিং কী করে, Git সেগুলো কোথায় রাখে, এবং SSH দিয়ে GitHub-এ লগইন কীভাবে যুক্ত করতে হয়।

git config কীভাবে কাজ করে: তিন স্তরের সেটিং

git config তিনটি ফাইলের যেকোনো একটিতে প্যারামিটার পড়ে ও লেখে। সংকীর্ণ স্তর বিস্তৃত স্তরকে ছাপিয়ে যায়।

স্তরফ্ল্যাগফাইলকাদের জন্য
সিস্টেম--system/etc/gitconfig (Windows-এ Git-এর ইনস্টল ফোল্ডারে)কম্পিউটারের সব ব্যবহারকারী
গ্লোবাল--global~/.gitconfig বা ~/.config/git/configআপনার সব রিপোজিটরি
লোকাল--local (ডিফল্ট)রিপোজিটরির ভেতরে .git/configশুধু এই রিপোজিটরি

বেশিরভাগ ব্যক্তিগত সেটিং গ্লোবালভাবে হয়, ব্যতিক্রম হয় লোকালভাবে। যেমন কোম্পানির প্রজেক্টের জন্য কাজের ইমেইল একটি নির্দিষ্ট রিপোজিটরিতে --global ছাড়া বসানো হয়।

দরকারি git config কমান্ড

git config user.email                    # বর্তমান মান দেখা
git config --list --show-origin          # সব সেটিং ও কোন ফাইল থেকে এসেছে
git config --global --edit               # ~/.gitconfig এডিটরে খোলা
git config --global --unset core.editor  # একটি প্যারামিটার মুছে ফেলা

--show-origin ডিবাগের সেরা সহায়ক: কেন "ভুল" ইমেইল আসছে, তা দেখায় কোন ফাইল থেকে মানটি এসেছে।

নাম ও ইমেইল: কেন এটি আনুষ্ঠানিকতা নয়

প্রতিটি কমিট লেখকের নাম ও ইমেইল চিরকালের জন্য সংরক্ষণ করে। এগুলো লগইন বা পাসওয়ার্ড নয় — Git এগুলো যাচাই করে না। তবে GitHub ও GitLab ইমেইল দিয়ে কমিটকে আপনার অ্যাকাউন্টের সঙ্গে যুক্ত করে: ইমেইল প্রোফাইলের কোনো যাচাইকৃত ঠিকানার সঙ্গে না মিললে কমিট অ্যাক্টিভিটি গ্রাফে গণ্য হয় না এবং ছবি ছাড়া দেখায়।

ইতিহাস না বদলে পেছনের তারিখে নাম বা ইমেইল বদলানো যায় না, তাই প্রথম কমিটের আগেই সেটিং যাচাই করুন।

আসল ইমেইল লুকানো

রিপোজিটরি পাবলিক হলে ইতিহাস দেখা যে কেউ আপনার ইমেইল দেখতে পারে। GitHub সেবামূলক ঠিকানা দেয়, যেমন ID+username@users.noreply.github.com (Settings → Emails-এ)। সেটি Git-এ বসান:

git config --global user.email "12345678+rima@users.noreply.github.com"

কাজ ও ব্যক্তিগত প্রজেক্টের জন্য আলাদা ইমেইল

প্রতিটি কর্মক্ষেত্রের রিপোজিটরিতে হাতে সেটিং না করে শর্তসাপেক্ষ কনফিগ যুক্ত করুন। ~/.gitconfig-এ:

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

আর ~/.gitconfig-work-এ:

[user]
    email = rima@company.com

এখন ~/work/-এর ভেতরের সব রিপোজিটরি স্বয়ংক্রিয়ভাবে কাজের ইমেইল ব্যবহার করবে। পথের শেষে স্ল্যাশ থাকা বাধ্যতামূলক।

Git-এর অন্যান্য কার্যকর সেটিং

এডিটর

কমিট বার্তা, ইন্টারঅ্যাক্টিভ rebase ও merge-এর জন্য Git একটি এডিটর খোলে। ডিফল্ট প্রায়ই Vim। বিকল্প:

git config --global core.editor "code --wait"   # VS Code
git config --global core.editor "nano"          # Nano
git config --global core.editor "subl -n -w"    # Sublime Text

ডিফল্ট ব্রাঞ্চ

init.defaultBranch main নতুন রিপোজিটরির প্রথম ব্রাঞ্চের নাম ঠিক করে (Git 2.28 থেকে)। এটি না থাকলে Git master বানায় এবং নাম বদলানোর পরামর্শ দেয়।

লাইন-ভাঙা

git config --global core.autocrlf true    # Windows
git config --global core.autocrlf input   # macOS ও Linux

এতে রিপোজিটরিতে সবসময় LF লাইন-ভাঙা থাকে, এবং দলে ফাইলের সব লাইন "বদলেছে" এমন অবাস্তব পরিবর্তন দেখা যায় না।

git pull-এর আচরণ

কোনো কৌশল না বেছে নিলে ব্রাঞ্চ ভিন্ন হলে আধুনিক Git স্পষ্টভাবে একটি বেছে নিতে বলে। একটি বেছে নিন:

git config --global pull.rebase false   # merge (ডিফল্ট আচরণ)
git config --global pull.rebase true    # rebase, সরল ইতিহাসের জন্য
git config --global pull.ff only        # শুধু fast-forward, নইলে ত্রুটি

ফাইলের নাম ও রঙ

git config --global core.quotepath false
git config --global color.ui auto

core.quotepath false অ-ASCII অক্ষরের ফাইলের নাম (যেমন বাংলা নাম) এস্কেপ করে দেখানো বন্ধ করে।

অ্যালিয়াস

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.last "log -1 HEAD"

এখন git lg ব্রাঞ্চের গ্রাফ আঁকে, আর git last শেষ কমিট দেখায়।

সেটআপের পর ~/.gitconfig কেমন দেখায়

[user]
    name = রিমা আক্তার
    email = rima@example.com
[init]
    defaultBranch = main
[core]
    editor = code --wait
    autocrlf = input
    quotepath = false
[pull]
    rebase = false
[alias]
    st = status
    lg = log --oneline --graph --decorate --all

এটি সাধারণ টেক্সট ফাইল: হাতে সম্পাদনা করা যায় এবং কম্পিউটার বদলালেও সঙ্গে নেওয়া যায়।

Git login: GitHub-এ কীভাবে ঢুকবেন

Git-এ git login কমান্ড নেই — এটি নতুনদের সাধারণ ফাঁদ। Git কোনো "অ্যাকাউন্ট" মনে রাখে না: সার্ভারে যোগাযোগের সময় (clone, push, fetch) দুটি প্রোটোকলের একটিতে প্রমাণীকরণ হয়।

HTTPSSSH
ঠিকানাhttps://github.com/user/repo.gitgit@github.com:user/repo.git
প্রমাণ কীভাবেঅ্যাক্সেস টোকেন বা ব্রাউজার লগইন (Credential Manager)SSH কী-জোড়া
অ্যাকাউন্টের পাসওয়ার্ড২০২১ থেকে গৃহীত নয়লাগে না
কখন সুবিধাজনকCredential Manager-সহ Windows, কর্পোরেট প্রক্সিmacOS, Linux, সার্ভার, CI

HTTPS দিয়ে লগইন

Git for Windows ও Credential Manager-সহ macOS সংস্করণে প্রথম git push-এ GitHub-এ লগইনের জন্য ব্রাউজার উইন্ডো খোলে, এবং তথ্য সিস্টেমের সংরক্ষণাগারে থেকে যায়। বিকল্প — GitHub-এর অফিসিয়াল CLI: gh auth login অনুমোদনের ধাপগুলো দেখিয়ে Git-ও সেটআপ করে। সবকিছু হাতে করতে চাইলে GitHub-এর Developer settings-এ একটি Personal access token বানিয়ে পাসওয়ার্ডের জায়গায় দিন।

Git-এর জন্য SSH: ধাপে ধাপে সেটআপ

SSH কী একটি ফাইল-জোড়া: প্রাইভেট কী আপনার কাছে থাকে, পাবলিক কী GitHub-কে দেন। সার্ভার যাচাই করে আপনি প্রাইভেট অংশের মালিক কি না, এবং পাসওয়ার্ড আর চাওয়া হয় না।

ধাপ ১. কী আছে কি না দেখুন

ls -la ~/.ssh

সেখানে id_ed25519 ও id_ed25519.pub থাকলে ধাপ ৩-এ যান।

ধাপ ২. কী বানান

ssh-keygen -t ed25519 -C "rima@example.com"

Enter চেপে ডিফল্ট পথে সংরক্ষণ করুন, এবং একটি পাসফ্রেজ দিন — ল্যাপটপ চুরি গেলেও কী রক্ষা পাবে। Ed25519 বর্তমান সুপারিশকৃত অ্যালগরিদম। পুরোনো সিস্টেম এটি সমর্থন না করলে ssh-keygen -t rsa -b 4096 -C "rima@example.com" ব্যবহার করুন।

ধাপ ৩. ssh-agent-এ কী যুক্ত করুন

এজেন্ট ডিক্রিপ্ট করা কী মেমোরিতে রাখে, যাতে প্রতিটি push-এ পাসফ্রেজ না লাগে।

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

macOS-এ পাসফ্রেজ কিচেইনে রাখতে ~/.ssh/config-এ যোগ করুন:

Host github.com
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_ed25519

এবং চালান ssh-add --apple-use-keychain ~/.ssh/id_ed25519।

ধাপ ৪. GitHub-এ পাবলিক কী যোগ করুন

cat ~/.ssh/id_ed25519.pub

ssh-ed25519 দিয়ে শুরু হওয়া পুরো লাইনটি কপি করুন। GitHub-এ Settings → SSH and GPG keys → New SSH key খুলুন, কী বসান এবং বোঝা যায় এমন নাম দিন, যেমন "ল্যাপটপ ২০২৬"। .pub ছাড়া ফাইল কখনো পাঠাবেন বা প্রকাশ করবেন না — সেটি প্রাইভেট কী।

ধাপ ৫. সংযোগ যাচাই

$ ssh -T git@github.com
Hi rima! You've successfully authenticated, but GitHub does not provide shell access.

প্রথম সংযোগে SSH জিজ্ঞেস করবে হোস্ট বিশ্বাস করেন কি না — GitHub-এর ডকুমেন্টেশনে প্রকাশিত ফিঙ্গারপ্রিন্টের সঙ্গে মিলিয়ে yes লিখুন।

ধাপ ৬. রিপোজিটরি SSH-তে বদলান

রিপোজিটরি HTTPS দিয়ে ক্লোন হয়ে থাকলে remote-এর ঠিকানা বদলান:

git remote -v
git remote set-url origin git@github.com:rima/my-project.git
git push

একটি কম্পিউটারে একাধিক GitHub অ্যাকাউন্ট

একটি SSH কী একটিমাত্র GitHub অ্যাকাউন্টের সঙ্গে যুক্ত হতে পারে। কর্মক্ষেত্র ও ব্যক্তিগত অ্যাকাউন্টের জন্য দুটি কী এবং ~/.ssh/config-এ হোস্টের ডাকনাম বানান:

Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work
    IdentitiesOnly yes

কর্মক্ষেত্রের রিপোজিটরি এই ডাকনাম দিয়ে ক্লোন করুন: git clone git@github-work:company/app.git। ইমেইলের জন্য includeIf-এর সঙ্গে মিলিয়ে কাজ ও ব্যক্তিগত পরিবেশ সম্পূর্ণ আলাদা হয়ে যায়।

সেটআপের সাধারণ ভুল

"Please tell me who you are"

user.name ও user.email সেট করা নেই। প্রবন্ধের শুরুর কমান্ডগুলো চালিয়ে কমিট আবার করুন।

"Permission denied (publickey)"

GitHub উপযুক্ত কী খুঁজে পায়নি। দেখুন কী এজেন্টে আছে কি না (ssh-add -l), পাবলিক অংশ অ্যাকাউন্টে যোগ হয়েছে কি না, এবং বিস্তারিত দেখতে ssh -vT git@github.com চালান।

"Support for password authentication was removed"

HTTPS-এ কাজ করার সময় অ্যাকাউন্টের পাসওয়ার্ড দিয়েছেন। টোকেন, Credential Manager-এর লগইন ব্যবহার করুন, অথবা SSH-তে যান।

GitHub-এ কমিটের পাশে ছবি নেই

git config user.email-এর ইমেইল GitHub প্রোফাইলে যোগ করা নেই। Settings → Emails-এ তা যোগ করুন — পুরোনো কমিটও স্বয়ংক্রিয়ভাবে যুক্ত হবে।

নেটওয়ার্কে 22 নম্বর পোর্ট বন্ধ

GitHub SSH-কে 443 পোর্টেও গ্রহণ করে। ~/.ssh/config-এ লিখুন: Host github.com, Hostname ssh.github.com, Port 443।

নতুন কম্পিউটারে সেটআপের ক্রম

  1. Git ইনস্টল করুন এবং git --version যাচাই করুন।
  2. user.name, user.email, init.defaultBranch ও এডিটর সেট করুন।
  3. ~/.gitconfig স্থানান্তর বা নতুন বানান, অ্যালিয়াস ও pull-এর কৌশলসহ।
  4. নতুন SSH কী বানান (পুরোনো প্রাইভেট কী অপ্রয়োজনে মেশিনে মেশিনে কপি করবেন না) এবং GitHub-এ যোগ করুন।
  5. ssh -T git@github.com দিয়ে অ্যাক্সেস যাচাই করুন, এবং কাজের রিপোজিটরি SSH ঠিকানায় ক্লোন করুন।

প্রতিটি ডিভাইসের জন্য আলাদা কী রাখার আরেক সুবিধা: ল্যাপটপ হারালে GitHub থেকে শুধু একটি কী মুছলেই হয়, বাকি মেশিনের অ্যাক্সেস অক্ষত থাকে।

সারসংক্ষেপ

Git সেটআপ তিন ধাপে: git config --global দিয়ে নাম ও ইমেইল, এডিটর, ডিফল্ট ব্রাঞ্চ ও pull-এর কৌশল বেছে নেওয়া; তারপর GitHub-এর লগইন সেটআপ — সবচেয়ে সহজ ও নির্ভরযোগ্য উপায় SSH কী। মনে রাখবেন, git login বলে কিছু নেই: প্রমাণীকরণ হয় সার্ভারে যোগাযোগের সময়। কনফিগ ও SSH অ্যাক্সেসের বিস্তারিত কোর্সে হাতেকলমে শেখানো হয়।

সাধারণ প্রশ্ন

Windows-এ Git-এর সেটিং ফাইল কোথায় থাকে?

গ্লোবাল সেটিং C:\Users\নাম\.gitconfig-এ, আর লোকাল সেটিং প্রতিটি রিপোজিটরির .git\config-এ। সঠিক অবস্থান জানতে git config --list --show-origin দেখুন।

Git-এর সেটিং কীভাবে রিসেট করব?

~/.gitconfig ফাইল মুছুন বা নাম বদলান — Git ডিফল্ট মানে ফিরে যাবে। একটি প্যারামিটার মুছতে git config --global --unset নাম।

GitHub ও GitLab-এর জন্য কি একটি SSH কী চলে?

হ্যাঁ, একই পাবলিক কী একাধিক সেবায় যোগ করা যায়। একটি সীমাবদ্ধতা: GitHub-এ কী একটিমাত্র অ্যাকাউন্টের সঙ্গে বাঁধা।

GitHub-এ Verified চিহ্ন পেতে কমিট কীভাবে সই করব?

GPG বা SSH কী দিয়ে সই সেটআপ করুন: যেমন git config --global gpg.format ssh, user.signingkey-এ পাবলিক কীর পথ, এবং commit.gpgsign true; তারপর কীটি GitHub-এ Signing key হিসেবে যোগ করুন।

Git আপডেটের পর কি আবার সেটআপ করতে হয়?

না, আপডেট ~/.gitconfig ও ~/.ssh-এর কী স্পর্শ করে না — সব সেটিং থেকে যায়।

ভিডিওতে বিষয়টি শিখুন

“শূন্য থেকে আত্মবিশ্বাসী ডেভেলপার পর্যন্ত গিট” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।

কোর্সে যান