私がgit://
にしかアクセスできないリポジトリがある場合(通常は単にPush + pullするだけです)、git branch -m
を使用してローカルに行うのと同じ方法で、そのリポジトリ内のブランチの名前を変更する方法はありますか?
目的の名前で新しいローカルブランチを作成し、それを自分のリモートにプッシュしてから、古いリモートブランチを削除するだけです。
$ git branch new-branch-name Origin/old-branch-name
$ git Push Origin --set-upstream new-branch-name
$ git Push Origin :old-branch-name
それから、古いブランチ名を見るために、リポジトリの各クライアントはする必要があります:
$ git fetch Origin
$ git remote Prune Origin
注:古いブランチがメインブランチの場合は、メインブランチの設定を変更する必要があります。そうでなければ、$ git Push Origin :old-branch-name
を実行すると "現在のブランチの削除は禁止されています"というエラーが表示されます 。
ブランチの名前を本当にリモートで変更したい場合は、ローカルブランチの名前を同時に変更せずに、単一のコマンドでこれを行うことができます:
git Push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
上記のスクリプト( git-rename-remote-branch )を作成しました。このスクリプトは、上記を簡単に行うための便利なショートカットを提供します。
@ ksrbのコメントを統合するには:これは基本的に、1つのコマンドで2つのプッシュを行い、最初にgit Push <remote> <remote>/<old_name>:refs/heads/<new_name>
を使用して古いリモートトラッキングブランチに基づいて新しいリモートブランチをプッシュし、次に、git Push <remote> :<old_name>
を使用して、古いリモートブランチを削除します。
名前を変更したいブランチへの最初のチェックアウト:
git branch -m old_branch new_branch
git Push -u Origin new_branch
remote
から古いブランチを削除するには:
git Push Origin :old_branch
もちろんです。ブランチの名前をローカルに変更し、新しいブランチをプッシュして、古いブランチを削除してください。
唯一の本当の問題は、リポジトリの他のユーザがローカルのトラッキングブランチの名前を変更しないことです。
リモートブランチの「名前変更」は、実際には2ステップのプロセスです(必ずしも順序付けられているわけではありません):
git Push [space]:<old_name>
as ksrbの説明 );TortoiseGitを使用し、コマンドラインから最初にブランチを削除しようとしたときに、次のようになりました。
$ git Push Origin :in
致命的: 'Origin'はgitリポジトリではないようです
致命的:リモートリポジトリから読み取ることができませんでした。
正しいアクセス権があり、リポジトリが存在することを確認してください。
これは、pageantがprivate key loaded(これはTortoiseGitが自動的にpageant)。さらに、TortoiseGitコマンドにはOrigin
refが含まれていません(例:git.exe Push --progress "my_project" interesting_local:interesting
)。
また、Bitbucketを使用しており、他の種類のWebベースのオンラインgitマネージャー(GitHub、GitLab)として、インターフェイス(ブランチ)から直接リモートブランチを削除できましたページ):
ただし、TortoiseGitでは、Browse Referencesを使用してリモートブランチを削除することもできます。
リモートブランチ(リモートリスト)を右クリックすると、リモートブランチの削除オプションが表示されます。
古いリモートブランチを削除した後、Remote:に新しい名前を入力するだけで、TortoiseGitを介して新しいリモートブランチに直接プッシュしました。 Pushウィンドウのフィールド。このブランチは自動的に作成され、Bitbucketに表示されます。
ただし、手動で行う場合は、このスレッドでまだ言及されていない点は、-u
= --set-upstream
です。
git Push
docs から、-u
は--set-upstream
の単なるエイリアスなので、 Sylvain(-set-upstream new-branch
) と Shashank(-u Origin new_branch
) は同等です。これは、リモートref デフォルトはOrigin
であるため、以前に他のrefが定義されていない場合:
git Push Origin -u new_branch
= git Push -u new_branch
構成が欠落している場合、デフォルトは
Origin
になります。
最終的には、ここにある他の回答で提案されたコマンドを手動で入力したり使用したりしなかったため、おそらくこれは同様の状況にある他の人にとって役に立つかもしれません。
理由はわかりませんが、@ Sylvain Defresneの回答がうまくいかない。
git branch new-branch-name Origin/old-branch-name
git Push Origin --set-upstream new-branch-name
git Push Origin :old-branch-name
アップストリームの設定を解除する必要があります。その後、ストリームを再度設定できます。以下はその方法です。
git checkout -b new-branch-name
git branch --unset-upstream
git Push Origin new-branch-name -u
git branch Origin :old-branch-name
これが正しいかどうかはわかりませんが、ブランチの「古い名前」をブランチの「新しい名前」にプッシュしてから、次の2行で古いブランチを完全に削除しました。
git Push Origin old_branch:new_branch
git Push Origin :old_branch