Git学习

Git是用来干什么的

Git介绍

版本控制就是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
问什么需要版本控制?从个人到团队协作转变的必然需要。
版本控制工具分为两类

  • 集中式版本控制工具(CVS、SVN、VSS)一个单一的集中管理的服务器,保存所有文件的修订版本,协同工作的人员通过客户端连接到这台服务器,取出最新的文件或者提交更新。
    • 优点:每个人可以在一定程度上看到别人在做什么,管理员也可以轻松掌握每个开发者权限。
    • 缺点,当服务器宕机时,谁都不能提交,谁都不能协同工作。
  • 分布式版本控制工具(Git)客户端将代码仓库完整的克隆下来,然后在本地对版本进行控制,最后再将其提交到远程库中。
    • 优点:服务器断网也可以进行开发(因为版本控制是在本地完成的)、每个客户端保存的也都是完整的项目(包含历史记录,更加安全) 不存在单点故障问题。

git工作机制:

git add
git commit
写代码
工作区
临时存储
暂存区
历史版本
本地库
  • 在工作区可以自由删改代码
  • 当将工作区文件提交到暂存区,可以将提交文件撤回
  • 当上交到本地库后,文件不能被撤回(除非删除整个本地库)
    代码托管中心
    代码托管中心是基于网络服务器的远程代码仓库,一般我们称为远程库。
  • 局域网 GitLab
  • 互联网 GitHub(外网)

Git安装

Git安装在官网进行下载:window系统下载
下载
Git安装目录,不用修改,直接下一步
在这里插入图片描述
选择默认编辑器
在这里插入图片描述
是否需要更改默认分支命名,直接下一步
在这里插入图片描述
是否修改环境变量

在这里插入图片描述
选择后台客户端连接协议
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何使用Git

Git命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.emall 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m"日志信息"文件名提交到本地库
git reflog查看历史记录
git log查看详细历史记录(人物、时间、版本信息)
git reset --hard 版本号版本穿梭

Git首次安装必须设置一下用户签名,否则无法提交代码。
git init 初始化本地库
为了能够使用git对文件进行管理首先我们应该在需要管理的文件中进行初始化本地库操作,此时在我们需要管理的文件夹中出现.git文件,说明我们可以对其进行管理。
在这里插入图片描述
git status查看当前状态
在这里插入图片描述
当文件夹不为空时,使用git status可以看到:
在这里插入图片描述
**git add将文件添加到暂存区 **
在这里插入图片描述
在这里插入图片描述
git commit将暂存区文件提交到本地库
在这里插入图片描述
在这里插入图片描述
当文件被更改后那么此时查看文件的状态为:
在这里插入图片描述
可以看到文件名前面有modified并且是红色的,此时我们需要重新追踪并提交
在这里插入图片描述
版本穿梭
当我们想要查看原来的版本,我们可以使用版本穿梭来完成这个操作。
首先使用git reflog获得版本信息,然后使用git reset --hard 版本号,进行版本穿梭。

$ git reflog
9710261 (HEAD -> master) HEAD@{0}: commit: second commit
c40de80 HEAD@{1}: commit (initial): first commit

$ git reset --hard c40de80
HEAD is now at c40de80 first commit

$ git reflog
c40de80 (HEAD -> master) HEAD@{0}: reset: moving to c40de80
9710261 HEAD@{1}: commit: second commit
c40de80 (HEAD -> master) HEAD@{2}: commit (initial): first commit

当版本改变时,我们可以发现文件也回到了原来版本的内容。

Git切换版本,底层其实是移动HEAD指针。
首先我们打开下列文件,可以看到只有一个master分支,并且HEAD指针指向master

在这里插入图片描述
然后打开下列文件可以看到,master指向我们的第一个版本的完整版本号。
在这里插入图片描述
这就是Git管理的基本原理,并不是创建很多副本来实现版本的管理的。

Git分支

在这里插入图片描述
什么是分支?
在版本控制过程中,同时推进多个任务,为每个任务创建单独的分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。
分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可

分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

正常合并
这种情况下是,master分支没有进行更改,而hot-fix分支进行修改,这种只有一方进行修改时,不会产生冲突,所以是正常的合并
创建新的分支,并切换到该分支

git branch hot-fix
git checkout hot-fix

对文件进行修改后进行合并

git checkout master
git merge hot-fix

冲突合并
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须人为决定新代码内容。
在我们对master分支和hot-fix两个分支中的文件都进行更改时,此时合并两两分支会出现报错,因为git不知道要保存两个更改版本中的哪一个
在这里插入图片描述
可以看到 hello.txt被both modified
此时我们需要人为的干预,去决定修改哪些内容。
我们打开需要被修改的文件
在这里插入图片描述
我们将要修改的代码保存下来,并将特殊符号删除。
在这里插入图片描述
然后我们将修改过的文件添加,提交本地库(注意:此时使用git commit命令不能带文件名)

git add hello.txt
git commit -m "merge hot-fix"

团队协作机制

团队内协作
在这里插入图片描述
团队协作中的大牛写完代码后将自己的代码push到代码托管中心,然后团队中的小牛们在代码拓展中心将大牛的代码clone下来进行一定程度上的更改,然后小牛得到大牛的允许的前提下将自己的代码push到代码托管中心,此时大牛就可以从代码托管中心pull下来小牛修改后的代码进行审查。
跨团队协作
在这里插入图片描述
跨团队模式就是团队之间的代码交流,具体流程如上图所示。

GitHub

远程仓库操作

命令名称作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名(远程地址太长,用别名代替)
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支别名将远程仓库对于分支最新内容拉下来后与本地分支直接合并

当我们push代码时可能会报错:
fatal: unable to access ‘https://github.com/yiranwang187/git-demo.git/’: SSL certificate problem: unable to get local issuer certificate
产生原因是:一般是这是因为服务器的SSL证书没有经过第三方机构的签署,所以才报错
解决方法:解除ssl验证后,再次git即可。
git config --global http.sslVerify “false”

pull操作
拉取操作的目的是为了及时更改本地库为最新状态。比如,当远程库被修改后,我们发现本地库和远程库不同步了,也就是本地库落后了,所以此时我们需要对远程库进行拉取操作,以便及时更新本地库代码。拉取操作可以自动完成版本的提交。
clone操作

  • 拉取代码
  • 初始化本地仓库
  • 创建别名

邀请伙伴加入

在这里插入图片描述
在下面图中输入作者名字
在这里插入图片描述
在这里插入图片描述
然后让好友在github界面打开邀请函地址进行添加即可。

称为项目管理者后就可以对远程库进行相应修改。

在编辑器中使用git

本文以pycharm为例展示如何在编辑器中使用git
在这里插入图片描述
在这里插入图片描述
暂存库提交
在这里插入图片描述
上传到本地库
在这里插入图片描述
在这里插入图片描述

创建新的分支
在这里插入图片描述
在这里插入图片描述
切换分支
在这里插入图片描述
合并分支(正常合并)
在master分支上合并hot-fix分支
在这里插入图片描述
合并分支(冲突合并)
当我们对两个版本都更改时会出现冲突:
在这里插入图片描述
此时我们选择手动合并:
在这里插入图片描述
在IDEA集成GitHub
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值