我有一个分支主机,它跟踪远程分支源/主机。

我想在本地和远程将它们重命名为master old。这可能吗?

对于跟踪origin/master(并且总是通过git pull更新本地主分支)的其他用户,在我重命名远程分支后会发生什么?他们的git pull是否仍然有效,或者它是否会抛出一个错误,即无法再找到原始/主文件?

接下来,我想创建一个新的主分支(本地和远程)。再次,在我这样做之后,如果其他用户执行git pull,现在会发生什么?

我想这一切都会带来很多麻烦。有没有一种干净的方法可以得到我想要的东西?还是我应该让master保持原样,创建一个新的分支master,然后继续工作?


当前回答

您可以执行以下操作:

git -m master master-old #rename current master
git checkout -b master   #create a new branch master
git push -f origin master #force push to master

但如果其他人共享这个存储库,强行推送是个坏主意。强制推送将导致其修订历史与新的修订历史冲突。

其他回答

您可以执行以下操作:

git -m master master-old #rename current master
git checkout -b master   #create a new branch master
git push -f origin master #force push to master

但如果其他人共享这个存储库,强行推送是个坏主意。强制推送将导致其修订历史与新的修订历史冲突。

转到github.com或其任何位置,单击分支并重命名它。然后在本地运行这些命令:

git branch -m <old-branch-name> <new-branch-name>
git fetch origin
git branch -u origin/<new-branch-name> <new-branch-name>

最接近重命名的方法是删除,然后在远程设备上重新创建。例如:

git branch -m master master-old
git push remote :master         # Delete master
git push remote master-old      # Create master-old on remote

git checkout -b master some-ref # Create a new local master
git push remote master          # Create master on remote

然而,这有很多警告。首先,没有现有的签出会知道重命名-Git不会尝试跟踪分支重命名。如果新的master还不存在,git pull将出错。如果已创建新主控形状。拉将尝试合并master和master old。因此,除非您与之前签出存储库的所有人合作,否则这通常是一个坏主意。

注意:默认情况下,更新版本的Git不允许您远程删除主分支。您可以通过在远程存储库上将receive.denyDeleteCurrent配置值设置为警告或忽略来覆盖此设置。否则,如果您准备立即创建一个新的master,请跳过gitpushremote:master步骤,并将--force传递给gitpushremotemaster步骤。请注意,如果无法更改远程的配置,则无法完全删除主分支!

此警告仅适用于当前分支(通常是主分支);任何其他分支都可以如上所述被删除和重新创建。

git checkout -b new-branch-name
git push remote-name new-branch-name :old-branch-name

在删除旧分支名称之前,您可能必须手动切换到新分支名称

好的,在本地和远程重命名分支非常简单!。。。

如果你在分支机构,你可以很容易地做到:

gitbranch-m<branch>

否则,您需要执行以下操作:

git分支-m<your_old_branch><your_new_branch>

然后,将删除推送到远程,如下所示:

git推送原点<your_old_branch>

现在你完成了。

如果在尝试推送时遇到上游错误,只需执行以下操作:

git push--设置上游原点<your_new_branch>

我还创建了下图,以显示实际命令行上的步骤。只要按照步骤操作,你就会很好: