介绍

会不会使用Git已经是区别一个程序员是否现代化、有没有参与过大型项目的标志了

基本使用

初始化本地仓库(已有文件夹)

1
git init

添加远端仓库

1
git remote add origin https://github.com/hywing/xxx.git

先从远程仓库拉新版本记录(万事先fetch)

1
git fetch

在当前分支基础上新建一个分支

1
git checkout -b qml

下载远程仓库的更新

1
git pull

查看本地修改了哪些文件

1
git status -s

添加文件到暂存区

1
git add file1 file2 file3

删除不需要的文件

1
git rm -r file dir/

写入提交日志

1
git commit -m "这是一段日志" -a

提交到远程仓库

1
git push -f origin main

提交一个新的分支到远程仓库

1
git push --set-upstream origin qml

缓存修改(工作区和暂存区)

1
git stash push -u xxx

将暂存修改同步回来

1
git stash pop

查看当前分支指向(提交记录)

1
git branch -vv

账户配置

查看当前的用户名和邮箱

1
git config --list

配置全局用户名

1
git config --global user.name hywing

配置全局邮箱

1
git config --global user.email "hywing.sir@qq.com"

自动化集成

使用脚本自动化提交(这个对Github Pages非常有帮助)

1
2
3
4
git add .
current_time=$(date "+%Y-%m-%d %H:%M:%S")
git commit -m "$current_time -> docs updated!" -a
git push

开源项目

冲突管理:以解决一次RT-Thread的冲突为例讲解怎么解决开源项目代码冲突问题

① 进入代码仓库所在目录

1
cd REPOSITORY

② 合并分支改动

1
git merge origin develop --no-ff

③ 查看冲突文件

1
git status -s

④ 解决冲突,可以使用文本编辑器手动编辑,一般冲突以<<<<<<< HEAD开头,以>>>>>>> BRANCH-NAME结尾,以=======为分隔符

1
2
3
4
5
6
7
8
9
10
11
12
<<<<<<< HEAD
tag: bsp_stm32h723-st-nucleo
path: bsp/stm32/stm32h723-st-nucleo
owners: 下里巴人(hywing)<hywing.sir@qq.com>

tag: bsp_stm32g030-tiny-board
path: bsp/stm32/stm32g030-tiny-board
owners: 下里巴人(hywing)<hywing.sir@qq.com>
=======
path: bsp/stm32
owners: Liya Huang(wdfk-prog)<1425075683@qq.com>
>>>>>>> BRANCH-NAME

⑤ 编辑冲突文件,跟别人冲突的地方解决掉(去掉冲突标志开头、结尾和中间分隔符,现实中最好跟冲突方商量一下)

1
2
3
4
5
6
7
8
9
10
path: bsp/stm32
owners: Liya Huang(wdfk-prog)<1425075683@qq.com>

tag: bsp_stm32h723-st-nucleo
path: bsp/stm32/stm32h723-st-nucleo
owners: 下里巴人(hywing)<hywing.sir@qq.com>

tag: bsp_stm32g030-tiny-board
path: bsp/stm32/stm32g030-tiny-board
owners: 下里巴人(hywing)<hywing.sir@qq.com>

⑥ 重新提交代码

1
2
3
git add .
git commit -m "Resolve merge conflict"
git push maintainer

注意

有些开源仓库会有很多子仓库,第一次拉取的时候要把--recursive参数加上

1
git clone https://github.com/stephane/libmodbus.git --recursive

私有仓库的使用(在GitHub开通私有仓库访问权限认证码)

1
git clone https://私有仓库访问权限认证码@github.com/hywing/modbus-rs485.git

下载速度慢的时候可以考虑使用GitHub镜像源(bgithub.xyz)

1
git clone --depth 1 https://bgithub.xyz/MYiR-Dev/myir-imx-linux.git -b develop_6.6.36

『 下里巴人 』
海纳百川,文以载道
hywing技术自留地
总访问 113701 次 | 本页访问 326