Git和Gitee(码云)基础简单使用
一、Git基本使用说明
Git也是一个版本控制系统,Git和传统的svn最大的不同,在于版本控制的方式:svn必须从本地把文件提交到svn服务器,如果没有提交上去就没有发生版本变化,也就是说没有网络的话svn根本做不了版本控制管理,而Git是本地进行版本控制管理的,所有的版本变化都在本地机器上进行的,所以 Git单纯做个人的版本控制的话是不需要依赖网络以及类似svn服务器这样的东西的。
这里你或许会有疑问,要是多个人对同一个项目进行操作,进而在各自的电脑上产生了各自的一系列版本,那么在自己的电脑上如何才能看到其他人产生的版本内容呢?——这里不用着急,因为这里涉及了 托管中心、团队成员间的协作 甚至是 跨团队之间的协作 问题。
1、安装Git
Git的安装比较简单和普通程序一样,到官方网站找到自己的操作系统对应的版本下载,下载后双击安装即可。
官方网站:https://git-scm.com/
2、Git的模型和基础操作(本地操作)
Git的基本模型:整体分为三个部分:工作区、暂存区和本地库。
- 工作区:工作区就是我们使用的的文件夹目录,我们工作的时候就在里面新增或编辑文件。
- 暂存区:新增或编辑后的文件想要提交都要先放入到这个暂存区(设置暂存区的目的是什么呢,我也查了不少资料,主要是和git设计有关系,比如,我不想把修改的文件都提交,就先把某几个文件加入到暂存区,然后提交上去。还有就是方便对比修改和还原,这个实现原理有儿复杂了。)
- 本地库:从暂存区提交后都会放到本地库,本地库存放的是我们的一次次提交,也就是一次次的版本。
git本地结构.png
Svn的提交(版本)变化:
svn的版本.png
Git的提交(版本)变化:
Git的版本.png
从图中可以看出svn和git提交有本质的区别,svn的提交是一次次的变化差异,而git的提交是一个个完整的快照(就是全部文件,这里的commit内容其实指向所用文件的索引,文件都在本地,没必要那么傻的自我复制一份,只要保证不同内容的文件都有一份就行了),所以从版本还原的速度上来看,git肯定远超svn,因为svn只能逐个版本依次对比还原文件内容,还原的版本越早花费的时间越久,而git只要根据提交版本里面的文件索引找到文件就行了根本不需要对比还原文件内容。
windows下使用模式,在 需要被Git版本管理的文件夹上 右击后选择 “Git Bash Here” 出现可以输入git命令的界面(windows系统不能靠自己的命令行终端执行git命令,所以才有这一步骤)。
第一步:初始化自己的身份,Git需要知道提交者的身份是谁,这样才能知道每次提交都是谁提交的。(一般一台电脑上设置一次就可以了,更改身份除外)
git config --global user.name "名字"
git config --global user.email "邮箱"
第二步:将文件夹初始化,生成暂存区和本地库
git init
第三步:将文件夹中的内容从工作区加入到暂存区
git add file1 file2 ... # 将文件添加到暂存区,多个文件空格隔开
git add dir # 将文件夹及其下面的内容添加到暂存区
git add . # 将工作区内的所有内容添加到暂存区(我经常使用)
第四步:将暂存区的内容提交到本地库,生成一次提交,也就是一次版本变化
git commit -m "提交描述" # 将暂存区的内容提交到本地库(最常用)
git commit file1 file2 -m "提交描述" #将暂存区的某几个文件提交到本地库(注意这里提交除了file1 file2本书的索引还有其它项目文件的索引)
第五步:查看工作区、暂存区的状态,主要是来检测哪些东西没提交。
git status
上面是本地最常用的步骤,尤其是第三步和第四步。
除了上面的步骤,我们还有其它需求,比如,
- 查看提交日志;
- 查看工作区和暂存区的区别;
- 查看暂存区和本地库的区别;
- 回滚到某个版本等等,在这里我们只需要等有需求的时候再查阅和使用这些命令。
注意! 到目前为止,我们都是在个人电脑上进行操作,还不能与他人进行协作,别人看不到我们做的事情,我们也看不到别人做的事情,如果仅仅是为了个人本地版本控制,那么上面的操作已经非常满足需求了。
3、分支
Git也有分支的概念,为什么要有分支的概念,本质还是因为不同时间有不同的版本需求 或 本身就是有不同版本的需求。打个比方:我要在我现有的项目上做出两个扩展项目,这时候就需要分别拉出两个分支来实现目标。
我们上面的操作其实产生了一个默认分支,也就是master主干分支(正常需求比较单一且一个人玩的时候一个主干分支也够玩了)。
- 查看分支,“*”星号代表目前所在的分支 git branch -v
- 创建分支,git branch 分支名
- 切换分支,git checkout 分支名
- 合并分支,git merge 分支名 把分支合并到当前所在的分支,注意,在不同分支上修改同一个文件的同一行,合并两个分支的时候就会发生冲突。例如,master分支和branch1分支两个分支都修改来同一个文件的同一行,在master中合并branch1的时候发生冲突。
git checkout master #切换到主分支
git merge branch1 #将branch1合并到主分支上
# 发生冲突后解决冲突,这里需要熟悉vi编辑
git add xxx # 将冲突修改好的文件提交到暂存区,这里需要注意,没有冲突的文件git是自动合并的,自动合并的已经在暂存区了不需要再次git add了
git commit -m "冲突解决备注" # 将冲突修改提交到本地库,冲突解决完后可以通过,git status 查看工作区和暂存区到状态
分支.png
二、托管中心(Gitee码云——国内常用)
正如开头遇到的问题,要是多个人对同一个项目进行操作,进而在各自的电脑上产生了各自的一系列版本,那么在自己的电脑上如何才能看到其他人产生的版本内容呢?——答案是,需要一个统一的远程库供大家来提交自己的版本和拉取别人的版本。
这个存放远程仓库的地方就是托管中心,常见的托管中心有Github、国内的Gitee码云和GitLab,下面我们以码云为例简述下远程库的使用。
码云地址:https://gitee.com/ 注册账号就不需要多说了。
第一步:在托管中心新建仓库,注意这里建的库就是远程库(图中,仓库右边的+号)。
image.png
image.png
仓库建完后可以点击仓库进去看到这样的地址,这里的地址就是远程仓库的地址,我们这里只讲https的使用方法。
image.png
第二步:将远程库和本地库进行关联
git remote add origin https://gitee.com/eatsleepsauce/yttstudy.git #这个命令的意思在本地备注了一个远程库的地址 origin是远程地址的别名
git push -u origin "master" #把本地库主干分支的内容推送到 origin这个远程仓库中,也就是将本地库和远程库关联
注意:如果本地库还没有,可以通过 git clone 远程库地址,直接在本地生成一个和远程库有关联的本地库,也就是不需要执行 git init 和 上面的关联命令。
git clone origin https://gitee.com/eatsleepsauce/yttstudy.git
使用命令:git remote -v 可以查看本地备注了哪些远程库地址
第三步:将本地库推送到远程库 push操作
git push -u origin "master" # 这个命令执行时会让输入托管中心的账号密码,一般输入保存就好了
git push origin #如果是主干分支推送可以直接简写成这样(我常用)
第四步:将远程库的最新内容拉到本地库 pull操纵
#首先pull拉去到本地
git pull origin master # 远程库别名 和 本地分支
git pull # 如果是主干分支pull可以直接简写成这样(我常用)
#如果有冲突,解决冲突
三、托管中心Github(国际主流托管中心)
https://github.com/ 国内访问经常不稳定,最好有梯子,我们常用的开源的项目都在这上面托管着,比如大数据里面常用的那几个。
四、团队成员间的协作
正常公司项目执行时,内部团队一般会使用gitlab来搭建公司内部的托管中心,而不是直接使用Gitee或Github。不过在使用上不管是Gitee、Github还是Gitlab的区别并不算大。
团队内部协作.png
五、跨团队之间的协作
跨团队合作(跨公司),远程库的托管中心可以使用github或者gitee(码云)。
跨团队协作.png
第3步是团队B将团队A的在托管中心的项目单独在托管中心复制一份,以后团队B都是基于自己复制的那份进行版本控制。
第6步是团队B在托管中心发起的合并请求,请求团队A来把自己的那份拉过去合并,团队A发现请后就会审核并合并。当然团队B也可以反向发起合并求,然后自己把团队A的项目合并到自己的那份中(也就是更新)。
第3步和第6步的操作都是在Github或Gitee上直接通过页面功能操作的。











网友评论