Gitのローカルブランチ名とリモートブランチ名の両方の名前を変更するにはどうすればよいですか?


456

マスター-> origin / regacy、FeatureA-> origin / FeatureAのような4つのブランチがあります。ご覧のとおり、間違った名前を入力しました。

だから私はリモートブランチの名前を変更したい(起源/レガシー→起源/レガシーまたは起源/マスター)

以下のコマンドを試してみます:

git remote rename regacy legacy

しかし、Gitコンソールからエラーメッセージが返されました。

 error : Could not rename config section 'remote.regacy' to 'remote.legacy'

この問題を解決するにはどうすればよいですか?




回答:


808

ここに画像の説明を入力してください


それを実現するにはいくつかの方法があります。

  1. ローカルブランチを変更して、変更をプッシュします
  2. 元の名前をローカルに維持しながら、新しい名前でブランチをリモートにプッシュします

ローカルとリモートの名前を変更する

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

# Delete the old branch on remote - where <remote> is, for example, origin
git push <remote> --delete <old_name>

# Or shorter way to delete remote branch [:]
git push <remote> :<old_name>

# Push the new branch to remote
git push <remote> <new_name>

# Reset the upstream branch for the new_name local branch
git push <remote> -u <new_name>

ここに画像の説明を入力してください


リモートブランチのみの名前を変更する

クレジット:ptim

# In this option, we will push the branch to the remote with the new name
# While keeping the local name as is
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

重要な注意点:

git branch -m(移動)を使用すると、Gitは追跡ブランチを新しい名前で更新します。

git remote rename legacy legacy

git remote rename構成ファイルのリモートセクションを更新しようとしています。リモートの名前を指定された名前に変更して新しい名前に変更しますが、あなたの場合は何も見つからなかったため、名前の変更に失敗しました。

しかし、それはあなたが思うことをしません。リモートブランチではなくローカル設定のリモート名を変更します。 


注: Gitサーバーでは、Webインターフェースまたは外部プログラム(Sourcetreeなど)を使用してGitブランチの名前を変更できる場合がありますが、Gitではすべての作業がローカルで行われるため、上記のコマンドを使用することをお勧めします仕事に。


私はメッセージを取得引くしようとすると、やはり上記の後、何かをする必要があると:Your configuration specifies to merge with the ref ''refs/heads/old_name'
クシシュトフKrasoń

6
古いアップストリームの設定を解除することを忘れないでください:git checkout <new_name> ; git branch --unset-upstream
Miguel Ping

2
@MiguelPingのコメントは重要です。すでにgithubにプッシュしたブランチの名前を変更しようとすると、ローカルを削除して名前を変更し、再度プッシュすると、古い名前が再び使用されます。--unset-upstream再プッシュする前であれば、意図したとおりに機能します。
アダム・タトル

1
リモートの古い名前のブランチで開いているPRの自動クローズを回避する方法はありますか?gitlabでこれに直面し、元のブランチ名のPRがオリジンにプッシュされた後に閉じられました。
Himanshu Tanwar

141

ブランチに誤って名前を付けて、これをリモートリポジトリにプッシュした場合は、次の手順に従ってブランチの名前を変更します(この記事に基づく)。

  1. ローカルブランチの名前を変更します。

    • 名前を変更したいブランチにいる場合:
      git branch -m new-name

    • 別のブランチにいる場合:
      git branch -m old-name new-name

  2. 削除old-nameリモートブランチをプッシュnew-nameローカルブランチを
    git push origin :old-name new-name

  3. 新しい名前のローカルブランチのアップストリームブランチをリセットし
    ます。ブランチに切り替えてから、次のようにします。
    git push origin -u new-name


1
最初の2つのステップの後で、現在のブランチがリモートリポジトリの存在しないブランチを指しているというエラーメッセージが表示された場合、3番目のステップでこれを修正します
Kevin Hooke

1
@ Dr1Ku ブランチを削除するには、git push <remote> --delete old_name&の違いを知る必要がありgit push origin :old-name new-nameます。
Ashutosh Chamoli

BitBucketユーザー:名前を変更した場合のステップ2のエラーを修正し、[リポジトリのmaster詳細]でデフォルトのブランチを新しいブランチに設定します。エラーがある:By default, deleting the current branch is denied, because the next 'git clone' won't result in any file checked out, causing confusion. You can set 'receive.denyDeleteCurrent' configuration variable to 'warn' or 'ignore' in the remote repository to allow deleting the current branch, with or without a warning message. To squelch this message, you can set it to 'refuse'. error: refusing to delete the current branch: refs/heads/master
コリン・

37

直接的な方法があるようです:

