git分支-分支管理

分支管理

现在已经创建、合并和删除了一些分支,让我们来看看一些分支管理工具,在开始经常使用分支时会很有用。

git branch命令不仅仅用于创建和删除分支。如果不带参数运行它,会得到当前分支的简单列表。

$ git branch

  iss53

* master

  Testing

这个*字符是前缀,表示当前检出的分支(即HEAD指向的分支)。这意味着如果在这个点提交,master分支将会随着新工作向前移动。要查看每个分支上的最后一次提交,可以运行git branch -v。

$ git branch -v

  iss53   93b412c Fix javascript issue

* master  7a98805 Merge branch 'iss53'

  testing 782fd34 Add scott to the author list in the readme

要查看已经合并到当前分支的分支,可以运行git branch --merged。

$ git branch --merged

  iss53

* master

因为之前已经合并了iss53分支,所以在列表中看到了它。列表中没有*号前缀的分支通常可以使用git branch -d进行删除;因为已经将它们的工作合并到另一个分支中,所以不会丢失任何内容。

要查看所有包含尚未合并工作的分支,可以运行git branch --no-merged。

$ git branch --no-merged

  Testing

这显示了另一个分支。因为它包含尚未合并的工作,尝试使用git branch -d删除它将会失败。

$ git branch -d testing

error: The branch 'testing' is not fully merged.

If you are sure you want to delete it, run 'git branch -D testing'.

如果真的想删除该分支并且丢失那些工作,你可以使用-D参数来强制删除,就像提示信息中指出的那样。

Tip:

上述描述的选项--merged和--no-merged,如果没有给定提交或分支名称作为参数,将分别显示已合并或未合并到当前分支的内容。

可以始终提供额外的参数来询问与其他分支的合并状态,而无需首先检出该其他分支,就像是,未合并到主分支的内容是什么。

$ git checkout testing

$ git branch --no-merged master

  topicA

  featureB

Caution

不要重命名仍然被其他合作者使用的分支。不要在没有阅读更改主分支名称部分的情况下重命名主分支(如master/main/mainline)。

要将分支从bad-branch-name更改为corrected-branch-name,并保留所有历史记录,以及在远程(GitHub、GitLab或其他服务器)更改分支名称,可以按照以下步骤操作:

在本地更改分支名称:

$ git branch -m bad-branch-name corrected-branch-name

这会将bad-branch-name更改为corrected-branch-name,但此更改目前只是本地的。为了让其他人在远程看到更正后的分支,需要将其推送。

$ git push --set-upstream origin corrected-branch-name

现在我们将简要查看一下我们目前所处的位置。

$ git branch --all

* corrected-branch-name

  main

  remotes/origin/bad-branch-name

  remotes/origin/corrected-branch-name

  remotes/origin/main

请注意,目前位于分支corrected-branch-name,并且该分支已在远程上可用。然而,具有错误名称的分支仍然存在,可以通过执行以下命令将其删除。

$ git push origin --delete bad-branch-name

Warning:

将分支名称更改为像master/main/mainline/default这样的名称会中断仓库使用的集成、服务、辅助工具和构建/发布脚本。在执行此操作之前,请确保与协作者进行咨询。另外,请确保彻底搜索存储库,并更新代码和脚本中对旧分支名称的任何引用。

使用以下命令将本地master分支重命名为main。

$ git branch --move master main

现在已经没有本地的master分支了,因为它已经被重命名为main分支。

要让其他人看到新的main分支,需要将其推送到远程。这将使重命名的分支在远程上可用。

$ git push --set-upstream origin main

现在查看下分支状态如下:

$ git branch --all

* main

  remotes/origin/HEAD -> origin/master

  remotes/origin/main

  remotes/origin/master

本地master分支已经消失,因为它已被替换为main分支。main分支已经存在于远程。然而,旧的master分支仍然存在于远程。其他合作者将继续将master分支作为其工作的基础,直到我们进行进一步的更改。

现在,需要完成一些任务来完成过渡:

依赖于该项目的任何项目都需要更新其代码或配置

更新任何测试运行配置文件

调整构建和发布脚本

在仓库主机上重定向设置,例如仓库的默认分支、合并规则以及与分支名称匹配的其他设置。

更新文档中对旧分支的引用。

关闭或合并任何针对旧分支的拉取请求。

在完成所有这些任务并确信main分支与master分支的表现相同后,可以删除master分支:

$ git push origin --delete master

相关推荐

  1. git分支-分支管理

    2024-04-13 14:38:03       32 阅读
  2. git分支-分支管理

    2024-04-13 14:38:03       35 阅读
  3. git分支管理

    2024-04-13 14:38:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 14:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 14:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 14:38:03       82 阅读
  4. Python语言-面向对象

    2024-04-13 14:38:03       91 阅读

热门阅读

  1. 程序员与自动化相关的项目讨论

    2024-04-13 14:38:03       41 阅读
  2. Android 下载、显示图片

    2024-04-13 14:38:03       34 阅读
  3. 使用simulink进行汽车软件建模的经验介绍

    2024-04-13 14:38:03       130 阅读
  4. 【示例】MySQL-索引失效的情况

    2024-04-13 14:38:03       38 阅读
  5. Etcd 故障节点修复

    2024-04-13 14:38:03       37 阅读
  6. QSQLITE QODBC QODBC3 QPSQL QPSQL7这些分别是什么?

    2024-04-13 14:38:03       32 阅读
  7. 职场新员工倒挂老员工工资

    2024-04-13 14:38:03       106 阅读
  8. for in 和 for of 的区别

    2024-04-13 14:38:03       38 阅读
  9. ES6的模块化

    2024-04-13 14:38:03       32 阅读
  10. 10个经典Python设计模式解析

    2024-04-13 14:38:03       38 阅读
  11. centos7 安装 rabbitmq3.8.5

    2024-04-13 14:38:03       32 阅读
  12. 时空大数据引擎-GeoMesa

    2024-04-13 14:38:03       31 阅读