目录
一、Git介绍
Git是一个开源的[分布式][版本控制系统],用于敏捷高效地处理任何或小或大的项目
1. Git 与 SVN 区别
2.1 去中心化
GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2.2 git仓库的任何一个拷贝都可以独立作为一个服务器来使用
2.3 在Git中文件有四种状态:
未跟踪(untrack):表示文件为新增加的
已修改(modified):表示修改了文件,但还没保存到git仓库中。
已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
已提交(committed):表示文件已保存在git仓库中。
2.4 其它
GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏
2.5 直接记录快照,而非差异
GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
直接记录快照,而非差异
2.6 直接记录快照,而非差异
GIT分支和SVN的分支不同,分支在SVN中一点不特别,就是版本库中的另外的一个目录。
2.7 git存在分支
二、Git入门
1. 前置工作
首先我们需要注册码云账号,还需要安装Git
1.1 注册账号
链接: Git官网
点击链接进入,点击注册
填写对应的信息
注册成功后我们登录
1.2 码云基本使用
首先是建立共有仓库
进入主页,我们点击左上角的加号,点击新建仓库
填写对应的信息,点击创建
进入到对应页面,点击初始化
现在我们的仓库还是私有的,点击管理
到这我们的仓库建立好了
然后我们建立文件或者文件夹到该仓库
建立文件
建立文件夹
删除库
点击管理,找到旁边的删除仓库,把仓库名填进去,最后输入码云密码即可
1.3 Git安装
这边大家可以去看看这篇博客
链接: link
三、Git使用
1.Git的常用命令
git clone :将远程仓库clone到本地计算机。
git status :展示工作区及暂存区域中不同状态的文件。
git add :将内容从工作目录添加到暂存区。
git commit :所有通过 git add 暂存的文件提交到本地仓库。
git push :将本地仓库的记录提交到远程仓库。
git reset HEAD 文件名 :从暂存区移除指定文件。
git pull :拉取远程仓库的数据。
git init
这边我们假设有两个角色,一个是组长管理的码云的仓库,一个是组员要克隆组长的仓库使用
克隆
首先我们在本地电脑一个目录右键
然后我们输入命令 git clone 加上组长给的链接
链接从码云上获取
然后我们输入命名
此时我们文件夹就会有对应的文件
cd到该文件夹,输入命名 ll 查看所有文件
2.案例
代码提交管理过程
代码区–》暂存区–》本地仓库–》远程仓库
首选先我们组员要写代码,加入了一个Demo1,而组长总仓库是没有的
首选我们输入命令git status :展示工作区及暂存区域中不同状态的文件
可以发现·Demo1.java是未跟踪状态
我们输入密码git add Demo1.java,然后再查看状态
在这如果输入命令 git reset HEAD Demo1.java,那么就回到我们先前状态
到这里就显示图片结果,然后我们提交到暂存区中
在这之前,我们需要输入命令设置邮箱密码
设置用户名/邮箱/密码
git config –global user.name “username”
git config –global user.email “email”
git config –global user.password “password”(密码如果没有设置那么后面就不会弹框验证)
设置完后输入命令 git commit -m ‘文件备注’,在输入git statuc
最后我们输入命令 git push 填写对应的码云账号密码(博主这里没有设置密码,所有可以直接运行)
到这我们到本地仓库看我们刚才建立的文件
同时提交两个
通过命名git add .
演示git pull命令
假如我们组长对于组员提交的文件不满意,对其Demo2进行了删除,对其Demo3进行了修改
现在我们没有同步时,组员这里还是跟原来一样Demo2没有删除,Demo3没有修改
在这我们组员输入git pull,在输入前面两个命令
get init初始化
首先我们假设项目已经搭建完毕
那么现在我们组长要将该项目上传到我们的仓库中
输入命令git init
然后我们文件夹就会有一个.git文件
建立完毕后我们就需要关联,在关联前,我们需要在仓库中建立一个空的目录,这边博主直接重新建立一个仓库
我们出初始化的时候,把一下内容复制
这个地址输入的是克隆的地址
== 先输入
git remote add origin + 这个地址输入的是克隆的地址
==在输入
git pull --rebase origin master
==最后输入
git push -u origin "master"
然后就是上面的操作 git add . –》 git commit -m ‘本地远程关联’ –》git push
然后我们再到仓库看
总结
组长:
1.在某一个工作区间搭建环境,ssm能够跑起来
2.在该工作区间中执行git init 命令,标记该工作区间有git管理
3.在gitee/github中新建仓库
4.通过 git remote add origin url 将本地仓库与远程仓库关联
5.将本地仓库与远程仓库进行同步
git pull –rebase origin master
执行git三部曲 add .commit push 将搭建好的环境推送到远程仓库
组员:
- 通过git clone 将组长搭建好的环境克隆到本地,并且保障项目能够正常运行
2.测试修改/新增代码能够推送到远程仓库
测试git add commit push 能否有用
2.3 特殊情况
冲突
首先组员将项目克隆
当我们在克隆时后面添加了名字,那么该文件夹的名字也会是我们设置的名字
现在组长通过vi 加入文件
此时按i键,窗口才允许输入
按Esc键退出编辑窗口
在按:wq 保存编辑文件修改的内容,回到git命令窗口
然后通过三部曲上传
这个时候组员输入命令git pull
这个时候组长在次修改order.java文件内容,然后通过三部曲提交
这个时候组员也同时改内容,在没有同步的情况下加入了一个属性,然后提交,那么现在我们的组员就不能同步成功
输入指令git pull
这里看见我们就出现了冲突
那么现在我们编辑冲突,输入vi进入编辑页面
如果我们两个代码都先要,那么就把多余的删除即可
然后再利用三部曲进行提价即可