侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

在Git操作中出现的意外及解决方案之一:原本要在新分支改动代码,却在废弃分支上一顿操作

技术  /  管理员 发布于 1年前   386

Git是一个分布式版本控制系统,用于跟踪和管理项目的代码变化。它最初由 Linus Torvalds 开发,用于管理 Linux 内核的代码。

Git特点:

分布式:
每个开发者都可以拥有完整的代码仓库副本,包括完整的历史记录。
这使得团队成员可以在没有网络连接的情况下独立工作,并且更容易处理分支和合并操作。

高效性能:
Git 设计简洁,执行速度快。它使用了一种称为” 快照” 的机制来存储文件的状态,而不是存储文件的差异。
这使得 Git 在处理大型项目和大量文件时表现出色。

强大的分支和合并功能:
Git 鼓励频繁地创建和合并分支,使得团队可以同时进行多个任务和实验性开发。
合并操作也相对简单,可以轻松地将不同分支的更改合并到一起。

完整的历史记录:
Git 记录了每次提交的详细信息,包括作者、日期、提交消息等。
这使得团队可以追溯代码的演变历史,并轻松地回滚到之前的版本。

支持多种协作方式:
Git 支持多种协作方式,包括通过远程仓库进行协作、通过邮件列表或社交平台进行代码审查等。

Git已成为广泛使用的版本控制系统,被许多开发者和团队用于管理各种类型的项目。

它提供了强大的工具和功能,使得代码的版本控制和协作变得更加高效和可靠。


下面呢是团队中协作开发时一些常见的Git入门操作:

初始化仓库:使用 git init 命令在当前目录初始化一个新的 Git 仓库。
克隆仓库:使用 git clone <repository> 命令克隆一个远程仓库到本地。
添加文件:使用 git add <file> 命令将文件添加到暂存区,准备提交。
提交更改:使用 git commit -m "commit message" 命令将暂存区的更改提交到本地仓库。
查看状态:使用 git status 命令查看当前仓库的状态,包括已修改、已暂存和未跟踪的文件。
查看历史:使用 git log 命令查看提交历史记录,包括提交者、日期和提交消息。
创建分支:使用 git branch <branch-name> 命令创建一个新的分支。
切换分支:使用 git checkout <branch-name> 命令切换到指定的分支。
合并分支:使用 git merge <branch-name> 命令将指定分支的更改合并到当前分支。
拉取更新:使用 git pull 命令从远程仓库拉取最新的更改。
推送更改:使用 git push 命令将本地的更改推送到远程仓库。

以上操作就是开发过程中的基本流程了


下面来说说意外及解决方案:本该出现在新分支的代码改动,却在废弃的分支上开发半天!

意外场景:

假设现在你的 a 分支功能开发完成,合并到 master 分支后,master 分支又有团队成员更新了很多代码。

其实这时你应该在本地更新(git pull)master 分支并且 git checkout 到一个新的分支(b)继续开发新功能。

但你并没有,继续留在了 a 分支继续开发,这可能导致代码差异过大而产生代码冲突!


解决方法:

1.先将a分支的代码提交到暂存区

> git add .
> git commit -m'fix'

2.提交之后会有一个提交记录,查看提交记录,并将刚才提交的这个commit号复制下来

> git log 

3.更换到master切一个最新分支出来(b)

> git checkout master && git pull
> git checkout -b <新分支名>
> git cherry-pick <刚才复制的commit号>

操作之后你会发现a分支的更改内容被复制了一份到b分支,这样就可以继续开发了~


最后

关于git cherry-pick,git cherry-pick 是 Git 中的一个命令,用于选择性地将其他分支上的单个或多个提交应用到当前分支。它的应用场景和用法如下:

场景:

合并特定提交:当你只需要合并其他分支上的某个或某几个提交到当前分支时,可以使用 git cherry-pick。

修复bug:当你在其他分支上修复了一个 bug,并且希望将该修复应用到当前分支上时,可以使用 git cherry-pick。


用法:

单个提交的 cherry-pick:

git cherry-pick <commit>

这将会将指定的 <commit> 应用到当前分支上。


多个提交的 cherry-pick:

git cherry-pick <commit1> <commit2> ...

这将会按照指定的顺序将多个提交应用到当前分支上。


跨分支的 cherry-pick:

git cherry-pick <commit>..<commit>

这将会将两个提交之间(包括这两个提交)的所有提交应用到当前分支上。


需要注意的是,git cherry-pick 可能会引入冲突,因为它将其他分支上的提交应用到当前分支上。

如果发生冲突,你需要手动解决冲突并提交修改。

此外,git cherry-pick 会生成新的提交,这些提交与原始分支上的提交具有不同的 SHA 标识。


  • 上一条:
    在php中使用spatie/mjml-php扩展包实现将MJML转换为HTML
    下一条:
    在Git操作中出现的意外及解决方案之一:推送代码到master后直接开发忘记切换分支
  • 昵称:

    邮箱:

    1条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    • 2025-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客