GIT

一、版本控制

版本控制是一种在开发的过程中用于管理我们对文件,目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

优点:

  1. 实现跨区域多人协同开发
  2. 追踪和记载一个或者多个文件的历史记录
  3. 组织和保护你的源代码和文档
  4. 统计工作量
  5. 并行开发,提高开发效率
  6. 跟踪记录整个软件的开发过程
  7. 减轻开发人员的负担,节省时间同时降低人为错误

常见的版本控制工具:

  1. Git
  2. SVN

版本控制分类:

  1. 本地版本控制:记录文件每次的更新,可以对每个版本做一个快照或是记录补丁文件,适合个人用

    工具:RCS

  2. 集中版本控制:所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改

    工具:SVN

    优点:存放在服务器上,不用在本地存放,节省了空间

    缺点:如果遇到服务器问题则无法下载使用最新版

  3. 分布式版本控制:所有的版本信息仓库全部同步到本地的每个用户

    工具:git

    优点:每个人都有独立的备份,安全性高

    缺点:占用额外的存储空间,如果有人带着代码跑路,那么内容也就全部泄漏出去了

git与SVN的区别:

  1. 类型:SVN是集中式版本控制系统,git是分布式版本控制系统
  2. 是否有中央服务器:SVN有中央服务器,git没有中央服务器,每个人的电脑都是一个完整的版本库
  3. 是否需要网络:SVN必须联网,先联网下载最新的版本,完成工作后将完成的内容推送到服务器.git不用联网,因为版本都在自己的电脑上,协同的方式是,如果a,b两人的电脑都修改了文件A,只需要把各自的修改推送给对方,就可以互相看到对方的修改了.

二、git环境配置

  1. 下载(由于git的服务器在国外,我们直接下载比较慢,所以这里使用淘宝镜像):http://npm.taobao.org/mirrors/git-for-windows/

    版本:这里以2.25.1版本为例

  2. 一直点进行安装

  3. 完成后菜单下会有3个程序

    • Git Bash:Unix与Linux风格的命令行,使用最多
    • Git CMD:windows风格的命令行
    • Git GUI:图形界面的Git,不建议初学者使用
  4. 查看配置

    所有的配置文件都是保存在本地的

    #查看所有配置
    git config -l
    
    #查看用户配置(如果是新装的git,这里是没有数据的)
    git config --global --list
    
    #查看系统配置
    git config --system --list
    

    系统配置文件地址:gitetcgitconfig

    用户配置文件地址:C:Usersgcl.gitconfig(在自己c盘的用户下)

  5. 配置用户名和邮箱

    环境变量只是为了全局使用而已.git自动配置了环境变量

    git config --global user.name "name"  #用户名
    git config --global user.email 123456@test.com  #邮箱
    

三、git基本理论

  1. 工作区域

    git有三个工作区域:

    • 工作目录(working Directory)
    • 暂存区(Stage/Index)
    • 资源库(Repository)
    • 远程的git仓库(Remote Directory)

)

几个重要的概念:

  • Workspace:工作区,也就是你平时存放项目代码的地方(自己创建的本地项目)
  • Index/Stage:暂存区,用于临时存放你的改动,仅仅是一个文件,保存即将提交到文件列表的信息(在项目中的.git目录,是默认隐藏的文件夹)
  • Repository:仓库区(或本地仓库),也就是安全存放数据的位置,里面有你提交到所有版本的数据.其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据

注:本地的三个区域确切的说应该是git仓库中HEAD指向的版本

说明:

  • Direcoty:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间
  • WorkSpace:工作空间.需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间
  • .git:git的管理空间.存放Git管理信息的目录,初始化仓库的时候自动创建(隐藏)
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入reop之前,我们可以把所有的更新放在暂存区
  • local repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch,因为还有其它版本)
  • stash:隐藏,是一个工作状态保存栈,用于保存/恢复workSpace中的临时状态
  1. 工作流程

    • 在工作目录中添加,修改文件
    • 将需要进行版本管理的文件放入暂存区(git add)
    • 将暂存区的文件提交到仓库(git commit)

    分别对应三种状态:已修改(modified),已暂存(staged),已提交(committed)

四、git项目搭建

  1. 工作目录与常用指令

    工作目录:是你希望git帮助你管理的文件夹,可以是空目录

    常用指令:

  2. 本地仓库搭建

    (1).创建全新的仓库

    • 在需要git管理的项目的根目录执行

      #在当前目录新建一个git代码库
      git init
      
    • 执行后可以看到项目中多了一个.git目录,里面包含了版本等信息

    (2).克隆远程仓库:将远程服务器上的仓库完全镜像一份至本地(实用)

    git clone [url]
    
