乘城程序猿
愿能苦中求乐,累中求歇。痛苦并快乐

Git是什么?

  Git,强大的版本管理工具,用于对代码进行管理处理,相比于SVN而言其中比较方便的是其将自己电脑当做一个完整的本地仓库,当需要进行协调开发时不必在将两个人之间的代码上传至远程仓库 只需要互相推送给对方即可。 不过因为SVN操作步骤深入人心 所以一般也会将Git当做SVN去使用,进行远程仓库的连接。

Git的工作流程:

  

  本地仓库:由你创建 在本地模拟远程仓库的一个文件夹

  工作区:你编写的代码,项目模块等修改的区域。你需要分清 本地仓库是用来存放 为了保证你代码一致性, 经历不要改写你存在本地仓库的代码,而是将本地仓库中的代码进行取出 进行修改。

  暂存区: 当你项目代码修改完毕后 将其提交至本地仓库时 会进行暂存操作 而不是直接提交到本地仓库中,这主要是为了让你在协作开发时保证代码统一。

  远程仓库: 类似于SVN中中央仓库的概念。用于对多人并行开发项目的代码综合,存在服务器中 提高项目代码的安全性

 

Git安装:

  软件下载:

    下载地址:https://git-scm.com/download

    注意:对于Git的linux版本需要进行代码下载,我在这里进行了tar包压缩。

    百度网盘: https://pan.baidu.com/s/1NAa03SJg9KerbN_nLhu8RQ                     提取码:ww1u

  软件安装:

    安装git的exe文件时你可以将眼睛比起来然后按下一步即可。 没有什么需要特别注意的,如果非要说的话 那就是安装地址,如果需要自己选择 则手动选吧

    安装TortoiseGit下一步下一步即可,当看到语言选项时 默认为英文。

    唯一需要注意的是配置好安装的gie.exe文件的路径

 

    然后配置开发者姓名和邮箱。 在每次代码提交时都会讲这些信息包含在提交信息中

  

   

    单击完成按钮完成配置 ,当配置完毕时 在桌面单击右键会出现

    

    就安装好了

    *如果需要安装中文语言包则安装Tortoise-LanguagePack安装包进行安装,依然是下一步

      安装完成后  在Tortoise中设置语言

    

 

  使用Git管理文件版本

    创建本地仓库:

      首先创建一个空目录 路径任意

      然后右键

      

      或者在开始菜单中启动。如果是从开始菜单启动gitBash 则需要切换目录到仓库所在目录

    使用:  $git  init命令 执行仓库创建命令

  如果使用的TortoiseGit工具则直接在目录下右键

      

      

      

    版本库创建成功,会在目录下创建一个.git的隐藏目录  开启你电脑的隐藏显示后即可看见

      版本库:  ".git"目录就是版本库,文件保存在此

   添加文件

      添加文件过程:

        在创建目录下 创建一个txt文件,右键文件

       

      

      这是文件变为带"+"号

        

      点击提交 即可将文件保存在版本库中

     

      

    当对文件进行修改后 文件会带号,我们需要再次提交进行更新,当然 我们也可以查看修改日志。也就是什么时候改过什么

      

     

   当文件内容修改后 需要和修改前比对修改那些内容时 可以使用"比较差异功能"

      

    

    可以将修改进行还原

     

     

        

注意:  此操作会撤销所有未提交的修改 所以 当做还原操作是需要慎重慎重的

    删除文件也可以通过git进行删除

    

 

 案例:将Java工程提交至仓库

    1、将参考资料中java工程复制到工作目录中

    

    2、将工程添加到暂存区

    

 

     将需要提交的文件选中

    

    

    还可以对文件或文件夹进行忽略操作:

      

      

      

      选择保留本地文件后 文件夹内会多出一个.gitignore文件 该文件就是忽略文件,也可以在其中将内容删除 来达到取消忽略的目的

    

