git代码同步有2种方式merge、rebase。二者的具体区别,请各位百度下,这里不展开了,也不对选择哪一种进行暗示,请自己选择。
区别:

  • 前者保留了git历史,能查到pr合入过程的详细信息。git树上的时间戳按序排列。每一次提交记录保留,多了会被HW人鄙视,呵呵。
  • 后者强行理直了git树,变成线性,所有已经提交的commit都挪到身后,自己的提交放在最前面(可以通过git
    log查看),而且支持不断地rebase变基,使自己的代码始终保持在git的最前面,git树线性、简洁美观,分支操作省心,缺点是丢失了当初pr创建的历史信息,git树上commit的时间戳无序。
    一张图说明
    在这里插入图片描述

鉴于rebase这样的特点,下面就给大家介绍下。下面就以OpenHarmony的ability_form_fmk仓库为例,讲解。

 # 创建代码基准分支
git clone https://gitee.com/XXX/ability_form_fwk.git   # 个人仓库克隆到本地,默认master分支
git remote add upstream https://gitee.com/openharmony/ability_form_fwk.git # 本地代码添加上游分支upstream
git remote -v    # 查看与其它分支的关系
git pull upstream   # 同步远程上游最新代码。注意不针对本地某个分支。
git checkout -b newest upstream/master   # 切出基于上游upstream master分支的本地newest代码同步基准分支,当前分支时newest
git checkout master # 回归默认主分支
	     
 # 变基	       
git checkout newest # 每次更新代码时都基于基准分支
git pull       # 必要。同一分支可能有更新
git checkout master  # 切换到工作分支master
git rebase -i newest     # rebase代码,将远程主仓代码作为自己代码的基础。可能有代码冲突,解决其中1个后,执行git rebase --continue继续解决冲突,全部解决后继续执行会完成合并

 # 代码修改、添加到暂存区
git status
git diff
git branch -v
git add .   # 将本地所有的修改都添加到git 暂存区
 # 提交
git commit --signoff # 首次
git commit --amend # 第二次以后。该指令非常重要,它可以使你的PR永远只有1个commit
git push -u origin HEAD:master # 首次push。指令可以简化为git push,  默认提交到origin master分支,其它分支将master替换为指定分支名称
git push -f origin HEAD:master # 第二次push。指令可以简化为git push -f, 第一次push时需要使用-u参数
	      
       

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