Git 是什么 ?
官网描述:
Git 是一个免费和开源 的分布式版本控制系统,旨在以速度和效率处理从小型到大型项目的所有内容.
为什么要使用 Git ?
- 免费和开源:意味着我们不需要为使用 Git 支付任何的费用,也不需要为 Git 会出现意想不到的问题而进行担忧!
- 分布式:和集中式不同,Git 的存储位置是分发在不同的空间里面的。
- 版本控制:每一次提交的 Git 记录都是一个版本,在 Git 托管的项目中,您可以自行切换到任何一个不同的版本(时光机)
- 分支廉价:不需要为每一个分支的成本问题进行担心,分支
checkout出来即可 - 易于学习,占用空间更小,速度更快
Git 的安装:
从零安装
- git 的安装官网地址:git-scm.com/downloads。选择对应操作系统的包进行安装,然后一路 next 即可。
- 如果您使用的是 MAC 电脑,推荐使用
homebrew(brew.sh/) 进行安装:
$ brew install git
更新版本:
如果您的电脑已经安装了 git,你可以直接从 Github 拉取最新的版本
$ git clone https://github.com/git/git
Git 的配置:
在安装完成 git 了之后通常是不能直接协作使用的。通常情况下,您需要向 git 站点(github、gitee)上传对应的公钥
- 配置自己的用户名和邮箱到本地
$ git config --global user.name "Mr.Zheng"
$ git config --global user.email "XXX@qq.com"
- 生成 SSH 密钥
$ ssh-keygen -t rsa -C "XXX@qq.com"
- 把公钥 id_rsa.pub 上传到 git 站点中(不是密钥!不是密钥!不是密钥!)
- 创建 git 项目
常用的 Git 命令:
基础操作:
| git 命令 | 说明 |
|---|---|
| git add 文件名 | 把工作区中的文件添加到 git 的暂存区 |
| git add . | 把工作区中的所有文件添加到 git 的暂存区 |
| git commit | 将暂存区中的代码提交到 git 的版本区中 (不推荐 ❌) |
| git commit -m 'commit message' | 将暂存区中的代码提交到 git 的版本区中,并且携带 commit message (推荐 👌) |
| git push | 将版本区的代码同步到远程的 git 仓库中 |
| git br -a | 查看本地和远程所有分支 |
| git branch | 查看本地所有分支 |
| git checkout *** | 切换本地指定分支 & 删除对某一个文件的更改 |
| git push origin 本地分支:远程分支 | 提交本地分支到远程 |
| git push origin 远程分支 | 提交本地到远程分支 |
| git branch -d 本地分支 | 删除本地分支 |
| git branch -D 本地分支 | 强制删除本地分支 |
| git push origin :远程分支git push origin --delete 远程分支 | 删除远程对应的分支 |
| git reflog master | 查看本地提交log |
| git reset --hard master@{gitCommitId} | 本地回退到指定版本 (❌ 危险操作 ❌) |
| git checkout -b 本地分支名 | 根据当前的分支创建并切换到一个新的分支 |
| git checkout -b 本地分支名b 被切换出来的分支a | 基于 a 分支创建 b 分支,并切换到 b 分支 |
| git cherry-pick {gitCommitId} | 将某一个 gitCommitId 提交并合并到对应的分支 |
| git revert {commitId} | 创建一个与 commitId 相反的 commit 移除掉对应 commitId 的提交 |
| git remote -v | 查看当前 git 仓库对应的远程仓库的地址 |
| git remote set-url origin | 给当前的 git 仓库设置远程仓库 |
变基操作:
在多人协作开发的情况下,通常会出现 master 版本过旧的问题。这时,我们就需要把之前基于的 master 分支更换成最新的 master 分支,像这样的行为我们通常称之为:改变基础分支(简称:变基)
| git 命令 | 说明 |
|---|---|
| git checkout mastergit pullgit checkout feat/my-devgit rebase master | 在当前开发的分支下面操作,让当前开发的分支基于远程最新的 master 分支来进行开发 |
| git rebase origin/master | 在当前开发的分支下面操作,让当前开发的分支基于远程最新的 master 分支来进行开发 |
补充:
如果分支变基了之后无法提交,需要使用 -f 提交代码
解决冲突:
概述:
在多人协作开发的情况下,有可能会多人同时修改了一个文件。这时,我们就需要找到对应的开发人员一起将冲突手动解除。
解决方式(视具体情况而定):
解决过程:
- 保留两者
- 保留自己更改的
- 保留别人更改的
最后,不要忘了重新重新提交。