五、Git文件操作
  1. 文件的四种状态:版本控制就是对文件的版本控制,要对文件进行修改,提交等操作,首先要知道文件所处的状态,进而才能对其做相应的操作

    • untracked:未跟踪.该文件在文件夹中,但并没有加入到git仓库,不参与版本控制

      git add:状态变为Staged

    • unmodify:文件已经入库,未修改

      被修改:状态变为Modified

      git rm:文件被移出仓库,变为Untracked文件

    • modified:文件已修改

      git add:进入暂存Staged状态

      git checkout:丢弃修改,返回到Unmodify状态(实际上是从库中取出文件,覆盖当前修改)

    • staged:暂存状态

      git commit:将修改同步到库中,这时库中的文件和本地文件又编程一致,文件未Unmodify状态

      git reset HEAD filename:取消暂存,文件状态变为Modify状态

    注:本地仓库就在项目的.git目录下

  2. 查看文件状态

    #查看指定文件状态
    git status [filename]
    
    #查看所有文件状态
    git status
    
    #添加所有文件到暂存区
    git add .
    
    #提交暂存区的文件到本地仓库,-m用于提交一些追加的信息
    git commit -m "new file txt"
    
  3. 忽略文件

    在许多git的主项目下有一个.gitignore文件,该文件用于忽略一些不用纳入版本控制的文件,如:数据库文件,临时文件,设计文件等

    规则:

    • 表示注释

    • 可以使用linux通配符:*表示多个字符,?代表一个字符,[abv]代表可选字符范围,{str1,str2…}代表可选的字符串等
    • !表示例外规则,将不被忽略
    • /在前,表示要忽略的文件在此目录下,而子目录中的文件不被忽略
    • /在后,表示要忽略的是此目录下该名称的子目录,而非文件
    #为注释
    *.txt      #忽略所有.txt结尾的文件
    !lib.txt   #lib.txt除外
    /temp      #忽略项目根目录"/"下的所有TODO文件,但不包括temp目录
    build/     #忽略build/目录下的所有文件
    doc/*.txt  #忽略doc直接子目录下的.txt文件
    
六、使用码云
  1. 完善码云上的个人信息

  2. 设置本机绑定SSH公钥,实现免密码登陆

    • 本地ssh公钥地址:C:Usersgcl.ssh
    • 生成gitee公钥:ssh-keygen -t ras(这里的-t表示的是官方推荐的加密算法)
    • 成功后会在本地.ssh目录生成两个文件id_rsa.pub(公钥)和id_rsa(私钥)
    • 将对应生成的公钥添加到码云设置页面的ssh公钥下
  3. 新建一个仓库

    许可证:

    • 是否允许随意转载
    • 是否允许商业使用

注:

  • 可以使用gitlab搭建自己的远程仓库
  • 注意版权信息
  • 通常一个仓库对应一个
七、IDEA中集成git
  1. 新建项目,绑定git
    • 先将远程仓库clone到本地,这时本地会有一些包括.git的文件
    • 将.git等文件直接拷贝到项目中即可(相对比较简单的方法)
  2. 修改文件,使用IDEA操作git
    • git add添加到暂存区
    • commit提交
    • push到远程仓库
  3. 提交测试

注:

  • 文字的绿色标识表示文件被添加到了暂存区
  • 右上角有提交等操作
  • 左下角的Version Control可以查看仓库的全部信息
  • 建议用命令行
八、GIT分支

主要在多人开发中使用

常用指令:

#列出本地所有分支
git branch

#列出所有远程分支
git branch -r

#新建一个分支,但依然停留在当前的分支
git branch [branch-name]

#新建一个分支并切换到该分支
git checkout -b [branch]

#合并指定分支到当前分支
git merge [branch]

#删除分支
git branch -d [branch-name]

#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

使用:

  • 当一个仓库有多个开发者(该仓库必须为私有仓库)时,可以直接进行邀请添加
  • 对于每个人分属的不同模块单独创建分支
  • 当分支产生冲突时,需要协商保留哪个分支
  • 当正式对外发布时,将各个分支合并到master(主分支)
九、补充
  1. Git大全:https://gitee.com/all-about-git
  2. Git沙盒模拟:https://oschina.gitee.io/learn-git-branching/
原文地址:https://www.cnblogs.com/Arno-vc/p/13733962.html