分布式版本控制工具Git:环境搭建与常用命令

一、Git简介

Git:是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 每一个客户端都有一个本地仓库,客户端创建的所有代码记录与分支都在本地仓库,但项目最终代码是要合并的,项目所有代码可以提交到远程版本托管系统Github上进行合并同步。
在这里插入图片描述
 

二、GitHub项目创建

1、点击右上角加号,选择New repository新建仓库。
在这里插入图片描述
2、添加相应描述,创建远程仓库。
在这里插入图片描述
3、仓库创建好后,目前只有一个主干分支,后续可依据需求扩展。
在这里插入图片描述
4、将Code改为SSH加密传输方式,比HTTPS使用更安全、快速,后续可通过该地址进行项目clone开发。
在这里插入图片描述
5、点击Settings,可以对仓库进行相应的修改或删除。
在这里插入图片描述
 

三、Git客户端环境搭建

3.1 Windows环境

1、网上下载一个Git安装包,一路默认执行即可,打开Gitbash即可使用。
在这里插入图片描述
2、由于我们本地Git与远程仓库Github使用SSH协议进行传输,因此需要配置公私钥。打开Git bash,先输入命令ssh-keygen -t rsa -C “注册账号邮箱名”,然后一路回车,生成一个id_rsa.pub.文件。
在这里插入图片描述
3、在该路径下找到id_rsa.pub公钥文件,拷贝文件内容。登录GitHub,点击头像和Settings。
在这里插入图片描述
4、点击SSH and GPG keys,再点击New SSH key。
在这里插入图片描述
5、将刚才id_rsa.pub文件内容拷贝至key中,自己起个名字即可。
在这里插入图片描述
6、添加完成后打开Git bash输入ssh -T git@github.com命令测试本地git能否与远程仓库进行通信,出现如下提示即成功。
在这里插入图片描述
7、最后配置下邮箱和用户名,后续我们在GitHub上提交代码,都会附带邮箱与用户名信息,方便查看是那个用户提交的代码。
在这里插入图片描述
 

3.2 Linux环境

1、提前安装好git和ssh服务,与Windows类似输入ssh-keygen -t rsa -C "邮箱名"命令。
在这里插入图片描述
2、然后在GitHub远程仓库上也添加一个公钥配置。
在这里插入图片描述
3、添加完成后打开Git bash输入ssh -T git@github.com命令测试本地git能否与远程仓库进行通信,出现如下提示即成功。
在这里插入图片描述
4、最后配置下邮箱和用户名,后续我们在GitHub上提交代码,都会附带邮箱与用户名信息,方便查看是那个用户提交的代码。
在这里插入图片描述
 

四、Git常用命令

4.1 基础概念

以下为git中一些基本概念:
工作区: 当前存放项目代码的目录。
暂存区: git add把工作区修改的内容添加到暂存区当中。
本地仓库: git commit把本地暂存区的修改提交到本地代码仓库分支中(不同分支代表不同的代码版本)。
远程仓库: 通过git push把本地仓库的某一个分支上的代码推送到远程仓库的某个分支上。
HEAD指针: 本地仓库每一个分支上的代码修改都会生成一个commit id信息,HEAD指针指向最近一次的commit提交,通过这个commit id可以进行版本回退。

本地仓库拉取代码流程: 远程仓库上有一份Rain-house主干分支代码,本地客户端git bash通过git clone命令将远程仓库代码克隆到本地。本地会自动创建2个东西:1、远程仓库的别名origin,往远程仓库推送代码时使用该别名;2、本地仓库生成一个默认的主干分支master,追踪的为远程仓库origin/master分支。若后续代码有更新可以使用git pull来拉取远程仓库代码到本地仓库。
在这里插入图片描述
git本地代码修改提交流程: git本地工作区代码通过git add添加到暂存区,暂存区再通过git commit提交到本地仓库,本地仓库最终通过git push origin master推送到远程origin仓库的master分支上,更新了远程仓库代码。
在这里插入图片描述

 

4.2 常用基本命令

1、git clone:将远程仓库项目代码拉到本地。
在这里插入图片描述

2、git add: 把git工作区的代码改动提交到暂存区。
git add .:添加所有修改的。
git add 文件名:添加指定文件修改。
在这里插入图片描述

3、git commit -m “xxx”: 把暂存区的代码提交到本地代码仓库分支,-m为当前修改说明。
在这里插入图片描述

4、git push: 把本地分支的代码推送(提交)到远程分支上去。
在这里插入图片描述

5、git pull: 把远程代码更新拉取到本地。
在这里插入图片描述

6、git log:查看当前分支所有修改记录,HEAD指针指向当前分支最后一次修改。
在这里插入图片描述

7、git status: 查看当前操作的状态信息。
在这里插入图片描述

