zoukankan      html  css  js  c++  java
  • Git讲义

    GIT

    1.   为什么要开发项目要有版本控制

    在企业开发中,企业项目代码都需要有版本控制

    为什么要有版本控制?

    公司5个员工同时开发一个项目,不同员工开发的代码相互之间如何同步呢?让A来管理,剩下四个代码都发给A,让A来一个个文件对,一行行对,看看今天大家都开发了什么代码?很显然不现实

    解决方案:使用专业版本控制工具

    CVS :最早期的版本控制工具(现在基本已经淘汰)

    SVN :集中式版本控制工具,目前还有一定市场份额

    GIT : 目前最流行的分布式版本控制系统

    2.   GIT简介

    2.1. Git是什么?

    Git是目前世界上最先进的分布式版本控制系统。

    Linux 操作系统的作者 林纳斯·托瓦兹


    林纳斯·托瓦兹花了两种时间 git 第一个版本,使用c 语言编写的分布式版本控制系统

    工作原理 / 流程:



    Workspace:工作区
    Index / Stage:暂存区
    Repository:仓库区(或本地仓库)
    Remote:远程仓库

    2.2.   集中式 VS 分布式 介绍

    2.2.1.   集中式版本控制

     

    先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

    缺点:

    集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个 10M 的文件就需要 5 分钟,这还不得把人给憋死啊。

    2.2.2.   分布式版本控制

    那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件 A,你的同事也在他的电脑上改了文件 A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

    和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

    在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

    当然,Git 的优势不单是不必联网这么简单,后面我们还会看到 Git 极其强大的分支管理,把 SVN 等远远抛在了后面。

     

    2.3. GIT的发明

    Linux 操作系统 林拉斯,花了两周时间写了第一版本,使用C语言编写

    3.   Git 安装及初始化

    1 安装

    3.1.1.   在windows上如何安装Git?

    要使用 Git,第一步当然是安装 Git 了。msysgit 是 Windows 版的 Git,从 https://git-for-windows.github.io 下载,然后按默认选项安装即可。

    msysgit是 windows版的Git,如下:



    需要从网上下载一个,然后进行默认安装即可。安装完成后,在开始菜单里面找到 "Git --> Git Bash",如下:
    出来 git 菜单就表示安装成功

     

    4.   远程仓库

    1. 远程仓库可以 自己使用 gitlib 搭建,需要购买一个一台云服务器vps
    2. 使用第三方托管服务器

    (1)     Github https://github.com/

    (2)     Gitee https://gitee.com/

    这个两个第三托管网站都有 免费版,和收费版

    5.   github

    Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

    找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

    可以自己搭建一台运行 Git 的服务器,不过现阶段,为了学 Git 先搭个服务器绝对是小题大作。好在这个世界上有个叫 GitHub 的神奇的网站,从名字就可以看出,这个网站就是提供 Git 仓库托管服务的,所以,只要注册一个 GitHub 账号,就可以免费获得 Git 远程仓库。

    5.1. 生成公钥私钥

    在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:

    5.1.1.   创建SSH Key。

    在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:

    ssh-keygen -t rsa –C "youremail@example.com", 由于我本地此前运行过一次,所以本地有,如下所示:

    id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

     

    5.1.2.   Github 设置秘钥

    登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。

     
     
     

    5.2. 如何添加远程库


    现在的情景是:我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。

    首先,登录github上,然后在右上角找到“create a new repo”创建一个新的仓库。如下:

     
     
     
     
     
     
     

    5.3. 从远程库克隆

    git clone [url]

    会自动创建一个 masetr 分支跟踪远程分支 origin/master

    5.4. 从远程仓库抓取数据

    fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。

    若设置了某个分支用于跟踪某个远端仓库的分支,可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。

    默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有

    master 分支)。所以一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中当前分支。

    到远程仓库中拉取所有你本地仓库中还没有的数据

    git fetch [remote-name]

    git merge origin/master

    git pull origin master

    5.5. 推送数据到远程仓库

    只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。

    若在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,并到自己的项目中,然后才可以再次推送。

     把本地的 master 分支推送到 origin 服务器上

    git push origin master

    5.6. 使用Eclipse管理git项目

    如果项目已经开发一个阶段,把项目放入到和githu上远程仓库本地git仓库里面

     

    5.6.1.   在Eclipse中导入项目

     

    5.6.2.   把项目提交到仓库被仓库管理

     

    5.6.3.   忽略target目录的管理

    Target 是maven项目打包安装以后生成的目录,我们开发只需要同步开发,不需要同步安装包,所以 maven的-target需要忽略

     

    5.6.4.   添加项目到git仓库

     

    添加后效果

     

    5.7. 将代码提交到git仓库

     

    提交操作

     

    提交后的效果

     

    5.7.1.   将本地仓库同步到远程仓库

     
     
     

    5.7.2.   修改后代码效果

     

    5.8. 同步git其他团队代码

    aib

    6.   码云-https://gitee.com

    码云是一个国产的基于git分布式托管中心,比较符合国情,速度快,可以有个人版本和企业版本。

    1. 注册账号

    2. 登录账号

    6.1. 创建远程仓库

     
     

    6.2. 把仓库克隆到本地电脑

     

    其他的代码同步操作和 github一样

    6.3. 添加团队协作开发成员

    首先你添加用户必须在码云上注册账号

     
     
     
  • 相关阅读:
    迪杰斯特拉算法
    基数排序
    快排算法
    插入排序与希尔排序算法
    java--jmm知识
    Java基础
    socket代理
    TestLink 学习第一周
    软件体系结构第三章之解释器风格
    如何衡量个人在各自团队的效率和绩效
  • 原文地址:https://www.cnblogs.com/meizhoulqp/p/11313721.html
Copyright © 2011-2022 走看看