Git
分布式的项目版本管理工具
基础概念
- 仓库(repository)
- 本地仓库
- 远程仓库
-
暂存区(index) 提交到仓库之前的文件暂存区域
-
工作区(workspace) 工作的目录地址就是一个工作区
常用命令
基础命令
-
git add {filePath} 将某文件加入暂存区 工作区 -> 暂存区
-
git commit 暂存区 -> 本地仓库
-
git status 查看当前工作区的状态
-
git log 查看日志
- git log --pretty=oneline:给个提交记录以当行显示
- git log --all:显示所有分支
- git log --abbrev-commit:以更加简短的方式显示 commitId
- git log --graph:以图形的方式显示
-
git reset --hard {commitId} 回退到指定的 commitId 提交记录的位置
-
git reflog 查看操作记录
分支
- git branch 查看/创建当前所有
-
git branch 查看本地分支情况
-
git branch -a 查看所有远程分支
-
git branch {分支名} 创建一个分支
-
git branch -d {branchName} 删除分支,需要做各种检查
-
git branch -D {branchName} 强制删除分支,不做任何的检查
-
git branch -vv 查看本地分支跟远程分支的关联情况
- git checkout {branchName} 如果分支存在切换到分支
- git checkout-b {branchName} 切换到某分支,如果分支名不存在则先创建分支再切换到分支
- git merge {branchName} 将 branchName 分支合并到当前分支上
常用分支概述
-
master 生产分支,也称为主分支,一般是线上运行的分支
-
dev 是从 master 上创建的分支,一般作为部门的主要开发分支,如果没有其他并行开发不同期上线的要求,都可以在此版本上进行开发,阶段开发完成之后 需要合并到 master 分支上
-
feature/xxxx 分支 从 dev 创建的分支,一般是进行并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到 dev 分支
-
hotfix/xxxx 分支 从 master 派生的分支,一般用于线上 bug 修复使用,修复完成之后需要合并到 master,dev,test分支
-
其他分支,例如 test 用来做测试,pre 分支做预上线分支等.
远程仓库和本地仓库的关联
- 本地生成 SSH 密钥
- git bash 中执行:ssh-keygen -t rsa,一路回车直到结束
- 执行 cat ~/.ssh/id_rsa.pub 查看公钥内容
- 在 gitee.com 的设置中配置 SSH
- 验证配置是否成功:ssh -T git@gitee.com
- 会问你是否继续连接到 gitee.com,输入 yes
- 如果看到 successfully,即代表连接成功
- 绑定远程仓库和本地仓库
- git remote add {自命名} {远程仓库地址}: 新增一个远程仓库,一个本地仓库可以绑定多个远程仓库,所以要为每一个远程仓库起一个名字以便于区分
- git remote add origin gitee.com/li-maobin/g… origin 的远程仓库,地址为:gitee.com/li-maobin/g…
- git remote:查看当前本地仓库绑定的远程仓库列表
- 推送本地仓库的内容到远程
- git push [-f][--set-upstream] [远端名称 [本地分支名]:[远端分支名]] 将 本地分支 推送到 origin 指定的 远程分支 上,
- -f:该参数表示强制覆盖,一般来说禁止使用
- --set-upstream:该参数表示推送到远端的同时并且建立和远端分支的关联关系,这样推送的时候就可以省略所有的参数,直接 git push 就行 因为已经建立了关联关系,git 知道将当前分支推送到哪个远程仓库的哪个分支上。
- git push {远程仓库名} {本地分支}:{远程分支}:将 本地分支 推送到 origin 指定的 远程分支 上, 一般来说本地和远程的分支名一一对应, 本地的 master 应该推送到远程的 master,...所以当本地分支名称和远程分支名称一样的时候,:{远程分支} 可以省略
- git push origin master:将本地的 master 分支推送到 origin 远程的 master 分支
- 从远程仓库中抓取最新的提交内容
- git fetch [remote] [branch]: 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
- git pull [remote] [branch]: 拉去指令就是将远端仓库中的修改都拉取到本地合并,等同于 fetch + merge
- pull 指令会把远程的最新的提交内容拉去到本地并且合并,所以可能会产生冲突
必须遵循的几条规则
- 切换分支之前确保小提交工作区的所有修改,保证 git status 是干净的再切换
- 代码及时提交,提交过了就不会丢失
- 遇到任何问题都不要删除 .git 文件目录