چگونه یک Branch محلی گیت را تغییر نام بدهم؟

  • آخرین بروزرسانی پرسش در کاپ کد در پنج‌شنبه 26 مارس 2020

من نمی خوام همونطور که در Rename master branch for both local and remote Git repositories توضیح داده شده یک Branch ریموت رو تغییر نام بدم.

چطور می تونم یک Branch محلی که به ی Branch ریموت Push نشده رو تغییر نام بدم؟

پرسش 🔝امتیازی
تعداد بازدید2756597
امتیاز8315👍
رای8324👍
📅 پرسش در
📅 آخرین ویرایش

برای این پرسش 7 پاسخ وجود دارد

7

اگر میخوای یک Branch رو در حالی که به هر Branch دیگه ای اشاره داره، تغییر نام بدی:

git branch -m <oldname> <newname>

رو اجرا کن. اگر می خوای Branch فعلی رو تغییر نام بدی:

git branch -m <newname>

رو اجرا کن. برای این که یادت بمونه -mیعنی "move" یا mv که روشی برای تغییر نام فایل هاست.

اگر سیستم عاملت ویندوز هست یا فایل سیستم مورد استفاده ات به بزرگی یا کوچکی حروف حساسه و تغییرات فقط شامل حروف بزرگ میشه، می بایست از -M استفاده کنی، در غیر این صورت گیت خطای branch already exists رو نشون میده:

git branch -M <newname>

امتیاز13304👍

پاسخ تایید شده
📅 پاسخ در
📅 آخرین ویرایش
git branch -m old_branch_name new_branch_name

دستور بالا نام Branch رو تغییر میده ولی بایست حواست به استفاده از Branch تغییر نام داده شده باشه چرا که همچنان به Branch های Upstream قبلی که با اون ها در ارتباط هست اشاره داره (اگر باشه).

اگر می خوای بعد از این که Branch محلیت مثلا به new_branch_name تغییر نام پیدا کرد تغییراتی رو داخل مستر کنی:

git push origin new_branch_name:master (حالا تغییرات به Branch مستر میره ولی نام Branch محلی تو new_branch_name هست)

برای جزئیات بیشتر، "How to rename your local branch name in Git" رو ببین.

امتیاز435👍

📅 پاسخ در
📅 آخرین ویرایش

برای تغییر Branch فعلی:

git branch -m <newname>

امتیاز320👍

📅 پاسخ در
📅 آخرین ویرایش

پاسخ هایی که تا به اینجا داده شده درسته، ولی یک سری اطلاعات بیشتر رو میگم:

بدون نگرانی میشه یک Branch رو '-m' تغییر نام داد ولی برای استفاده از '-M' باید حواست باشه چرا که تغییر نام با استفاده از این دستور Force خواهد بود؛ حتی اگر یک Branch در حال حاضر با این نام وجود داشته باشه. مختصری از صفحه اصلی 'git-branch' در این باره:

با استفاده از گزینه -m یا -M، عبارت<oldbranch> به <newbranch>تغییر نام پیدا می کند. اگر <oldbranch> برای خودش reflog داشته باشد، آن هم تغییر نام پیدا می کند تا با<newbranch> مطابقت داشته باشد و یک مورد reflog هم ساخته می شود تا تغییر نام Branch را به یاد داشته باشد. اگر <newbranch> از قبل وجود داشته باشد، می بایست برای مجبور کردن برای این کار تغییر نام انجام شود از -M استفاده شود.


 

امتیاز113👍

📅 پاسخ در
📅 آخرین ویرایش

من به طور احمقانه در ابتدای نام یک Branch خط تیره قرار دادم و مستر رو چک اوت کردم. نمیخواستم Branch رو delete کنم، داخلش کار داشتم.

هیچ کدوم از این ها کار نکرد:

git checkout -dumb-name

git checkout -- -dumb-name

"s, 's و s هم کمکی نکرد. git branch -m کار نمیکنه.

در نهایت اینطوری مشکل رو حل کردم. وارد مسیر .git/refs/heads شو، فایلی با نام -dumb-name رو پیدا کن، هش Branch رو پیدا کن. حالا این چک اوتش میکنه، با نام یکسان یک Branch جدید بساز و قبلی رو پاک کن.

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

امتیاز73👍

📅 پاسخ در
📅 آخرین ویرایش

برای تغییر نام دادن Branch فعلی (بجز برای حالت HEAD منفصل ) میتونی از این alias استفاده کنی:

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'

امتیاز19👍

📅 پاسخ در
📅 آخرین ویرایش

گزینه دیگه استفاده نکردن از خط فرمان هست. کلاینت های Git GUI مثل SourceTree بخش زیادی از مشکلات یادگیری سینتکس رو که باعث شده سوالی مثل این جزو یکی از پربازدیدترین سوالات استک آورفلو بشه، از بین می برند.

در نرم افزار SourceTree، در صفحه "Branches" روی هر Branch محلی دلخواه در سمت چپ راست کلیک و "...Rename" رو انتخاب کن.

امتیاز17👍

📅 پاسخ در
📅 آخرین ویرایش
برای دنبال کردن نوشته های کاپ کد به کانال تلگرامی آن (cupcode_ir@) بپیوندید!
guest
0 دیدگاه ها
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
0
افکار شما را دوست داریم، لطفا نظر دهید.x