zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    关系抽取 ---远程监督 ---《Improving Distantly-Supervised Relation Extraction with Joint Label Embedding》
    关系抽取 ---远程监督 ---《Multi-Level Structured Self-Attentions for Distantly Supervised Relation Extraction》
    关系抽取 ---远程监督 (一种基于word-level的sentence内部去噪)---《Neural Relation Extraction via Inner-Sentence Noise Reduction and Transfer Learning》
    关系抽取 ---远程监督 ---《Ranking-Based Automatic Seed Selection and Noise Reduction for Weakly Supervised Relation Extraction》
    关系抽取 ---远程监督 ---《Distant Supervision for Relation Extraction with Sentence-Level Attention and Entity Descriptions》
    关系抽取 ---远程监督 ---《Robust Distant Supervision Relation Extraction via Deep Reinforcement Learning》
    Object类和对象类型转换
    通过使用5个开源的人脸识别项目来增加你的计算机视觉项目经历
    如何使用Python创建AI虚拟助手
    视觉测试工具箱
  • 原文地址:https://www.cnblogs.com/Arno-vc/p/13733962.html
Copyright © 2011-2022 走看看