Git

分类下相关文章

git 基于某个历史 commit 提交新建分支

针对不同版本的硬件,维护不同版本的软件,确实比较麻烦。 因为硬件不方便随时升级,所以只能让软件去升级,来兼容处理硬件的 bug。 结果就是,软件需要保留 N 多版本,且某个旧版本上可能还需要做 hot fix ... 😆 git 基于某个历史 commit 新建分支 git checkout -b new-branch-name commit-hash 💡 其它 再配合 git cherry-pick 将一个 commit 应用到多个分支 这样能方便不少。可以在多个版本分支上,应用同一个 hot fix。 唯一需要注意的是,cherry pick 之后,一定要检查一下 merge 后的代码变 ...

阅读全文...

git cherry-pick 将一个 commit 应用到多个分支

需求场景 公司的一个控制设备运行的 android 平板蓝牙 app,针对每个客户都有一个独立的版本, 功能和界面都有所不同。而有的客户又针对他们自己的客户,又做了功能和 UI 区分,但是差异很小。 所以就放到了一个 git 代码仓库中进行管理,但是不同版本使用了不同的 branch 分支进行管理。 在维护多个分支时,会遇到需要同时向多个分支添加同一个功能的需求。 手动去每个分支修改一遍代码可太麻烦了,这时候,git cherry-pick 就排上了用场。 可以将一个 commit 应用到多个不同分支上。 操作流程 先在某个分支 A 上,将功能开发好,提交一个 commit。 然后,切换到另一 ...

阅读全文...

Warning: the ECDSA host key for 'github.com' differs from the key for the IP address

这个问题遇到好多次了,一直懒得解决,但是每次向 github 提交/拉取代码,真的很烦躁,不得不解决一下了。 警告信息 > git pull Warning: the ECDSA host key for 'github.com' differs from the key for the IP address 'x.x.x.x' Offending key for IP in ~/.ssh/known_hosts:17 Matching host key in ~/.ssh/known_hosts:26 Are you sure you want to continue connect ...

阅读全文...

将 github 上的指定 commit 转换为 patch 文件

为啥会有这个需求 因为目前正在用的一个开源项目已经停止为何 N 多年了,很多新功能都不支持。 然后有不少三方开发者提交了 patch,但是这些 patch 并没有合并到项目中。 所以,我 fork 了一份主项目,然后需要将这些 patch 一一打补丁进去。 生成 patch 文件 将 github commit 转换成 patch Add .patch (or .diff) at the end of the commit URL: 例如,假如一个 commit 的 github 地址是: https://github.com/genieacs/genieacs-sim/pull/18/c ...

阅读全文...

Git 项目中移除 submodule,并将其代码并入当前项目管理

之前由于要引用一个 github 上的三方的 SDK,所以作为 git submodule 引入了进来: git submodule add https://github.com/STMicroelectronics/BlueSTSDK_Android.git BlueSTSDK 但是,实际开发时,发现这个 SDK 的代码有问题,所以做了部分本地修改。 而这些修改又不方便提交给官方。 由于是 submodule,修改也没法提交到当前项目的 git 管理中。也就无法同步到其他的开发机上,很是不方便。 所以,需求移除 submodule,并将其代码并入当前项目管理。 具体操作 git rm -- ...

阅读全文...

通过 git lfs 将数据库文件加入 git 项目管理

之前只是看了 git lfs 的介绍,但是没有上手一试,正好遇到新项目想把测试数据库的数据导出,并存储到 git 项目中, 方便其他开发环境导入。 Ubuntu 上安装 git-lfs sudo apt install git-lfs 如果未安装,会提示错误。安装引导安装就好。 > git lfs install fatal: 'lfs' appears to be a git command, but we were not able to execute it. Maybe git-lfs is broken? > git-lfs Command 'git-lfs' not ...

阅读全文...

项目代码版本控制工具 Git - 公司内部培训 PPT 大纲

最好能用一个现场可以演示的案例串起来。 git 简介 Git是目前世界上最先进的分布式版本控制系统(没有之一) 诞生于 2005 年 https://git-scm.com/ Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. git 与 github 的关系 https://github.com/ GitHub 是一个面向开源及私有 ...

阅读全文...

Git LFS 存储图片文件

