ارسال تغییرات به گیتهاب — git push
ارسال کامیتهای محلی به مخزن ریموت با git push، مفهوم upstream و رفع خطای rejected.
git push — ارسال به ریموت
git push کامیتهای محلی شما را به مخزن ریموت (گیتهاب) میفرستد — این است که کدتان «آپلود» و برای دیگران قابلمشاهده میشود:
git push origin main
خروجی نمونه:
Enumerating objects: 5, done.
Writing objects: 100% (3/3), 350 bytes | 350.00 KiB/s, done.
To github.com:username/my-project.git
a1b2c3d..e5f6g7h main -> main
خط آخر یعنی: شاخه main محلی (a1b2c3d به e5f6g7h) به main ریموت ارسال شد.
ساختار دستور
git push <ریموت> <شاخه>
| بخش | معنی |
|---|---|
origin | نام ریموت (معمولاً گیتهاب) |
main | شاخهای که میفرستید |
سوئیچ -u (upstream)
اولین بار که شاخهای را push میکنید، با -u آن را به شاخه ریموت وصل کنید:
git push -u origin main
از دفعه بعد فقط:
git push
-u (مخفف --set-upstream) میگوید: «شاخه محلی main را دنبالکنندهی origin/main کن». بعدش گیت میداند pull و push شما مربوط به کجاست.خطای معروف: rejected
اگر ریموت کامیتهایی داشته باشد که شما ندارید (مثلاً همکارتان push کرده):
git push
# To github.com:username/my-project.git
# ! [rejected] main -> main (fetch first)
# error: failed to push some refs...
راهحل — اول تغییرات جدید را بگیرید، بعد push کنید:
git pull
git push
چرخه کامل روزانه با ریموت
# صبح: بهروز شدن
git pull
# کار روزانه:
git switch -c feature/new-page
# ... کد زدن ...
git add .
git commit -m "افزودن صفحه جدید"
# ارسال شاخه جدید:
git push -u origin feature/new-page
# بعد از merge در گیتهاب:
git switch main
git pull
git branch -d feature/new-page
push اجباری — خطرناک! ⚠️
git push --force
این دستور ریموت را بهزور با نسخه محلی شما جایگزین میکند — کامیتهای دیگران ممکن است حذف شوند! فقط وقتی واقعاً میدانید چه میکنید استفاده کنید.
git push --force-with-lease — اگر همکارتان در همین لحظه push کرده باشد، اجباری انجام نمیشود.چرا push من با SSH رمز نمیخواهد؟
چون در مبحث ۲۰ کلید SSH را تنظیم کردید! اگر از HTTPS استفاده میکنید، گیتهاب Personal Access Token میخواهد — توصیه ما: به SSH مهاجرت کنید (git remote set-url).
خلاصه
git push origin mainارسال کامیتها به ریموت- اولین بار:
-uبزنید تا شاخهها وصل شوند - خطای rejected = اول pull، بعد push
--forceخطرناک است — با احتیاط!
این مبحث بخشی از دوره آموزش کامل Git است.