Git笔记使用教程(本文1~4章的内容)
本人第一次写博客,小菜鸟(学生),希望大佬们指点。
文章的目录
第一章 git的初始
1.1 什么是git?
git是分布式版本控制系统,简单理解就是版本叠加,如下图
我们在开发一个新项目,是在原先项目基础上进行更新,更新后又是一个版本,不断的更新项目,每更新一次项目就是一个版本。
比如客户提了一新需求,我们进行更改项目,生成一个版本。但是客户体验后感觉没到之前的好用。客户想用之前的版本。我们就可以让git恢复到之前的版本。
1.2 git的作用
备份 协同开发 代码合并 代码还原 追溯
1.3 git的安装与配置
https://git-scm.com/download/win
下载后,傻瓜式安装,安装成后进行git的配置
右键选择:Git Bush Here
配置
git config --global user.name='用户名'
git confif --global user.email='邮箱'
查看是否成功
git config --global user.name
git config --global user.name
1.4 git的工作流程图
第二章 git的使用
2.1 创建本地仓库
新建一个文件夹,进入右键选择:Git Bush Here,相当于Linux系统,可以执行Linux命令
输入命令
git init **创建本地仓库**
会生成.git文件
如果不显示,开启系统的文件隐藏功能
.git就是我们创建的本地仓库
2.2 git的基本命令使用
首先我们看张图
第一个任务我们创建一个文件,然后保存本地仓库。
首先我们了解几个概念:
工作区:就是出.git外我们所看到区域就是工作区
暂存区:看不到,提交到仓库之前的缓存区
touch file01.txt 1.创建文件
vim file01.txt 2.编辑内容
git status 3.查看当前file01.txt文件的状态[当前文件为保存到缓存区]
git add . 或 git add file01.xt 4.通过git add命名就是将更改的文件保存到缓存区
git status 5.查看当前file01.tx文件现在是为提交到本地仓库状态
git commit -m '描述' 6.通过git commit命令将更的文件提交到本地仓库
git log 7.提交后,可以查看提交的记录
流程:更改的文件-----git add----》缓存区------git commit------》本地仓库
2.3 文件的删除和查看更改的内容
流程:更改的文件-----git add----》缓存区------git commit------》本地仓库------git rm----》删除
git rm file01.txt ***删除文件***
ll ***查看目录下的文件***
查看更改的内容
流程:更改文件----git diff-----》更改内容
注:如果git add添加到缓存区,git diff看不到更改的内容
vim file01.txt ***编辑文件***
git diff file01.txt ***查看更改的内容***
2.4 git log的使用
显示提到本地仓库的信息
git log
git log --pretty=oneline
git log --abbrev-commit
git log --graph
git log --pretty-oneline --abbrev-commit --graph ***这命名更能清晰看到【解决冲突】分支***
***这里看一下这个命令的显示效果。后面会说到【合拼冲突】***
注:git log 后面的这三个属性命令位置任意,只要保证有这三个属性命令
2.5 别名的配置
git log --pretty-oneline --abbrev-commit --graph ***这个命令比较长我们可以自定义别名***
配置
touch ~/.bashrc ***创建这个文件,进入配置***
vim ~/.bashrc ***将下面这行代码写入保存退出***
alias git-log='git log --pretty=oneline --all --abbrev-commit --graph'
***保存退出,执行下面命令就OK了***
source ~/.bashrc
***我们就可以使用****
git-log
第三章 文件撤回,创建分支,合并
3.1 文件撤回与版本的撤回
- 文件撤回
流程:文件更改-----git checkout------》撤回刚才修改的内容
vim file01.txt ***修改内容***
git diff file01.txt ***查看修改的内容,方便撤回观察文件的变化***
git checkout file01.txt ***撤回当前修改的内容***
cat file01.txt ***查看文件内容***
- 版本的撤回
流程:更改文件----git add----》缓存区----git commit-----》本地仓库----git reset----》回到指定版本
注:我们只要修改了文件,提交到本地仓库就是一个最新的版本
git reset --hard HEAD^ ***回退到上一个版本***
git reset --hard HEAD^^ ***回退到上上个版本***
***如果我有一百个版本回到初始版本这样特别繁琐***
git reset --hard HEAD~100 ***通过这种就比较简化***
git reset --hard HEAD~1
上面我们从新版本回到旧版本,现在我们想旧版本重新回到新版本
git reflog ***查看提交记录,每次提交都有一个Id,每个版本对应一个Id***
git reset --hard id
git reset --hard 14a9f07
黄色的字体就是对应的Id
3.2 创建分支
git branch ***查看所有的分支***
git branch 【分支名】 ***创建分支***
git branch dev ***我创建了dev分支***
git checkout dev ***切换分支***
git checkout -b dev ***直接创建分支,并且切换分支***
git branch -d dev ***删除分支***
3.3 合并和合并冲突
- 合并
看图:我在dev分支新建了file02.txt文件
git ckeckout -b dev ***创建分支,并切换***
touch file02.txt ***新建文件***
vim file02.txt ***编辑内容***
git add file02.txt ***保存到缓存区***
git commit -m '新增file02.txt文件' ***保存到本地仓库***
git checkout master ***切换到master分支***
git merge 【分支名】
git merge dev ***合并dev内容到master***
git log --pretty-oneline --abbrev-commit --graph ***查看提交,合并的记录***
- 合并冲突
比如:master分支下有一个file01.txt文件
我们创建两个分支,分别打开Git Bush Here。
比如:创建了 dev01,dev02两个分支。
流程:
dev01
file01.txt----vim----》git add------》git commit----》git checkout-----》master-----》git merge
vim file01.tx
git add file01.txt ***内容更改为:int a=1 ***
git commit -m 'dev01更改file01.txt文件'
git checkout master
git merge dev01
dev02
file01.txt----vim----》git add------》git commit----》git checkout-----》master-----》git merge
vim file01.tx
git add file01.txt ***内容更改为:int a=2 ***
git commit -m 'dev02更改file01.txt文件'
git checkout master
git merge dev02 ***这时合拼dev02,就产生了冲突***
如图:产生了冲突
- 解决冲突
cat file01.txt ***查看文件内容***
首先dev01合并成功master内容:int a=1。
这时我们可以根据查看的内容:需要保留那部分进行更改。
比如: 我这两个内容都要
vim file01.txt ***进行编辑***
***内容更改为***
int a=1
int a=2
***接着执行如下命令***
git add file01.txt
git commit -m 'master-合成冲突'
第四章 远程仓库,推送,克隆,抓取,拉取
4.1 远程仓库的注册与创建
4.1远程仓库
-
注册
这里我码云,也可用github,gitLab
https://gitee.com/
注册账号这里就不说了 -
创建远程仓库
-
配置公钥
打开Git Bush Here
***输入下命令***
生成秘钥:ssh-keygen -t rsa
获取秘钥:cat ~/ssh/id_rsa.pub
打开码云 设置找到SSH公钥配置。
***打开Git Bush Here,与远程建立关联***
git remote add 远程仓库 HHTS 【远程库存名可以自定义】
git remote add origin git@gitee.com:cmq_gitee/cmq_ck1.git ***添加了个远程仓库***
git remote ***查看当前添加的远程仓库***
git remote -v
4.2 推送
git push 【远程仓库名】【本地分支】:【远程分支】
git push origin master
git push --set-upstream origin master:master 【建立关联关系】
git push ***可以直接使用 git push ***
***本地分支名与远程分支名相同可以省略一个***
***推送成功打开码云我的库存就可以看到上传的文件***
4.3 克隆
流程: 打开Git Bush Here-----》git clone
这里我在桌面打开Git Bush Here
git clone HHS 【自定本地仓库名】
git clone git@gitee.com:cmq_gitee/cmq_ck1.git ***可以不指定,默认 cmq_ck1 ***
git clone git@gitee.com:cmq_gitee/cmq_ck1.git test_ck ***执行后,就可以看到克隆的项目***
4.4 抓取和拉取
抓取【fetch】:
比如我们推送到远程仓库文件:file01.txt, 我们本地仓库也只有file01.txt,本地与远程内容一样。
比方我们有:【员工A】【员工B】
【员工A】新增file02.txt推送到远程仓库。此时远程仓库有:file01.txt feil02.txt 两个文件。
【员工B】的代码不是最新的,要进行抓取 【git fetch】,抓取后还不是最新的代码,
这时需要合并【git merge 远程分支名】
【员工A】
touch file02.txt
git add file02.txt
git commit -m '新增file02.txt文件'
git push origin master
【员工B】
git fetch 【远程库存名】【当前的分支】
git fetch origin master***此时没有合并到master分支***
git merge 【远程仓库名】/【远程分支】
git merge origin/master ***合并到master分支***
拉取【pull】
比方我们有:【员工A】【员工B】
【员工A】新增file02.txt推送到远程仓库。此时远程仓库有:file01.txt feil02.txt 两个文件。
【员工B】的代码不是最新的,要进行抓取 【git pull】== 【fetch+pull】
【员工A】
touch file02.txt
git add file02.txt
git commit -m '新增file02.txt文件'
git push origin master
【员工B】
git pull【远程库存名】【当前的分支】
git pull origin master ***拉取***
git log --pretty-oneline --abbrev-commit --graph ***查看提交,合并的记录***