Git的使用3 | 青训营笔记

64 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

一、Git命令

  • Git Clone/Pull/Fetch
    • Clone: 拉取完整的仓库到本地目录,可以指定分支,深度。
    • Fetch: 将远端某些分支最新代码拉取到本地,不会执行merge操作,所以当前分支历史不会有变化。会修改refs/remote内的分支信息,如果需要和本地代码合并需要手动操作。
    • Pull: 拉取远端某分支,并和本地代码进行合并。操作等同于git fetch + git merge, 也可以通过git pull-rebase完成git fetch + git rebase操作。
  • Git Push (Push是将本地代码同步至远端的方式)
    • 一般使用git push origin master命令即可完成
    • 冲突问题
      • 如果本地的commit记录和远端的commit历史不一致,则会产生冲突,比如git commit-amend or git rebase都有可能导致这个问题。
      • 如果该分支就自己一个人使用,或者团队内确认过可以修改历史则可以通过git push origin master-f 来完成强制推送,一般不推荐主干分支进行该操作,正常都应该解决冲突后再进行推送。
    • 推送规则限制
      • 可以通过保护分支,来配置一些保护规则,防止误操作,或者一些不合规的操作出现,导致代码丢失。

二、分支管理工作流

  • 不同的工作流
    • 集中式工作流(Gerrit/SVN):只依托于主干分支进行开发,不存在其他分支。合入方式为Fast-forward。
    • 分支管理工作流(Github/Gitlab): 可以定义不同特性的开发分支,上线分支,在开发分支完成开发后再通过MR/PR合入主干分支。合入方式为自定义,Fast-Forward 或 Three-Way Merge都可以。
      • Git Flow: 分支类型丰富,规范严格
      • Github Flow: 只有主干分支和开发分支,规则简单
      • Gitlab Flow: 在主干分支和开发分支之上构建环境分支,版本分支,满足不同发布 or 环境的需要

Github的工作流,只有一个主干分支,基于Pull Request往主干分支中提交代码。