Git小结| 青训营笔记

120 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

一、版本控制系统

  • 对比
类型代表工具优点缺点
本地版本控制RCS-只能本地使用,无法进行团队协作
集中式版本控制SVN学习简单,容易操作;支持二进制文件,对大文件支持友好不存在存储版本管理的概念,提交需连上服务器;本地不保存所有版本代码,如遇故障容易导致历史版本丢失
分布式版本控制Git分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体:分支管理功能强大,方便团队合作;校验和机制保证完整性,不容易导致代码丢失相对SVN更复杂,学习成本高

二、命令整理

1、本地

  • 创建新的仓库
    git init 
    
  • 配置
    • 用户名配置
      git config --global user.name "username"
      git config --global user.email "emailname@mail"
      
    • Instead of 配置
      git config --global url.git@github.com:.insteadOf https://github.com/
      
    • Git命令别名配置
      git config --global alias.cin "commit --amend --no-edit"
      
  • Git Remote
    • 查看Remote
      git remote -v
      
    • 添加Remote
      git remote add origin_ssh git@github.com:git/git.git
      git remote add origin_http https://github.com:git/git.git
      
  • 显示需提交的文件
git status
  • 添加文件至暂存区
git add .
  • 在版本历史记录中记录文件
git commit -m "message"
  • 查看文件信息
git cat-file -p [TreeID/BlobID/CommitID]
  • 创建新分支 ---开发阶段
git checkout -b name
  • 生成标签
git tag versionname
  • 修改历史版本
    • 修改最近一次,修改后CommitID会改变
      git commit --amend -m "message"
      
    • 实现对最近三个commit的修改
      git rebase -i HEAD~3
      
    • 重写分支
       git filter-branch 
      
  • Git GC
git reflog eapire --expire=now --all

git gc --prune=now

2、远端和团队协作

  • 拉取完整的仓库到本地
git clone
  • 远端某些分支最新代码拉取到本地,不执行merge操作
git fetch
  • 拉取远端某分支并与本地合并
    • git pull相当于进行了git fetch和git merge操作
      git pull 
      
    • git pull --rebase相当于进行了git fetch和git rebase操作
      git pull --rebase 
      
  • 将本地代码同步到远端
git push origin master

三、git研发流程

  • 工作流 | 类型 | 代表平台 |特点|合入方式| | --- | --- | - |-| | 集中式工作流 | Gerrit/SVN | 只依托与主干分支进行开发,不存在其他分支|Fast-forward| | 分支管理工作流 | Github/Gitlab |可以定义不同的分支,上线分支,分支开发完成后通过MR/PR合入主干分支|自定义(Fast-Forward/Three-Way Merge)|

  • Fast-Forward -> 合并后保持线性历史,不会产生merge节点

  • Three-Way Merge -> 会产生merge节点

资料

Git 的正确使用姿势与最佳实践