介绍

会不会使用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
2
git clean -df
git checkout -- . # 恢复至最后一次提交状态

分支管理

新建分支

1
2
3
4
# 从远程端分支拷贝,新建分支aaa
git checkout -b aaa origin/aaa
# 本地新建分支,基于aaa新建bbb
git checkout -b bbb aaa

删除分支

1
2
3
4
# 删除远程分支
git push origin --delete aaa
# 删除本地分支
git branch -D aaa

重命名分支

1
2
# 本地分支重命名,远程分支的重命名可以通过先新建、推送、再删掉的方式
git branch -m bbb aaa

查看所有分支

1
git branch -a

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

1
git branch -vv

账户配置

查看当前的用户名和邮箱

1
2
3
git config --list
git config --global --list # 全局用户配置:用户名、邮箱等
git config --local --list # 本地仓库的信息、远端的信息等

配置全局用户名

1
git config --global user.name hywing

配置全局邮箱

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

自动化集成

使用脚本自动化提交(这个对Github Pages非常有帮助,前提是你得配置好密钥等账号信息),利用GitHub的webhook巧妙部署web应用

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