git是什么?
Git 是一个开源的,目前世界上最先进的分布式版本控制系统
SVN与Git的最主要的区别?
- SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
- Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
git工作流程
- 主要分为:Remote(远程仓)->Repository(版本仓,本地仓库)-> Index(临时区) ->Workspce(自己工作区)
先从自己clone项目下来开始说整个工作流程分为(workspace->Index->Repository->Remote)
- Workspace:就是平时进行开发改动的地方,是当前看到最新的内容,在开发的过程也就是对工作区的操作
- Index:当执行 git add 的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 Git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add 先提交到暂存区。
- Repository:位于自己的电脑上,通过 git commit 提交暂存区的内容,会进入本地仓库。
- Remote:用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 git push 命令同步代码到远程仓库。
配置Git、初始化仓库
1. 配置Git 账户信息
git config --global user.name 'rosebay'
git config --global user.email 'userEmail'
2. 创建一个新目录(版本库)并初始化
mkdir demo
cd demo
git init
clone 远程仓库
git clone 代码仓库地址
创建分支
1. 查看仓库的状态
git status
2. 创建dev分支并选择此分支
git chechout -b dev
新建文件、提交、回滚、日志查看
0. 在demo文件夹dev分支上创建`readme.md`文件
1.查看仓库状态 :此时应有提示有文件需要被加入到文件缓存区
git status
2.把有改动的文件加入到文件缓存区
git add readme.md
3.查看仓库状态:此时应有提示有文件需要commit
git status
4. 把文件缓存区的文件加入到版本库中(即把改动点更新到对应分支)
git commit -m '新增 readme.md 文件'
5.对文件修改并重复上面的操作 因为进行了commmit 提交了文件修改,当前空文件的分支被激活
git branch
git status
git add readme.md
git commit -m 'readme,md被修改了'
git status
- 代码回滚:如果上步commit 时失误的操作,想回到上次commit 的状态可以使用文件回滚操作
git reset --hard HEAD~1
- 代码回滚后,如果文件缓存区的修改需要移除
git checkout readme.md
git status
- 当一次性修改多个文件时,可以通过以下命令批量操作
git add .
git checkou .
- 在提交了若干提交和更新后,可以使用gitlog 命令查看操作历史
git log
- git reflog 可以查看所有分支的所有操作记录
git reflog
- 在webstorm 中查看git log
File->git->show History ->log
本地git仓库关联远程仓库
```
1.本地仓库与远程仓库关联
git remote add origin '远程仓库的地址'
2. 拉取远程分支代码
git pull orign dev
3. 修改代码并更新到本地
git add.
git commit -m '修改代码描述'
4. 上传本地代码到远程分支
git push orign dev
5. 此后可以直接使用git pull 、git push 操作远程分支代码
git pull
6.改动代码
git add.
git commit -m '改动点描述'
git push
7.push本地代码到远程master分支时需要权限
8. 关联远程
```
远程仓中有部分代码,不允许直接把本地的代码覆盖上去时
```
1. 更新所有远程分支到本地
git fetch
2.更新内容与本地合并
git merge
3.merge 报错 :fatal refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
4.再次合并
git merge
5. merge 报错 Please , commit your cahnges before you merge
git add .
git commit -m '提交信息'
git merge
6. 拉取远程分支代码
此时本地与远程分支代码相同不会报错
git pull
7. git push orgin '远程分支名称'
```
解决代码冲突
```
1.clone 远程分支代码到本地另一个目录
git clone '分支git地址'
2.修改readme.md 文件内容,并push 到远程分支
git status
git add .
git commit -m '代码内容修改描述'
git push
3.找到最开始的该工程文件夹,修改和第2步中文本的同一行内容
git status
git add .
git commit -m '代码内容修改描述'
4.拉取远程分支代码
git pull
5.冲突报错 ,解决冲突 根据冲突提示内容,手动修改代码
git add .
git commit -m '修改代码描述'
6.解决冲突后再次拉取代码
git pulll
7.将解决冲突后最新的代码push
git push
```