ارسال شاخه جدید به گیتهاب
push شاخه جدید به ریموت با upstream، ارسال همه شاخهها و حذف شاخه ریموت.
ارسال شاخه جدید
شاخه جدیدی محلی ساختهاید و میخواهید به گیتهاب بفرستید:
# ساخت شاخه جدید:
git switch -c feature-dark-mode
# کار و کامیت:
git add .
git commit -m "افزودن حالت تاریک"
# ارسال به ریموت:
git push -u origin feature-dark-mode
خروجی:
Enumerating objects: 5, done.
...
remote: Create a pull request for "feature-dark-mode" on GitHub by visiting:
remote: https://github.com/user/repo/pull/new/feature-dark-mode
To github.com:user/repo.git
* [new branch] feature-dark-mode -> feature-dark-mode
# Branch "feature-dark-mode" set up to track "origin/feature-dark-mode".
دو اتفاق افتاد:
- شاخه در گیتهاب ساخته شد (
[new branch]) - شاخه محلی به ریموت وصل شد (tracking) — دفعه بعد فقط
git push
گیتهاب خودش لینک ساخت Pull Request میدهد! رویش کلیک کنید تا PR آماده شود.
سوئیچ -u یادت میماند
بدون -u در اولین push:
git push origin feature-dark-mode
شاخه ارسال میشود اما tracking تنظیم نمیشود — دفعه بعد که فقط git push بزنید:
fatal: The current branch has no upstream branch.
راهحل: یا همیشه -u اولین بار بزنید، یا بعداً:
git push -u origin feature-dark-mode
ارسال همه شاخههای محلی
git push --all origin
همه شاخههای محلی را به ریموت میفرستد (برچسبها نه — آنها با --tags).
ارسال همه برچسبها
git push origin --tags
حذف شاخه ریموت
بعد از merge، شاخه ریموت را حذف کنید تا مخزن تمیز بماند:
# از ترمینال:
git push origin --delete feature-dark-mode
# یا با سینتکس جدید:
git push origin :feature-dark-mode
سپس شاخه محلی:
git switch main
git branch -d feature-dark-mode
git fetch -p
چرخه کامل شاخه با ریموت
# ۱. از آخرین main شروع کنید:
git switch main && git pull
# ۲. شاخه جدید:
git switch -c feature/x
# ۳. کار + کامیت + push:
git add . && git commit -m "..."
git push -u origin feature/x
# ۴. (بعد از merge در گیتهاب) پاکسازی:
git switch main && git pull
git branch -d feature/x
git push origin --delete feature/x
git fetch -p
خلاصه
git push -u origin <شاخه>شاخه جدید را میفرستد و وصل میکندgit push --allهمه شاخهها؛--tagsهمه برچسبهاgit push origin --delete <شاخه>شاخه ریموت را حذف میکند- بعد از merge، هم شاخه محلی و هم ریموت را پاک کنید
این مبحث بخشی از دوره آموزش کامل Git است.