hunting/doc/git_guide.md
2024-05-25 14:47:51 +08:00

6.2 KiB
Raw Blame History

1. git使用手册

1.1. 概述

git是分布式版本控制系统在多人开发中git可以很好的管理代码的版本。

1.2. 源码托管服务器

github和gitlab还有gitee国产都是开源的代码托管服务器可以用来管理源码。

1.3. git安装

1.4. git分支管理

1.4.1. git创建本地分支

  • 基于远端分支创建一个本地分支,同时新建一个对应的远端分支:

当主干发生较大变化例如原厂更新sdk时需要新建分支划分界限。

$ git branch -a
----------------
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/app_test
  remotes/origin/master
$ git checkout -b master-sdk-202405 origin/master
-------------------------------------------------
M       ipc-sdk
Branch 'master-sdk-202405' set up to track remote branch 'master' from 'origin'.
Switched to a new branch 'master-sdk-202405'
$ git branch -a
----------------
  master
* master-sdk-202405
  remotes/origin/HEAD -> origin/master
  remotes/origin/app_test
  remotes/origin/master
$ git push origin master-sdk-202405:sdk-202405
----------------------------------------------
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 250 bytes | 250.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'sdk-202405' on Gitee by visiting:
remote:     https://gitee.com/shenzhen-jiuyilian/ipc-rk1106/pull/new/shenzhen-jiuyilian:sdk-202405...shenzhen-jiuyilian:master
To gitee.com:shenzhen-jiuyilian/ipc-rk1106.git
 * [new branch]      master-sdk-202405 -> sdk-202405
$ git branch -a
---------------
  master
* master-sdk-202405
  remotes/origin/HEAD -> origin/master
  remotes/origin/app_test
  remotes/origin/master
  remotes/origin/sdk-202405

1.4.2. git获取远端分支

当想知道远端是否新建了分支可使用git fetch命令获取远端分支。

git fetch示例

$ git fetch
------------
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 14 (delta 8), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (14/14), 2.14 KiB | 156.00 KiB/s, done.
From gitee.com:shenzhen-jiuyilian/ipc-rk1106
   bf71a01..2b9b803  master     -> origin/master
 * [new branch]      sdk-202402 -> origin/sdk-202402  // 此处发现远端新建了分支
Fetching submodule ipc-sdk
From gitee.com:shenzhen-jiuyilian/ipc
   7c261bd..eec9fb4  master-develop -> origin/master-develop

多个远端仓库git fetch示例

$ git remote -v
----------------
dgiot   git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (fetch)
dgiot   git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (push)
rk      https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (fetch)
rk      https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (push)
$ git fetch dgiot  // git fetch + 远端仓库名称
---------------------------------------------
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 3), reused 5 (delta 2), pack-reused 0
Unpacking objects: 100% (9/9), 8.74 KiB | 746.00 KiB/s, done.
From gitee.com:shenzhen-jiuyilian/fastbootserver
 * [new branch]      sdk-202405 -> dgiot/sdk-202405

1.4.3. git新增远端地址

在一个git仓库中可以同时管理多个远端地址例如在原厂的git仓库中可以在仓库添加一个私人的git仓库这样后续把修改提交到自己的仓库进行代码管理。

git remote add示例

命令格式:

git remote add <remote-name> <remote-url>

示例:

$ git remote add dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git
---------------------------------------------------------------------------
$ git remote -v
----------------
dgiot   git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (fetch)
dgiot   git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (push)
rk      https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (fetch)
rk      https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (push)
$ git fetch dgiot
------------------
remote: Enumerating objects: 107, done.
remote: Counting objects: 100% (104/104), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 99 (delta 47), reused 89 (delta 42), pack-reused 0
Unpacking objects: 100% (99/99), 29.55 KiB | 315.00 KiB/s, done.
From gitee.com:shenzhen-jiuyilian/fastbootserver
 * [new branch]      master     -> dgiot/master
 * [new branch]      sdk-202405 -> dgiot/sdk-202405
$ git branch -a
----------------
* (HEAD detached at bf91101)
  remotes/dgiot/master
  remotes/dgiot/sdk-202405
  remotes/m/master
  remotes/rk/master
$ git checkout -b sdk-202405  m/master
--------------------------------------
Switched to a new branch 'sdk-202405'
$ git branch -a
----------------
* sdk-202405
  remotes/dgiot/master
  remotes/dgiot/sdk-202405
  remotes/m/master
  remotes/rk/master
$ git pull dgiot sdk-202405
---------------------------
From gitee.com:shenzhen-jiuyilian/fastbootserver
 * branch            sdk-202405 -> FETCH_HEAD
Updating bf91101..dc76264
Fast-forward
 .clang-format  | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 .gitmodules    |   3 +++
 README.md      |  30 ++++++++++++++++++++++++++++++
 rv1106_ipc_sdk |   1 +
 4 files changed, 170 insertions(+)
 create mode 100644 .clang-format
 create mode 100644 .gitmodules
 create mode 100755 README.md
 create mode 160000 rv1106_ipc_sdk
$ git submodule update --init
-----------------------------
Submodule 'rv1106_ipc_sdk' (git@gitee.com:shenzhen-jiuyilian/ipc-rk1106.git) registered for path 'rv1106_ipc_sdk'
Cloning into '/home/xiaojiazhu/project/rkipc/ipc_20240517/project/app/component/fastboot_server/rv1106_ipc_sdk'...
Submodule path 'rv1106_ipc_sdk': checked out 'ff8da760b201d365300aed78190de8564f0d2171'

1.5. 存疑

  • 不同的分支之间如何同步某个文件?