Git

84 阅读4分钟

Git

分布式的项目版本管理工具

基础概念

  1. 仓库(repository)
  • 本地仓库
  • 远程仓库
  1. 暂存区(index) 提交到仓库之前的文件暂存区域

  2. 工作区(workspace) 工作的目录地址就是一个工作区

常用命令

基础命令

  1. git add {filePath} 将某文件加入暂存区 工作区 -> 暂存区

  2. git commit 暂存区 -> 本地仓库

  3. git status 查看当前工作区的状态

  4. git log 查看日志

    • git log --pretty=oneline:给个提交记录以当行显示
    • git log --all:显示所有分支
    • git log --abbrev-commit:以更加简短的方式显示 commitId
    • git log --graph:以图形的方式显示
  5. git reset --hard {commitId} 回退到指定的 commitId 提交记录的位置

  6. git reflog 查看操作记录

分支

  1. git branch 查看/创建当前所有
  • git branch 查看本地分支情况

  • git branch -a 查看所有远程分支

  • git branch {分支名} 创建一个分支

  • git branch -d {branchName} 删除分支,需要做各种检查

  • git branch -D {branchName} 强制删除分支,不做任何的检查

  • git branch -vv 查看本地分支跟远程分支的关联情况

  1. git checkout {branchName} 如果分支存在切换到分支
  • git checkout-b {branchName} 切换到某分支,如果分支名不存在则先创建分支再切换到分支
  1. git merge {branchName} 将 branchName 分支合并到当前分支上

常用分支概述

  1. master 生产分支,也称为主分支,一般是线上运行的分支

  2. dev 是从 master 上创建的分支,一般作为部门的主要开发分支,如果没有其他并行开发不同期上线的要求,都可以在此版本上进行开发,阶段开发完成之后 需要合并到 master 分支上

  3. feature/xxxx 分支 从 dev 创建的分支,一般是进行并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到 dev 分支

  4. hotfix/xxxx 分支 从 master 派生的分支,一般用于线上 bug 修复使用,修复完成之后需要合并到 master,dev,test分支

  5. 其他分支,例如 test 用来做测试,pre 分支做预上线分支等.

远程仓库和本地仓库的关联

  1. 本地生成 SSH 密钥
  • git bash 中执行:ssh-keygen -t rsa,一路回车直到结束
  • 执行 cat ~/.ssh/id_rsa.pub 查看公钥内容
  • 在 gitee.com 的设置中配置 SSH
  • 验证配置是否成功:ssh -T git@gitee.com
    • 会问你是否继续连接到 gitee.com,输入 yes
    • 如果看到 successfully,即代表连接成功
  1. 绑定远程仓库和本地仓库
  • git remote add {自命名} {远程仓库地址}: 新增一个远程仓库,一个本地仓库可以绑定多个远程仓库,所以要为每一个远程仓库起一个名字以便于区分
  • git remote add origin gitee.com/li-maobin/g… origin 的远程仓库,地址为:gitee.com/li-maobin/g…
  • git remote:查看当前本地仓库绑定的远程仓库列表
  1. 推送本地仓库的内容到远程
  • git push [-f][--set-upstream] [远端名称 [本地分支名]:[远端分支名]] 将 本地分支 推送到 origin 指定的 远程分支 上,
    • -f:该参数表示强制覆盖,一般来说禁止使用
    • --set-upstream:该参数表示推送到远端的同时并且建立和远端分支的关联关系,这样推送的时候就可以省略所有的参数,直接 git push 就行 因为已经建立了关联关系,git 知道将当前分支推送到哪个远程仓库的哪个分支上。
  • git push {远程仓库名} {本地分支}:{远程分支}:将 本地分支 推送到 origin 指定的 远程分支 上, 一般来说本地和远程的分支名一一对应, 本地的 master 应该推送到远程的 master,...所以当本地分支名称和远程分支名称一样的时候,:{远程分支} 可以省略
  • git push origin master:将本地的 master 分支推送到 origin 远程的 master 分支
  1. 从远程仓库中抓取最新的提交内容
  • git fetch [remote] [branch]: 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
  • git pull [remote] [branch]: 拉去指令就是将远端仓库中的修改都拉取到本地合并,等同于 fetch + merge
    • pull 指令会把远程的最新的提交内容拉去到本地并且合并,所以可能会产生冲突

必须遵循的几条规则

  1. 切换分支之前确保小提交工作区的所有修改,保证 git status 是干净的再切换
  2. 代码及时提交,提交过了就不会丢失
  3. 遇到任何问题都不要删除 .git 文件目录