Git সেটিংস: git config, নাম, ইমেইল ও SSH কী
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) দুটি প্রোটোকলের একটিতে প্রমাণীকরণ হয়।
| HTTPS | SSH | |
|---|---|---|
| ঠিকানা | https://github.com/user/repo.git | git@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।
নতুন কম্পিউটারে সেটআপের ক্রম
- Git ইনস্টল করুন এবং
git --versionযাচাই করুন। user.name,user.email,init.defaultBranchও এডিটর সেট করুন।~/.gitconfigস্থানান্তর বা নতুন বানান, অ্যালিয়াস ও pull-এর কৌশলসহ।- নতুন SSH কী বানান (পুরোনো প্রাইভেট কী অপ্রয়োজনে মেশিনে মেশিনে কপি করবেন না) এবং GitHub-এ যোগ করুন।
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-এর কী স্পর্শ করে না — সব সেটিং থেকে যায়।
“শূন্য থেকে আত্মবিশ্বাসী ডেভেলপার পর্যন্ত গিট” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।
- ইনস্টল এবং কনফিগারেশন: প্রথম চালানোর জন্য Git প্রস্তুত করা
- গিটহাব ও দূরবর্তী রিপোজিটরি: আপনার কোড ক্লাউডে