8、git remote: 列出已经存在的远程分支,origin为远程地址的别名。
在这里插入图片描述

9、git branch: 查看当前工作分支。
在这里插入图片描述
 

4.3 版本回退命令

1、工作区代码回退(git add前)。
git checkout --文件名(或者.代表所有修改的文件):在git add之前,把工作区的代码用本地版本库中的代码覆盖掉。
在这里插入图片描述

2、暂存区代码回退(git add后)。
git reset HEAD 文件名(若不加文件名则撤销全部暂存区内容):撤销暂存区修改,回退到工作区。
在这里插入图片描述

3、本地仓库代码回退(git commit后)。
git reset --hard 版本号: 提交到本地仓库中的代码改动进行回退,回退到HEAD指针指向的版本号。
在这里插入图片描述
git reflog:查看HEAD指针的改动日志。 实质上并未删除只是进行指针指向版本号的改变,可使用git reflog与git reset --hrad 版本号再次改变指向回退。
在这里插入图片描述
git diff HEAD --: 查看工作区文件和本地仓库最新版本代码有什么区别。
在这里插入图片描述

4、远程仓库代码回退(push后)。
方式一:将工作区代码修改回原来的版本,再重新git add添加到暂存区,暂存区再git commit提交到本地仓库,本地仓库最终通过git push推送到远程仓库。
方式二:可以通过git reset --hard将本地仓库回退到正确的版本号,此时本地仓库版本落后于远程仓库版本,需要通过git push -f强制提交覆盖远程代码仓库。
在这里插入图片描述
 

4.4 代码冲突解决

代码冲突: 小张、小王从远程仓库拉取了同一份代码V1,小王先修改完代码提交了V3版本,而后小张再提交了V2版本,此时发生冲突。
在这里插入图片描述
1、情况一:代码冲突不在同一个位置。
在这里插入图片描述
解决方式:我们只需要git pull一下,代码便自动合并了,小张再重新推送到远程仓库即可。
在这里插入图片描述

2、情况二:代码冲突在同一位置。
在这里插入图片描述
解决方式:手动解决冲突,实际项目会更复杂,需要依据实际情况处理。
在这里插入图片描述
 

4.5 分支版本控制命令
4.5.1 本地分支管理

项目开发时,我们在分支上进行新功能开发与测试,等新功能稳定后再将代码合并到主干上。
1、git branch: 查看分支。
在这里插入图片描述

2、git branch -vv: 查看本地分支与远程分支追踪关系。
在这里插入图片描述

3、git branch name: 创建本地分支。
在这里插入图片描述

4、git checkout name: 切换本地分支。
在这里插入图片描述

5、git checkout -b name: 创建 + 切换本地分支。
在这里插入图片描述

6、git merge name: 合并某分支到当前分支,直接合并到本地仓库中。
在这里插入图片描述

7、git branch -d name: 删除分支,如果分支上有更新没有merge,git会提示你merge,强制删除使用-D。
在这里插入图片描述

8、git push 远程仓库名 本地分支名:远程分支名: 本地分支直接推送到远程分支。
在这里插入图片描述
 

4.5.2 本地分支合并冲突解决

本地分支合并冲突: 我们在本地创建分支进行代码修改后,同时主干代码也被人修改了,此时分支代码合并到主干代码时会发生冲突,需要解决冲突才能进行代码合并。
例如:主干master上有一个readme文件,内容为aaa,小张创建了一个dev分支并在其基础上添加了bbb。但同时小王更新了主干上的readme文件并添加内容ccc,此时主干为aaa、ccc,dev分支为aaa、bbb,小张进行合并时发生了冲突,需要手动将其改为aaa、bbb、ccc解决冲突后才能进行代码合并。
在这里插入图片描述
 

4.5.3 远程分支管理

远程分支: 我们在github上创建一个代码仓库,默认就拉了一个master主干分支,我们在master主干分支上开发了一期项目以后,再进行二期开发的时候,可以再拉一个dev分支出来,大家都在dev分支上开发,此时项目管理员可以把master分支的写权限关掉,因为一期功能开发验证完成,很稳定,此时可以拉取master代码,不能再push推送代码到master分支。一般远程分支的创建都是由项目管理员来创建的,其它员工没有创建远程分支的权限,而且每一个远程分支的读写权限也都是由管理员来控制的。
在这里插入图片描述
1、git remote: 查看远程仓库名称,一般默认为origin。
在这里插入图片描述

2、git checkout -b 本地分支名 远程仓库名/远程分支名: 创建本地分支并指定追踪哪个远程分支。
在这里插入图片描述

3、git branch -u 远程仓库名/远程分支名: 设置已经存在的本地分支追踪哪个远程分支。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值