远程仓库

  添加远程仓库

    常用的个人远程仓库就是gitHub了。我们就来演示一下将本地代码同步到github

    1、在github上创建仓库

    

    

    点击Create repository按钮仓库就能创建成功了

    github上支持两种同步方式"https"和"ssh"。如果使用httos则不需要配置即可使用

    使用ssh方式则需要由客户端生成秘钥 详细步骤下面来说

    首先我们需要知道什么是ssh协议,有什么用

      SSH不是框架中的ssh 而是Secure Shell(安全外壳协议),为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露问题。在使用时  你必须为自己创建一对秘匙,并把其中的公用密匙放在需要访问的服务器上,如果你要连接服务器 客户端会向服务器发送请求去请求你的密匙并进行安全验证。

     ssh秘钥生成:

      

      执行:  ssh-keygen -t rsa   然后一直回车即可 执行完成后会在C:\Users|用户名\.ssh默认目录下生成两个文件

      

      ssh秘钥配置:

      

      

      在key部分将id_rsa.pub文件内容添加进去 点击 "add ssh key" 按钮完成配置

    同步到远程仓库: 

      1、使用git Bash:

       在本地仓库文件中选择 

        

        然后在其中执行:

          git remote add origin git@github.com:sublun/mytest.git

          git push -u origin  master

        注意:红色字体部分替换为个人用户名

       如果出现如下错误:

        

        可以先执行: $  git remote rm origin

        

      2、 使用TortoiseGit同步

        由于TortoiseGit使用的ssh工具是"PuTTY" git Bash使用的ssh工具是"openSSH" 如果想让其生成秘钥:

          

          

        Url:远程仓库地址

        推送Url:也是远程仓库地址

        Putty秘钥:选择刚生成的秘钥中的私钥

       然后在本地仓库文件夹中点击右键 选择git同步

        

       

 

     从远程仓库克隆到本地,克隆后会创建一个新的本地仓库 选择 任意一个部署仓库的目录 然后克隆

      如果是使用Git bash则需要使用命令:  $  git clone git@github.com:sublun/mytest.git

      如果使用TortoiseGit则在任意目录下点击右键

        

      

      

    从远程仓库取代码:

      Git中从远程分支获取最新的版本到本地有这样2个命令:

        1.git fetch:相当于是从远程获取最新版本到本地 不会自动合并代码

        2.git pull:  相当于从远程获取最新版本并合并代码到本地

      在使用 git pull时需要考虑好是否需要进行代码合并

      如果使用TortoiseGit则右键菜单点击拉取或获取即可

        

  git搭建私服

    远程仓库实际上与本地仓库没什么不同,就是为了7*24小时开机并交换大家修改。

     GitHub是不能当做公司实际代码存储位置的 所以实际中还是需要自己搭建一台私有服务器

    步骤:

      私服考虑到效率,性能,系统稳定性等各方面因素 在linux下进行搭建

      1、安装git服务环境准备

      yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc

      2、下载Git压缩包, 压缩包在我百度网盘链接中有

        下载后解压缩,然后进入解压缩好的文件夹中

        cd git

        autoconf

        ./configure

        make

        male install

      3、添加用户

        adduser -r -c'git version control' -d /home/git -m git

        该命令执行后会创建/home/git 目录作为git用户的主目录

      4、设置密码

        passwd git  输入两次密码

      5、切换到git用户

        su git

      6、创建git仓库

        git --bare init/home/git/first

    注意: 如果不适用"--bare"参数 初始化仓库后 提交master分支时会报错,这是因为git默认会拒绝push操作 需要.git/config添加如下代码

      [receive]

        denvCurrentBranch = ignore

      推荐使用: git --bare init来初始化仓库

    搭建完成后就可以向连接github一样连接使用了,但是我们搭建的git服务器没有配置秘钥登录,所以每次连接时需要输入密码。

    使用命令连接:  

      $ git remote add origin ssh://git@192.168.25.156/home/git/first

      或: $  git remote add origin git@192.168.25.156:first

  分支管理

    创建或合并分支

      在每次提交,git都会将其串成一条时间线,这就是分支。每次提交  分支线就会越来越长

      我们也可以将在另一个分支上的工作合并在这条分支上 当另一个分支指向这条分支时就会进行合并了

      合并只需要改变其指针指向即可

    使用TortoiseGit管理分支:

      1、创建分支

        在本地仓库文件夹中右键 从菜单中选择"创建分支"

        

        如果想创建完毕后直接切换到新分支 可以勾选"切换到新分支"或从菜单中选择"切换/检出"进行切换

        

       合并分支

        分支切换后就可以对工作区中文件进行修改了,提交到dev分支时 原本master分支不受影响.

        

        合并时只需要右键菜单选择合并即可

        

      解决冲突

        两个分支中编辑内容是相互独立互不干扰的,如果两个分支同时对一个文件进行编辑然后在合并 就可能会出现冲突

        在进行合并提交时会报出合并错误

        

        冲突需要手动解决,在冲突文件上右键"解决冲突"

        

       注意: 在实际开发中需要与冲突代码的人员进行协商处理  不然可能会出现代码功能丢失的情况

        

      冲突解决完毕后就可以进行提交了

 

在IDEA中使用Git

    在开发工具IDEA中 如果Git安装在默认目录下 idea会自动找到git位置 如果更改了git的安装位置则需要手动配置git路径

    选择File----setting打开设置窗口,找到Version Control下的git选项:

    

    选择git安装目录后点击Test按钮测试是否正确配置

    

   将工程添加至git

    1、在Idea中创建一个工程

      

    2、创建本地仓库

      菜单中选择vcs ---- Import into Version Control ---- Create Git Repository

      

      

      选择好后 点击OK按钮,在工程的上级目录创建本地仓库,  则选中的目录就是本地仓库的工作目录

      选择之后 工具栏中就多出了git相关工具的按钮:

      

      将工程添加至本地仓库

      

      

      点击Commit按钮,将工程添加至本地仓库

    推送到远程仓库

      在工程上右键,选择git-Repository-push或在菜单中选择vcs-git-push

      

      

      点击Define remote连接 配置https形式的URL,git形式的无法通过 然后点击OK

      

      点击push按钮就会将本地仓库推送到远程 如果是第一次配置推送 则需要输出github用户名和密码

   从远程仓库克隆

      关闭工程后 在idea欢迎页面有"Check out from version control" 下拉框  选择git

      

      

      推荐使用https形式的url  点击test按钮后显示连接成功 点击ok按钮会将远程仓库克隆下来 倒入idea中    

    如果需要从服务端同步代码 可以使用工具条中Update按钮

      

  

posted on 2018-12-28 19:20  Sleep_Alone  阅读(195)  评论(0编辑  收藏  举报