آموزش Git و GitHub برای مبتدیها: از اولین commit تا push
Git ابزاری است که تاریخچهی تغییرات فایلهای شما را نگه میدارد. با آن میتوانید به نسخهی قبلی برگردید، روی یک ایده بدون ترس از خرابکردن کد اصلی کار کنید و با دیگران همکاری کنید. GitHub سرویسی است که مخزنهای Git را آنلاین نگه میدارد. اینجا سادهترین مسیر را قدمبهقدم میرویم.
نصب و تنظیم اولیه
Git را از سایت رسمی نصب کنید و یکبار نام و ایمیل را تعریف کنید (در تاریخچه کنار هر تغییر دیده میشود):
git config --global user.name "نام شما"
git config --global user.email "you@example.com"
ساخت مخزن و اولین commit
داخل پوشهی پروژه:
git init
git add .
git commit -m "نسخهی اول"
git add تغییراتی را که میخواهید در commit بعدی باشند «آماده» میکند و git commit یک عکس از آنها در تاریخچه ثبت میکند. پیام commit را کوتاه و گویا بنویسید: بعداً به کارتان میآید.
دیدن وضعیت و تاریخچه
git status
git log --oneline
شاخه (branch): تغییر بدون خطر
برای هر ویژگی جدید یک شاخه بسازید تا شاخهی اصلی سالم بماند:
git switch -c feature-new
# ... تغییر بدهید و commit کنید ...
git switch main
git merge feature-new
اگر نام شاخهی اصلی در مخزن شما master است، بهجای main همان را بنویسید.
اتصال به GitHub
۱. در GitHub یک مخزن خالی بسازید. ۲. آدرسش را به مخزن محلی بدهید و بفرستید:
git remote add origin https://github.com/USERNAME/REPO.git
git push -u origin main
بعد از آن، برای ارسال تغییرات جدید فقط git push کافی است و برای گرفتن تغییرات دیگران git pull.
.gitignore: چیزهایی که نباید وارد مخزن شوند
فایلی به نام .gitignore بسازید و نام فایلها و پوشههایی را که نباید ثبت شوند در آن بنویسید:
node_modules/
dist/
.env
این مهمترین نکتهی امنیتی است: رمزها، کلیدهای API و فایل .env را هرگز commit نکنید. اگر مخزن عمومی باشد، هر کسی آنها را میبیند؛ و حذف فایل در commit بعدی کافی نیست چون در تاریخچه میماند. اگر چنین اتفاقی افتاد، کلید را همان لحظه عوض کنید (توضیح بیشتر دربارهی فایل env).
اشتباههای رایج مبتدیها
- commit بدون پیام یا با پیام «تغییرات».
- یک commit غولپیکر برای ده کار مختلف؛ بهتر است هر commit یک کار باشد.
- کار مستقیم روی شاخهی اصلی در پروژهی تیمی.
- commit کردن پوشههای حجیم تولیدشده مثل
node_modules. - ترس از
git status؛ آن را زیاد بزنید، فقط میخواند و هیچ چیز را خراب نمیکند.
بعد از این چه یاد بگیرم؟
Pull Request در GitHub برای بازبینی تغییرات، حل کردن conflict هنگام merge، و git revert برای برگرداندن یک commit بدون پاککردن تاریخچه. چند نمونهی واقعی کد منتشرشده را در گیتهاب علی عبدالهی میبینید.
سوالات رایج
Git و GitHub یکی هستند؟ نه؛ Git ابزار است و GitHub یکی از سرویسهایی که مخزن Git را میزبانی میکند (GitLab و Bitbucket هم هستند).
اگر اشتباهی چیزی را commit کردم؟ برای commit محلی که هنوز push نشده، میشود آن را اصلاح کرد؛ ولی اگر push شده، تاریخچه را دستکاری نکنید و با git revert برگردانید.