背景 由于图片识别项目需要用到大量的样本图片,用于逐一测试,调试参数。 为了方便管理,我都放到 Git 项目根目录下的 images 文件夹下了。 但是不知道用 git 存储这类图片文件是否有什么弊端。 Git 不适合做大二进制文件存储 copy 自云效的文档: 效率变慢:不管实际上用户是否使用到这些大文件的历史,都需要把每一个文件的每一个版本下载到本地仓库。毫无疑问,下载耗时的增加给用户带来了更多的等待时间。 空间变大:一个Git仓库存放的大型的文件越多,加之伴随着其关联提交不断增多,Git仓库会以非常快的速率膨胀,占用更多的磁盘空间。 Git LFS 看到一个讨论,都推荐使用 LFS。 ...

阅读全文...

git 无法添加某个子目录问题排查

在拷贝了一个已有项目到新项目目录后,发现有一个子目录无法添加到 git 管理中。 这个子目录的特点是,曾经包含 .git 目录,然后被我手动删除。 但是这个目录再也无法添加到 git 管理中,而且用 git status 也无法显示其状态。 查看已被排除的文件及目录 git status --ignored 并没有发现该目录。 强制添加 如果是添加该子目录,没有任何提示,也没有添加成功。 git add -f backend 强制添加一个文件,才能看到提示信息 git add -f backend/go.mod fatal: Pathspec 'backend/go.mod' is in ...

阅读全文...

CODING 提示: Public key expired

早上向 coding.net git 仓库推送代码的时候报错: > git push origin master CODING 提示: Public key expired. 此个人公钥已经超过有效期,要继续使用请到 https://your_account.coding.net/user/account/setting/keys 更改设置。 fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exist ...

阅读全文...

master 时代的终结,git branch -M main

好久没有在 github 上新建代码项目了,原因是担心服务器上拉取不稳定。但是,对于小程序项目就无所谓了,本地开发环境还是能保证 github 访问的。。。所以为了节省国内 git 仓库的额度,就在 github 私有仓库上存储小程序项目了。 突然发现熟悉的初始化流程变了! > git remote add origin git@github.com:sunzhongwei/some_project.git > git branch -M main > git push -u origin main 多了一行 git branch -M main,隐隐感觉可能跟黑人敏感词 ...

阅读全文...

喜获 Arctic Code Vault Contributor 称号

然而,我感觉很水。。。不知道 Github 的评判标准是什么? 至少不用担心自己的祖传代码失传了。 Arctic Code Vault 计划 中文翻译为“北极代码仓库”计划,即将 Github 上的开源代码,存储在特制的抗氧化的存储介质上,号称可以存储千年以上。 ...

阅读全文...

git 报错: The requested URL returned error: 401 Unauthorized

在新建了一个阿里云 code 代码仓库的账号之后,新建了一批 git 仓库。但是在现有服务器上 push 或者 pull 代码会报错: 执行 $ git pull origin master 如果是 https 协议,则报错: error: The requested URL returned error: 401 Unauthorized while accessing https://code.aliyun.com/xxx/xxx.git/info/refs. fatal: HTTP request failed 如果是 git 协议,则报错: fatal: The remote ...

阅读全文...

Git 取消本地最后一次 commit

背景 早上突然有了个想法,立马修改代码并 Git 提交,但是在 push 时发现没有合并远端最新代码。导致大量的代码冲突 (因为这台电脑很长时间没有更新过这个项目的代码),头一下子大了。。。我都准备删除本地项目,重新拉代码了。但是一想这样太 low 了,还是查查怎么挽救吧,毕竟 git 无所不能。 解决方法 git reset HEAD~ Unstaged changes after reset: M some_file.go some_file.go 就是我早上修改的造成冲突的文件。 git status On branch master Your branch is b ...

阅读全文...

快速将两个代码文件目录合并

背景 我这里的项目代码有 Git 版本控制,但是客户那里没有。所以经常会有这种临时需求,客户会把代码打包发我,我这里进行修改,再打包发回去。 所以,我需要将客户给我的代码包,同我本地的代码进行合并。但是这个过程总不能手动一个个文件进行对比吧。 快速合并 linux 下执行 rsync -avh --progress my_code/src/ client_code/src/ 参数说明: -a archive 模式,将第一个目录内所有的内容都复制到第二个目录 -v verbose 输出 -h human readable --progress 显示进度 之前一直以为 rsync 只能做远程 ...

阅读全文...