版本控制工具git
两种方式:
可视化界面操作
命令行操作
工作原理:
版本控制的概念:操作内容可以是代码,也可以是文档;
记录它们的每次更爱提交的时间,谁提交的,提交的内容。。。
分类:git是分布式版本控制工具
svn是集中式版本控制工具。
分区: 当一个文件夹被git管理之后,当前文件夹分为三个区域。
- 工作区
版本库 :
- 暂存区,
- 历史区
推送一个项目到远程仓库
- 初始化用户名和邮箱
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱地址"
-
配置密钥对:生成公钥和私钥,用于上传代码时的安全验证
在
git bash里执行命令ssh-keygen一路回车,就可以生成密钥对,默认密钥对是存放在(/c/Users/[主机用户名]/.ssh/)。这个目录下有两个文件, .pub就是公钥,另外一个是私钥,这两个文件千万不要动!!!到线上(gitee或其他平台)打开设置->安全设置->ssh公钥,把本地的公钥文件全选复制进来,输入登录密码,就配置成功了。
-
将本地仓库和线上仓库建立关联:
git remote add origin [线上仓库的SSH地址]如果在执行这句话的时候报错:
fatal: remote origin already exists.那么就先执行
git remote rm origin再重新执行
git remote add origin [线上仓库的SSH地址] -
添加内容到暂存区
git add --all 添加所有
git add 文件名/文件夹名
-
添加暂存区到历史区
git commit -m "提示信息" -
代码推送到远程
git push origin master
版本管理
- 把已经放在暂存区的内容在拉回到工作区
# 拉回暂存区的 index.txt 文件
git reset HEAD -- index.txt
# 拉回暂存区的 ceshi 文件夹
git reset HEAD -- ceshi/
# 拉回暂存区的 所有文件
git reset HEAD -- .
注意:-- 两边都有空格,拉回所有文件的时候有个 .
- 历史版本回退
# 查看历史版本
git log
commit 8baf3f1b6fade6d0ff935207379cffdc9c05a6e8
Author: ...
Date: ...
这是一次提交测试
方法一:这里commit后面的字符串即为版本号,我们可以使用 git reset --hard 版本编号 进行历史回退
# 回退到第一次提交的版本
git reset --hard 8baf3f1b6fade6d0ff935207379cffdc9c05a6e8
# 回退到第二次提交的版本
git reset --hard fa7bc9650fcae5c07f31f834f2d840cb5d8c0dc3
方法二: git reset --hard HEAD ^ ( ^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD改成HEAD^, 以此类推。那如果要回退到前100个版本,这种方法肯定不方便,我们可以使用简便命令操作:git reset –hard HEAD~100 );
分支管理
git分支,就是我们自己把我们的整个文件夹分成一个一个独立的区域,比如我在开发 登录 功能的时候,可以放在 login 分支下进行开发;开发 列表 功能的时候,可以放在 list 分支下进行开发,大家互不干扰,每一个功能都是一个独立的功能分支,这样开发就会好很多。
git在初始化的时候,会自动生成一个分支,叫做 master,是表示主要分支的意思,我们就可以自己基于master开辟出很多独立分支
-
开辟分支
# 开辟一个 login 分支 $ git branch login -
查看分支
# 查看当前分支情况 $ git branch -
切换分支
# 切换到 login 分支 $ git checkout login -
合并分支
# 把 login 的内容合并到自己的分支 $ git merge login -
删除分支
git branch -d 分支名称来删除# 先切换到别的分支 $ git checkout master # 删除 login 分支 $ git branch -d login
GIT克隆
- git 克隆式只把远程仓库里面的内容克隆一份到本地
- 可以克隆别人的公开的仓库,也可以克隆自己的仓库
第一次克隆命令: git clone 远程仓库地址
之后只需要 git pull
误删文件复原
通过git进行代码管理的项目,如果在本地编辑的过程中误删了某些文件或者文件夹,可以通过git操作来复原。
Step 1: git status (查看删除文件)
Step 2:git reset HEAD [ 被删除的文件或文件夹 ] (版本回退)
Step 3:git checkout [ 被删除的文件或文件夹 ] (恢复文件)
冲突解决
git冲突是指在我们的上传过程中,本地的版本和远程的版本不一致导致的,这个时候只要先使用 git pull 拉取回来,让本地和远程保持一致,然后再从新上传就好了,但是 git pull 相对不安全,因为会自动和本地内容合并,我们也可以选择使用 git fetch
# 使用 fetch 获取远程最新信息并开辟一个临时分支
$ git fetch origin master:tmp
# 将当前分支和临时分支的内容进行对比
$ git diff tmp
# 再选择合并分支内容
$ git merge tmp
git常见命令
git init 初始化仓库
git config 配置用户信息
git remote add origin [线上仓库地址] 新增远程仓库的关联
git remote rm origin 删除远程仓库的关联
git add 添加到暂存区
git commit -m '[本次提交的备注信息]' 代码提交(每一次commit都会有一个新的版本号)
git push origin [分支名] 推送到远程仓库
git status 查看当前仓库的状态
git log 查看日志(每一个commit在这里都能查看到,而且commit后面的随机字符串就是版本号),按字母q 退出log
git reset --hard [要回退的版本号] 回退到之前的某一个版本
git clone [线上仓库地址] 把线上仓库代码克隆到本地
git pull origin [分支名] 在已有的仓库基础上拉取某分支最新的线上代码,拉取之后直接合并
git fetch origin [分支名] 在已有的仓库基础上拉取某分支最新的线上代码,拉取之后由用户决定是否合并
git branch 查看分支
git branch newBranch 基于当前分支创建newBranch分支
git branch -d myBranch 删除myBranch分支
git diff tmp 查看当前分支和tmp分支的区别
git merge tmp 将tmp分支合并到当前分支