我有四个分支,例如 master -> origin/regacy,FeatureA -> origin/FeatureA。如您所见,我输入了错误的名称。
所以我想重命名一个远程分支名称(origin/regacy → origin/legacy 或 origin/master)
我尝试以下命令:
git remote rename regacy legacy
但是 Git 控制台向我返回了一条错误消息。
error : Could not rename config section 'remote.regacy' to 'remote.legacy'
我怎么解决这个问题?
git branch -M new-name
3. git push -d origin old-name
4. git push -u origin new-name
。
https://i.stack.imgur.com/YeBYR.jpg
有几种方法可以做到这一点:
更改您的本地分支,然后推送您的更改 使用新名称将分支推送到远程,同时在本地保留原始名称
重命名本地和远程
# 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>
# Prevent git from using the old name when pushing in the next step.
# Otherwise, git will use the old upstream name instead of <new_name>.
git branch --unset-upstream <new_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>
https://i.stack.imgur.com/YOHON.png
仅重命名远程分支
学分: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远程重命名遗留遗留
git remote rename
正在尝试更新配置文件中的远程部分。它会将具有给定名称的遥控器重命名为新名称,但在您的情况下,它没有找到任何名称,因此重命名失败。
但它不会像你想的那样做;它将重命名您的本地配置远程名称,而不是远程分支。
注意 Git 服务器可能允许您使用 Web 界面或外部程序(如 Sourcetree 等)重命名 Git 分支,但您必须记住,在 Git 中所有工作都在本地完成,因此建议使用上述命令到工作。
如果您错误地命名了一个分支并将其推送到远程存储库,请按照以下步骤重命名该分支 (based on this article):
重命名本地分支:如果您在要重命名的分支上: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
git push <remote> --delete old_name
& 之间的区别git push origin :old-name new-name
删除一个分支。
master
,则修复第 2 步的错误,在 Repo 详细信息中将默认分支设置为新分支。错误是: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
重命名您的本地分支。
如果您在要重命名的分支上:
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
git push origin :old-name new-name
关闭了我的公开 PR。如果您在 PR 中有正在进行的讨论,请小心。
git push origin :old-name new-name
命令之前,请确保您的默认远程分支未设置为您要重命名和删除的当前分支
检查您正在使用以下命令的分支
git branch -a
结帐到要重命名的分支
git checkout branch_to_rename
使用重命名分支
git branch -m new_name
推送更改
git push origin :old_name new_name
似乎有一个直接的方法:
如果您真的只想远程重命名分支(而不同时重命名任何本地分支),您可以使用 git push
有关更多详细信息,请参阅原始答案。
2.20.1
中不起作用删除了旧分支,但未创建新分支。
也可以通过以下方式完成。
首先重命名本地分支,然后重命名远程分支。
重命名本地分支:
如果登录另一个分支,
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
如果您已经将错误的名称推送到远程,请执行以下操作:
切换到要重命名的本地分支 git checkout
这是基于 this article。
附加一个简单的片段来重命名你当前的分支(本地和原点):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
来自 git 文档的解释:
git branch -m 或 -M 选项,将重命名为 .如果有相应的 reflog,则将其重命名为 match,并创建一个 reflog 条目以记住分支重命名。如果存在,则必须使用 -M 来强制进行重命名。特殊的 refspec : (或 +: 允许非快进更新)指示 Git 推送“匹配”分支:对于本地存在的每个分支,如果已存在同名分支,则更新远程端在远端。 --set-upstream 设置跟踪信息,因此被认为是上游分支。如果没有指定,则默认为当前分支。
另一种解决方法如下:
结帐到要更改的分支从中创建一个新分支将上游设置为远程从本地和远程删除旧分支
进一步来说:
# Checkout to the branch you want to rename
git checkout <old_branch_name>
# Create a new branch from the old one and checkout to it
git checkout -b <new_branch_name>
# Push the new branch to remote
git push -u <origin> HEAD
# Delete local branch
git branch -d <old_branch_name>
# Delete remote branch
git push <origin> -d <old_branch_name>
没有直接的方法,
重命名本地分支,我当前的分支是master git branch -m master_renamed #master_renamed 是master 的新名称 删除远程分支,git push origin --delete master #origin 是remote_name 将重命名的分支推送到远程,git push origin master_renamed
而已...
git push -u origin master_renamed
将分支设置为跟踪分支
即使不通过三个简单的步骤重命名本地分支也可以做到这一点:
转到您在 GitHub 中的存储库 从要重命名的旧分支创建一个新分支 删除旧分支
我使用这些 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
如果您有默认名称(例如 master、origin 等),它就可以工作。您可以根据需要进行修改,但它会为您提供想法。
重命名您的本地分支。如果您在要重命名的分支上: 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
可以了,好了!
我必须执行以下任务来重命名本地和远程分支:
# 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>
如果要使用单个命令重命名当前分支,如下所示:
git rename my-new-branch-name
然后,您必须创建一个名为 git-rename
的文件,使其可执行 (chmod +x git-rename
) 并将其保存到 $PATH
中包含 this 的文件夹中:
#!/bin/sh
currentBranch="$(git rev-parse --abbrev-ref HEAD)"
test $# != 1 && cat <<EOF && exit 1
Renames the current branch ($currentBranch) both locally and remotely.
USAGE:
git rename <new branch name>
EOF
newBranch="$1"; shift
git branch -m "$newBranch" && \
git push origin :"$currentBranch" "$newBranch"
不定期副业成功案例分享
git checkout <new_name> ; git branch --unset-upstream
--unset-upstream
,它会按预期工作。OLD=<old>; NEW=<new>; REMOTE=<remote>; git branch -m $OLD $NEW && git push $REMOTE --delete $OLD && git push $REMOTE $NEW && git push $REMOTE -u $NEW