Sharing Branches
تا حالا همهی کارهامون رو رویِ master انجام دادیم. حالا بیایید روی دیگر branchها کار کنیم.
خب، مشابهِ تگها، branchها نیز private و local هستن. پس اگه میخواهید branchای رو با اعضایِ تیم به اشتراک بذارید مجبوریم که مثلِ تگها اون رو مستقیماً push کنیم.
در ترمینال، branchای رو میسازیم و بهش سوئیچ میکنیم.
git switch -C feature/change-password
سپس دستورِ git push
رو اجرا میکنیم که با خطا مواجه میشیم:
fatal: The current branch feature/change-password has no upstream brach.
To push the current branch and set the remote as upstream, use
git push ——set-upstream ortgtn feature/change—password
معنایِ خطای بالا اینه که این branch با هیچ branchای در origin لینک نشده. گیت در خطایِ بالا دستوری رو برای push کردنِ این branch پیشنهاد داده. ولی قبل اجرای اون دستور بیایید دستورِ زیر رو اجرا کنیم.
> git branch -vv
* feature/change—password 478ac2a Add ftle1
master 478ac2a [origin/master] Add file1
همانطور که در خروجیِ دستورِ بالا مشخصه، local branch و remote tracking branch رو میبینیم. master همون local branch به origin/master لینک شده ولی feature/change-password branch به remote tracking branch لینک نشده.
حالا، برای اینکه همهی remote tracking branchها رو ببینیم دستورِ زیر رو اجرا میکنیم.
> git branch -r
origin/HEAD -> origin/master
origin/master
خب، برای لینک کردنِ private pranch به branchای در origin، برای دفعهی اول مجبوریم دستورِ زیر رو بنویسیم.
در دستورِ، آپشنِ u-
مخففِ set Upstream هست. بعدِ این آپشن، remote رو مشخص میکنیم و سپس اسمِ private branchمون رو مشخص میکنیم.
git push —u origin feature/change—password
حالا اگه دستورِ git branch -vv
رو اجرا کنیم، خروجیش بصورتِ زیر خواهد بود.
* feature/change—password 478ac2a [origin/feature/change—password] Add file1
master 478ac2a [origin/master] Add file1
همانطور که میبینید حالا local branchمون به اسمِ feature/change-password با origin branch به اسمِ origin/feature/change-password لینک شده.
همچنین اگه دستورِ git branch -r
رو بنویسیم خروجیش بصورتِ زیر خواهد بود.
origin/HEAD —> origin/master
origin/feature/change—password
origin/master
حالا میتونیم مثلِ master branch با این branch هم کار کنیم. پس از اینکه کارمون با این branch تموم شد باید اون رو حذف کنیم. برای این کار از دستورِ زیر استفاده میکنیم.
git push -d origin feature/change—password
دستورِ بالا feature/change-password branch رو از origin حذف کرد. به همین خاطر خروجیِ دستورِ git branch -r
حالا تغییر کرده.
origin/HEAD —> origin/master
origin/master
ولی در خروجیِ دستورِ git branch -vv
همچنان feature/change-password باقیست. اما عبارتِ gone مقابلِ origin/feature/change-password نوشته شده که این رو میرسونه که این branch حذف شده.
* feature/change—password 478ac2a [origin/feature/change—password: gone] Add file1
master 478ac2a [origin/master] Add file1
با وجود اینکه در origin اون branch رو حذف کردیم ولی همچنان در localمون باقیست. خروجیِ دستورِ git branch
بصورتِ زیر هست.
* feature/change—password
master
همانطور که میبینید در feature/change-password قرار داریم (علامتِ *) پس نمیتونیم الان اون رو حذف کنیم. پس به master سوئیچ میکنیم.
git switch master
و در نهایت با دستورِ زیر feature/change-password رو حذف میکنیم.
git branch -d feature/change—password