# Git 命令

  • git clone 「address」 「name」 以指定名称克隆仓库
  • git log 打印历史commit
    • --online 单行打印commit
    • -「number」 打印的commit数量
    • --graph 以图形化的方式打印commit
  • gitk 以图形化界面展示历史commit
  • git mv 「fileName」 「fileName」 变更文件名
  • git rm 「fileName」 删除文件
  • git checkout
    • 「branch」 创建新分支
    • -b 「branch」 「origin/branch」 从某某分支中创建新分支并跳转到新分支
    • -- 清除工作区全部的变更
    • -- 「fileName」 清楚工作区指定文件变更
    • 「commit」 分离头指针状态
      • git switch -c 「branch」 切换当前更改到新分支或者回到原分支
  • git branch -D 「branch」 删除分支
  • git diff 比较工作区与暂存区的变更
    • 「--cached」 暂存区与HEAD的变更
    • 「commit」 「commit」 比较两次commit的变更
    • -- 「fileName」 比较指定文件的变更
  • git commit --amend 修改最新一次提交的message
    • :i 进行编辑
    • :wq 退出编辑
  • git remote 「name」 「file://」「url」 以指定协议设置指定地址为仓库
  • git reset
    • --hard 不将代码恢复到工作区
    • 「commit」 将分支回退到某一个commit上
    • HEAD 将暂存区的变更恢复至HEAD一致
      • -- 「fileName」 恢复指定文件的变更
  • git rebase -i 「commit」 变基,可用于合并多次提交、更改commit的message
  • git stash
    • save 「message」 暂存当前工作区的内容
    • pop stash@「number」 返回指定的暂存内容
  • git push -f origin 「commit」:「branch」让远端分支指向指定commit

# Git 知识

  • HEAD指向当前分支的最新一次提交
  • HEAD可以增加^^ ~number参数代表前几次提交
  • .git/config 中保存着当前git仓库的配置,可以进行修改。
  • ahead 「number」, behind 「number」 领先几个提交,落后几个提交
  • 不要对集成分支进行rebase操作
  • github搜索支持关键词搜索,例如in:readme,created,stars:>1000,language,filename:gitlab-ci.yml,详情可以看github help页面的资料
  • organization team
  • MIT LICENSE
  • 牛逼的团队用主干开发,大部分用特性分支开发。
  • 虽然没有squash命令但是 可以通过rebase来实现
  • issue
  • project 看板
  • setting设置相关code Review
  • github集成
  • merge处理冲突比rebase好用
  • 在线上处理冲突时,github和gitlab会将「被合入分支」合并进「要合入的分支」,然后处理冲突达到fast forwards
  • 三种合并策略。1、merge。2、squash。3、rebase。
  • releases ?
  • 为什么国内喜欢gitlab:1、提供了开源的社区版本,可以自己二次开发。2、迭代快。3、自带CI功能。(仅次于jekins)
  • gitlab CI需要gitlab.ci.yml文件配置,配置信息去官网可查。还需要Runners跑,才能用CI。相当于一个代理。
  • 有时间可以去看看gitlab EE 开源项目
  • AWS 公有云 Docker 容器
  • 持续集成需要有公有云相关配置