本当にリモートでブランチの名前を変更したいだけなら(同時にローカルブランチの名前を変更せずに)、次のような単一のコマンドでこれを行うことができます

git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

Gitでリモートでブランチの名前を変更する

詳細については、元の回答を参照してください。


1
gitで動作しませんでし2.20.1た古いブランチを削除しましたが、新しいブランチは作成されませんでした。
Paul Razvan Berg

26

次の方法でも実行できます。

最初にローカルブランチ、次にリモートブランチの名前を変更します。

ローカルブランチの名前を変更する:

別のブランチにログインしている場合、

git branch -m old_branch new_branch 

同じブランチにログインしている場合、

git branch -m new_branch

リモートブランチの名前変更:

git push origin :old_branch    // Delete the remote branch

git push --set-upstream origin new_branch   // Create a new remote branch

5

間違った名前をすでにリモートにプッシュしている場合は、次のようにします。

  1. 名前を変更するローカルブランチに切り替えます

    git checkout <old_name>

  2. ローカルブランチの名前を変更する

    git branch -m <new_name>

  3. <new_name>ローカルブランチをプッシュして上流ブランチをリセットします

    git push origin -u <new_name>

  4. <old_name>リモートブランチを削除する

    git push origin --delete <old_name>

これはこの記事に基づいていました。


4

現在のブランチの名前を変更するためのシンプルなスニペット(ローカルおよび元のブランチ)をアタッチします。

git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>

git docsからの説明

git branch -mまたは-Mオプションは、に名前が変更されます。対応するreflogがあった場合、それはmatchに名前が変更され、ブランチの名前変更を記憶するためにreflogエントリが作成されます。存在する場合は、-Mを使用して、名前の変更を強制する必要があります。

特別なrefspec:(または+:早送り以外の更新を可能にする)は、Gitに「一致する」ブランチをプッシュするように指示します。ローカル側に存在するすべてのブランチについて、同じ名前のブランチがすでに存在する場合はリモート側が更新されますリモート側。

--set-upstream の追跡情報を設定して、の上流ブランチと見なします。指定しない場合は、デフォルトで現在のブランチになります。


3

直接的な方法はありません。

  1. ローカルブランチの名前を変更

    私の現在のブランチはマスターです

    git branch -m master_renamed #master_renamedはマスターの新しい名前です

  2. リモートブランチを削除し、

    git push origin --delete master #originはremote_nameです

  3. 名前を変更したブランチをリモートにプッシュし、

    git push origin master_renamed

それでおしまい...


素晴らしくてシンプルでたった3つのステップ。私が提案できる唯一の改善はgit push -u origin master_renamed、ブランチを追跡ブランチとして設定することです
ut9081

2

これは、ローカルブランチの名前を変更しなくても、3つの簡単な手順で実行できます。

  1. GitHubのリポジトリに移動します
  2. 名前を変更したい古いブランチから新しいブランチを作成します
  3. 古いブランチを削除する

0

私はこれらのgitエイリアスを使用しており、ほとんどの場合自動で実行されます。

git config --global alias.move '!git checkout master; git branch -m $1 $2; git status; git push --delete origin $1; git status; git push -u origin $2; git branch -a; exit;'

使用法:git move FROM_BRANCH TO_BRANCH

マスター、オリジンなどのデフォルト名がある場合に機能します。必要に応じて変更できますが、考え方はわかります。


0

ローカルブランチとリモートブランチの名前を変更するには、次のタスクを実行する必要がありました。

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

#  Delete the old remote branch
git push origin --delete <old_name>

# push to new remote branch - creates new remote branch
git push origin <new_name>

# set new remote branch as default remote branch for local branch
git branch --set-upstream-to=origin/<new_name> <new_name>

既存の回答とどう違うのですか?
Himanshu Tanwar

0
  1. ローカルブランチの名前を変更します。名前を変更したいブランチにいる場合:

    gitブランチ-m新しい名前

別のブランチにいる場合:

git branch -m old-name new-name
  1. 古い名前のリモートブランチを削除し、新しい名前のローカルブランチをプッシュします。

    git push origin:old-name new-name

  2. 新しい名前のローカルブランチのアップストリームブランチをリセットします。ブランチに切り替えてから:

    git push origin -u new-name

準備完了!


0
  • ローカルブランチの名前を変更します

名前を変更したいブランチにいる場合:

git branch -m new-name

現在、別のブランチにいる場合:

git branch -m old-name new-name
  • 古い名前のリモートブランチを削除し、新しい名前のローカルブランチをプッシュします。

ターゲットブランチにとどまり、次のことを行います。

git push origin :old-name new-name
  • 新しい名前のローカルブランチのアップストリームブランチをリセットします。

対象のブランチに切り替えてから:

git push origin -u new-name
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.