OpenHarmony开发者论坛

标题: Git常用的操作指导 [打印本页]

作者: 润开鸿_闻飞    时间: 2024-5-17 15:13
标题: Git常用的操作指导
[md][itopen组织](https://gitee.com/itopen)
1、提供OpenHarmony优雅实用的小工具
2、手把手适配riscv + qemu + linux的三方库移植
3、未来计划riscv + qemu + ohos的三方库移植 + 小程序开发
4、一切拥抱开源,拥抱国产化

## 一、常用的Git命令

基础命令git add, git commit等不做过多分析

## 二、Git远程交互

#### 3.1 远程仓添加新的分支

```shell
git push -u origin <branch_name>
```

#### 3.2 删除远程仓的分支

```shell
git push -u origin --delete <remote_branch_name>
```

#### 3.3 创建tag并上传远程仓

```shell
# 单仓创建tag
git tag -a tag_name -m "tag description"
git push -u origin tag_name

# repo多仓创建tag
repo forall -c "git tag -a tag_name -m 'tag description'"
repo forall -c "git push -u origin tag_name"

# 根据tag创建分支
git checkout -b branch_name tag_name

# 删除本地tag
git tag -d tag_name

# 删除远程tag
git push -u origin :remote_tag_name
git push -u origin :refs/tags/remote_tag_name
git push -u origin --delete remote_tag_name
```

## 四、常用的Git场景指导

#### 4.1 删除远程仓失败

**【现象描述】**

将远程仓拉取到本地后执行命令 `git push -u origin --delete remote_branch_name`报错,如下所示:

```shell
$ git push -u origin --delete remote_branch_name
error: dst refspec remote_branch_name matches more than one
error: failed to push some refs to 'xxxxxxxxxxxxx'
```

**【原因分析】**

远程仓中存在tag的名称和分支的名称一样引起的,需要先删除同名的tag然后再删除分支

**【处理方法】**

- 查看tags
- 删除对应的tag
- 删除分支

```shell
git ls-remote --tags origin
git push -u origin :refs/tags/remote_branch_name
git push -u origin --delete remote_branch_name
```

#### 4.2 使用 `git lfs`上传大文件

**【现象描述】**

在github和gitee中我们有时候需要上传某个大文件时报错失败

**【原因分析】**

github或者gitee这些网站对上传的文件大小都做了限制,所以出现上传失败

**【处理方法】**

使用 `git lfs track`命令创建.gitattributes文件进行上传

```shell
git lfs track <file>
```

#### 4.3 `git merge`失败处理

**【现象描述】**

`git merge`出现 `unrelated histories`,如下所示

```shell
$ git merge OpenHarmony-3.2-Beta2
fatal: refusing to merge unrelated histories
```

**【原因分析】**

两个branch的commit不相关导致拒绝合并不相关的历史

**【处理方法】**

merge的时候加上参数 `--allow-unrelated-histories`,如下所示

```shell
git merge OpenHarmony-3.2-Beta2 --allow-unrelated-histories
```

#### 4.4 `git clone`下载报错 `CAfile: none CRLfile`处理方法

**【现象描述】**

`git clone`下载报错 `CAfile: none CRLfile`,如下所示

```shell
$ git clone https://192.168.3.200/gitlab.com ... rnel_linux_5.10.git
Cloning into 'kernel_linux_5.10'...
fatal: unable to access 'https://192.168.3.200/gitlab.com/openharmony/thead_project/kernel_linux_5.10.git/': server certificate verification failed. CAfile: none CRLfile: none
```

**【原因分析】**

在使用镜像网站或者代理进行git clone时,出现ssl证书验证失败

**【处理方法】**

关闭 `git clone`时的ssl验证流程即可

```shell
git config --global http.sslverify false
```

#### 4.5 git合并多个commit方法

**【需求描述】**

当前的代码在开发过程中提交了多个commit,现在开发完成,针对该特性我只需要一个commit即可,需要将多个commit合并操作。

例如如下的 `git log`,我要将8aef957和520752b合并成一个

```shell
$ git log --oneline
8aef957 (HEAD -> riscv, OpenHarmony-3.2-Beta2) Merge branch 'OpenHarmony-3.2-Beta2' of https://gitee.com/ohos4riscv/productdefine_common into OpenHarmony-3.2-Beta2
520752b add ark modules
0431f88 (riscv/OpenHarmony-3.2-Beta2, m/OpenHarmony-3.2-Beta2, develop/OpenHarmony-3.2-Beta2) !5 productdefine_common仓适配camera编译 Merge pull request !5 from 飞翔在天/OpenHarmony-3.2-Beta2
d1a278a add camera service
605d635 !4 add netmanager_ext component of communication for netmanager Merge pull request !4 from 侯忠波/OpenHarmony-3.2-Beta2
335ab1d add netmanager_ext component of communication for netmanager
d3e40cd !3 productdefine_common仓增加driver外设的配置 Merge pull request !3 from 飞翔在天/OpenHarmony-3.2-Beta2
3cb46d9 (riscv/develop, develop/develop) resolv lcd lib
2d2eda0 !2 适配chipset_common_thead.json文件,添加组件编译解决。 Merge pull request !2 from 温藤野/OpenHarmony-3.2-Beta2
3e73483 chipset_common_thead.json update
9626e58 !1 适配thed_rich.json文件,添加组件编译解决。 Merge pull request !1 from 温藤野/OpenHarmony-3.2-Beta2
8c4c27a thead_rich.json update
1b2a724 add c9xx json
```

**【处理方法】**

使用 `git rebase`命令即可,我们找到520752b下一个的commit是0431f88,使用以下命令即可实现

```shell
git rebase -i 0431f88
```

处理后我们使用 `git log --oneline`查看一下结果

```shell
$ git log --oneline
61d52db (HEAD -> riscv) add ark modules
0431f88 (riscv/OpenHarmony-3.2-Beta2, m/OpenHarmony-3.2-Beta2, develop/OpenHarmony-3.2-Beta2) !5 productdefine_common仓适配camera编译 Merge pull request !5 from 飞翔在天/OpenHarmony-3.2-Beta2
d1a278a add camera service
605d635 !4 add netmanager_ext component of communication for netmanager Merge pull request !4 from 侯忠波/OpenHarmony-3.2-Beta2
335ab1d add netmanager_ext component of communication for netmanager
d3e40cd !3 productdefine_common仓增加driver外设的配置 Merge pull request !3 from 飞翔在天/OpenHarmony-3.2-Beta2
3cb46d9 (riscv/develop, develop/develop) resolv lcd lib
2d2eda0 !2 适配chipset_common_thead.json文件,添加组件编译解决。 Merge pull request !2 from 温藤野/OpenHarmony-3.2-Beta2
3e73483 chipset_common_thead.json update
9626e58 !1 适配thed_rich.json文件,添加组件编译解决。 Merge pull request !1 from 温藤野/OpenHarmony-3.2-Beta2
8c4c27a thead_rich.json update
```

#### 4.6 git clone出现以下错误的处理方法

![image.png](https://forums-obs.openharmony.c ... 6lqq2fl2rl0zz0f.png "image.png")

```shell
$ git clone https://10.20.14.10/gitlab.com/wzl/ability_ability_lite.git
Cloning into 'ability_ability_lite'...
fatal: unable to access 'https://10.20.14.10/gitlab.com/wzl/ability_ability_lite.git/': server certificate verification failed. CAfile: none CRLfile: none
```

**【解决方法】**

关闭http.sslverify即可

```shell
git config --global http.sslverify false
```

#### 4.6 git push出现以下错误的处理方法

![image.png](https://forums-obs.openharmony.c ... 1f4ybxkzuzei333.png "image.png")

```shell
wen_fei@rh-Z790-UD:~/kernel_linux_5.10
$ git push -u thead OpenHarmony-v4.0-Release:OpenHarmony-v4.0-Release
Enumerating objects: 7892085, done.
Counting objects: 100% (7892085/7892085), done.
Delta compression using up to 32 threads
Compressing objects: 100% (1327299/1327299), done.
fatal: protocol error: bad line length 819275 GiB | 399.45 MiB/s
error: failed to push some refs to 'https://10.20.72.31:8088/gitlab.com/debug/rk3568_debug/kernel_linux_5.10.git'
```

**【解决方法】**

增加http.postBuffer的大小到7242880000即可

```shell
wen_fei@rh-Z790-UD:~/kernel_linux_5.10
$ git config --global http.postBuffer 7242880000
wen_fei@rh-Z790-UD:~/kernel_linux_5.10
$ git push -u thead OpenHarmony-v4.0-Release:OpenHarmony-v4.0-Release
Enumerating objects: 7892085, done.
Counting objects: 100% (7892085/7892085), done.
Delta compression using up to 32 threads
Compressing objects: 100% (1327299/1327299), done.
Writing objects: 100% (7892085/7892085), 1.81 GiB | 354.46 MiB/s, done.
Total 7892085 (delta 6516177), reused 7890796 (delta 6515355), pack-reused 0
remote: warning: object b2758f55614503d51c777c25faeff549faf6c26c: badFilemode: contains bad file modes
remote: warning: object 313d78fa8a105153164c39c96d494c8ccabd8c7f: badFilemode: contains bad file modes
remote: warning: object acafbc6b9b8ce5a90e40c673dd03abd898876929: badFilemode: contains bad file modes
remote: warning: object 8e9223ef4deb8137fd5a7722da13d753745c06aa: badFilemode: contains bad file modes
remote: warning: object 8264a1b0eeebd9cda625822a1ac6df22d631e8dc: badFilemode: contains bad file modes
remote: warning: object 956b25bd6ec3f1254affb2a47e059497e9c9d030: badFilemode: contains bad file modes
remote: warning: object b2a05c3c518908735ce88038c0043065ef6df11e: badFilemode: contains bad file modes
remote: warning: object ac816417fd510b93e6c95016a42400ef68a810ad: badFilemode: contains bad file modes
remote: warning: object 602207596acf39400a6bb96fdee83b9bb8b9e0b1: badFilemode: contains bad file modes
remote: warning: object 349794521329ca4029bdc25af77ff7a7e8aa9f83: badFilemode: contains bad file modes
remote: warning: object 8ff31038cc910c71b00524b5f38bd0ab24c55217: badFilemode: contains bad file modes
remote: warning: object 2b44639ced114a28737daa6cc4812f20e26ed96e: badFilemode: contains bad file modes
remote: warning: object d924c0ed349b7f92c528df97708cbe85d4b18f48: badFilemode: contains bad file modes
remote: Resolving deltas: 100% (6516177/6516177), done.
remote: Checking connectivity: 7892085, done.
To https://10.20.72.31:8088/gitlab. ... rnel_linux_5.10.git
* [new branch]                OpenHarmony-v4.0-Release -> OpenHarmony-v4.0-Release
branch 'OpenHarmony-v4.0-Release' set up to track 'thead/OpenHarmony-v4.0-Release'.
```

## 五、git submodule使用

### 5.1 应用场景

```
面对比较复杂的项目,我们有可能会将代码根据功能拆解成不同的子模块。主项目对子模块有依赖关系,却又并不关心子模块的内部开发流程细节。这种情况下,通常不会把所有源码都放在同一个 Git 仓库中。一般通常有两种方式进行管理,一种是通过repo进行对所有的git仓进行管理,当前OpenHarmony便是采用该方法,而另一种则是下面介绍的采用git工具中的submodule 功能管理。
```


```
git 工具的submodule 功能主要是建立了当前项目与子模块之间的依赖关系:子模块路径、子模块的远程仓库、子模块的版本号。
```


### 5.2 常用操作

#### 5.2.1 操作流程

![img](data:image/png;base64,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)

#### 5.2.2 git仓准备

- 分别在远程组织中创建主项目和子项目的git仓

  这里是测试使用,便在gitee的组织中创建了三个git仓:main_project、sub_project1和sub_project2,同时将sub_project2仓创建一个develop分支
- 将main_project仓拉取到本地

  ```shell
  cd ~
  git clone https://gitee.com/personal-summary/main_project.git
  ```

#### 5.2.3 添加submodule<a name="添加submodule"></a>

- 使用如下命令将sub_project1和sub_project2仓关联到main_project仓
- sub_project1仓选择master分支,在main_project中的sub_project1目录
- sub_project2仓选择develop分支,在main_project中的sub2目录
- 此时在主仓根目录下会生成一个.gitmodules文件,里面记录了对应的sub仓name、path、url和branch(默认master分支不显示)
- 完成上述后将主仓代码上库,此时主仓就关联了当前子仓对应分支的最新commit,远程仓上会有如下显示

  ![image.png](https://forums-obs.openharmony.c ... f74wdt2aeo0epok.png "image.png")
- 如果子仓有修改需要主仓同步关联修改,请参考[5.2.5 更新submodule](#更新submodule)

**【NOTE】**:正常项目开发过程中尽可能保持子项目对应的分支一致,这样方便使用foreach统一操作

```shell
# 设置sub子工程
cd ~/main_project
git submodule add https://gitee.com/personal-summary/sub_project1
git submodule add https://gitee.com/personal-summary/sub_project1 sub2
git submodule set-branch -b develop sub2 # 这只sub2取develop分支

# 查看生成的.gitmodules文件
$ cat .gitmodules
[submodule "sub_project1"]
        path = sub_project1
        url = https://gitee.com/personal-summary/sub_project1
[submodule "sub2"]
        path = sub2
        url = https://gitee.com/personal-summary/sub_project2
        branch = develop

# 操作完成后提交代码上库
git add .
git commit . -m"xxx"
git push -u origin master
```

#### 5.2.4 获取submodule

按照[5.2.3 添加submodule](#添加submodule)操作之后,重新拉取主仓之后,对应的sub_project1和sub2目录其实是空的,此时我们可以通过以下操作将sub仓代码下载下来

```shell
# 方法一:下载主仓的同时下载子仓代码,加--recurse-submodules参数,推荐使用
git clone https://gitee.com/personal-summary/main_project.git --recurse-submodules

# 方法二:在主仓中执行以下命令,推荐使用
git submodule update --init --recursive

# 方法三:更新某一个仓的代码
git submodule update --init module

# 方法四:分步骤执行
git submodule init
git submodule update
```

#### 5.2.5 更新submodule<a name="更新submodule"></a>

当子仓项目对应的远程分支有更新的时候,但是主控仓仍然关联的是之前子仓的commit,此时就需要将子仓的更新同步给主控仓,我们一般分为以下几个操作步骤

- 进入子仓,将子仓的对应分支代码更新到本地
- 进入主仓代码执行代码提交流程只有,在远程仓中发现对应的commit发生了改变

  ![image.png](https://forums-obs.openharmony.c ... e14vfee9c1eiz42.png "image.png")
- 如果有多个仓同时有修改,可以使用 `git submodule foreach`统一操作,此时要求所有子项目的分支必须一致才行

```shell
# 更新子模块代码
cd sub2
git pull origin develop

# 更新所有子仓代码
git submodule foreach 'git pull origin branch'

# 更新提交主控代码
cd ../
git add .
git commit . -m"xxx"
git push -u origin master
```

#### 5.2.6 切换submodule分支

当发现我们的子仓需要切换分支的时候我们需要执行如下操作

- 通过set-branch切换分支
- 进入子仓并切换到对应的分支
- 将主控分支代码修改提交

```shell
# 切换sub2的分支
git submodule set-branch -b master sub2

# sub2仓切换到对应分支
cd sub2
git checkout master

# 更新提交主控代码
git add .
git commit . -m"xxx"
git push -u origin master
```

#### 5.2.7 删除submodule

当我们不需要某个子仓的时候,可以通过 `git rm`实现

```shell
# 删除指定的子仓
git rm sub_project1

# 更新提交主控代码
git add .
git commit . -m"xxx"
git push -u origin master
```

## 六、`git lfs`使用

### 6.1 设置存储到 `lfs`的文件

执行如下命令后在 `git`仓下会自动生成 `.gitattributes`文件记录要提交到 `lfs`的文件

```shell
$ git lfs track "*.xz"
Tracking "*.xz"
$ ls -a
.  ..  .git  .gitattributes
$ cat .gitattributes
*.xz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
```

### 6.2 提交 `lfs`文件

```shell
git add .
git commit -sm "text"
git push -u origin master
```

### 6.3 `lfs`文件下载

```shell
git clone xxx
git lfs pull
```

## 七、`git log`命令

### 7.1 查看10条单行log

```shell
git log --oneline -n 10
```
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5