zoukankan      html  css  js  c++  java
  • Git

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

    1、版本控制

    • 概念

      • 用于管理多人协同开发的技术

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

    • 优点

      • 实现跨区域多人协同开发

      • 追踪和记载一个或者多个文件的历史记录

      • 组织和保护源代码和文档

      • 统计工作量

      • 并行开发,提高开发效率

      • 跟踪记录整个软件的开发过程

      • 减轻开发人员的负担,节省时间,同时降低人为错误

    • 常见的版本控制工具

      • Git

      • SVN(Subversion):版本控制

      • CVS(Concurrent Versions System):并发版本系统

      • VSS(Microsoft Visual Sourcesafe)

      • TFS(Team Foundation Server):团队基本服务器

      • Visual Studio Online

    • 版本控制分类

      • 本地版本控制

        • 记录文件每次的更新,可以对每个版本做一个快照或是记录补丁文件,适合个人用,如RCS

        • 缺点:

          不能实现团队合作

      • 集中版本控制:SVN

        • 所有的版本控制都保存在服务器上,协同开发者从容器上同步更新或上传自己的修改

        • 缺点:

          • 所有的版本数据都在服务器上,用户的本地只有自己以前所同步的版本,如果不联网的话,用户看不到历史版本,也无法更新最新版本或在不同分支合作

          • 所有的数据都保存在单一服务器上,有很大的数据丢失的风险

      • 分布式版本控制:Git

        • 所有的版本信息仓库全部同步到用户本地上,这样就可以在本地查看所有的历史版本,可以离线在本地提交,只需在联网时push到相应的服务器或其他用户那里

        • 只要有一个用户的数据没有问题就可以恢复所有的数据

        • 缺点:

          增加了本地存储空间的占用

    • Git和SVN区别

      • SVN

        • 集中式版本控制系统

        • 版本库集中放在中央服务器

        • 联网才能工作

        • 协同工作时,首先从中央服务器上获得最新的版本,完成工作后,把最新的版本推送到中央服务器,对方从服务器上下载新版本,才能看到修改

      • Git

        • 分布式版本控制系统

        • 没有中央服务器,每个人的电脑就是版本库

        • 不需联网

        • 协同工作时,若修改了文件,只需把新版本推送给对方,对方就可以看到修改,无需推送到服务器

     

    2、Git的历史

    • Linux 和 Git之父:李纳斯·托沃兹

    • 李纳斯·托沃兹 创造了Linux系统后,在1991 - 2002 年期间,整个Linux内核维护工作都花在了提交补丁和保存归档这些繁琐的事情上。

    • 2002年,整个项目组开始启用一个专门的分布式版本控制系统,BitKeeper来管理和维护代码

    • 2005年,Linux内核开源社区和BitKeeper的公司合作关系结束后,李纳斯·托沃兹用了两周的时间开发出了自己的版本系统,也就是Git

     

    3、Git的安装及配置

    • 下载

    • 卸载:(以前安装过可卸载)

      • 控制面板,卸载

      • 清除环境变量

    • 安装

      • 无脑 next 即可

      • 注意两点:

        • 安装地址,尽量不要安装到C盘

        • 有个文档编辑器,可选择自己电脑上安装的编辑器,也可以默认不做修改

      • 安装成功后

        • 在开始菜单中会有Git项

        • 在任意文件夹下点击鼠标右键,也可以看到Git的程序

      • Git Bash:Unix与Linux风格的命令行,使用最多

      • Git CMD:Windows风格的命令行

      • Git GUI:图形界面的git

       

    • 环境配置

      • 环境变量的配置是为了全局使用

      • 安装Git成功后默认系统会自动在环境变量中配置

       

    4、常用的Linux命令

    • cd :改变目录

    • cd... :回退到上一个目录

    • pwd :显示当前所在的目录路径

    • ls :列出当前目录中的所有文件

    • touch :新建一个文件

    • rm :删除一个文件

    • mkdir :新建一个文件夹

    • rm -r :删除一个文件夹

    • mv :移动文件,mv index.html test,把index.html移动到test文件夹下

    • reset :重新初始化终端/清屏

    • clear :清屏

    • history :查看命令历史

    • exit :退出

    • #表示注释

     

    5、Git配置

    • git config -l :查看git的全部配置

    • git config --system --list :查看系统的配置

      系统配置的文件在:安装Git的目录下的 Gitetcgitconfig里

    • git config --global --list :查看用户自己的配置

      用户自定义的配置的文件在:C:Users用户名下的 .gitconfig 文件里

    • 设置自己的用户名和邮箱(必须要做)

      • git config --global user.name "用户名"

      • git config --global user.email 邮箱

     

    6、Git工作区域

    • Git 的工作区域

      • 工作目录:(Working Directory)

        • 项目在电脑上存放的目录

      • 暂存区:(Stage/index)

        • 用于临时存放项目的改动

        • 只是一个文件,保存即将提交的文件列表信息

      • 资源库(本地仓库):(Repository或Git Directory)

        • 安全存放数据的位置,里面有提交的所有版本的数据

        • HEAD指向最新放入仓库的版本

      • 远程的Git 仓库:(Remote Directory)

        • 托管代码的服务器

    • 工作区域图如下:

    • Git 的工作流程

      • 1、在工作目录中添加、修改文件

      • 2、将需要进行版本管理的文件添加到暂存区

      • 3、将暂存区域的文件提交到git仓库

     

    7、Git项目搭建

    • 本地仓库搭建

      • 创建全新的仓库

        在需要用Git 管理的项目的根目录中执行以下语句:git init

        执行后文件夹中多出了一个 .git 文件夹,关于版本的所有信息都在这个文件夹里

    • 克隆远程仓库

      • 将远程仓库中的镜像完全复制一份到本地

      • 在Gitee或者GitHub上复制这个项目的url

      • 输入以下命令并运行,即可

        git clone url

     

    8、Git文件操作

    • 文件的4种状态

      • Untracked:未跟踪

        • 此文件在文件夹中,但是没有被git管理

        • 通过 git add files 命令变成 Staged状态

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

        • 版本库中的文件快照内容与文件夹内容完全一致

        • 若此时文件被修改,状态变为 Modify

        • 如果使用 git rm 命令移除版本库,状态变成Untracked

      • Modify:文件已修改

        • 通过 git add files 可以变成Staged状态

        • 通过 git checkout 可丢弃修改,退回到UnModify状态

      • Staged:暂存状态

        • 执行 git commit 将修改同步到库中,此时库中的文件和本地的文件又变为一致,转变成 UnModify 状态

        • 执行 git reset HEAD filename 取消暂存,文件变成Modify状态

    • 查看指定文件状态:git status filename

    • 查看所有文件状态:git status

    • 把文件添加到暂存区中:git add .

    • 把文件提交到本地仓库中:git commit -m "注释信息"

    • 忽略文件

      • 有时候不想把某些文件纳入到版本控制中,比如数据库文件、临时文件、设计文件等等,在主目录下建立 “.gitignore” 文件,此文件的规则如下:

        • 1、文件中的空行将被忽略

        • 2、以#开头的内容将被忽略

        • 3、可以使用Linux通配符:

          • *代表任意多个字符

          • ? 代表一个字符

          • []代表可选字符的范围

          • {}代表可选的字符串范围

        • 4、! 后面跟的内容将不会被忽略

        • 5、/ + 文件名,要忽略的文件在此目录下,而子目录中的文件不会被忽略

        • 6、文件名 + /,要忽略的是此目录下该名称的子目录

          //忽略所有以 .txt结尾的文件
          *.txt
          //lib.txt不被忽略
          !lib.txt
          //忽略和build在同一级目录下的其他文件
          /build
          //忽略build目录下的所有文件
          build/

     

    9、码云的使用

    • 三种码云

      GitHub、Gitee、公司自己搭建的Github

    • Github 和 Gitee的注册和使用

      • 1、注册账号,完善个人信息

      • 2、设置本机绑定SSH公钥,实现免密码登录

        • 不设置免密码登录的话,每次提交到远程仓库都需要密码

        • 使用命令行生成公钥

          • Github:ssh-keygen -t rsa -C "邮箱地址",一路回车到生成密钥

          • Gitee:ssh-keygen -t rsa,一路回车到生成密钥

          • 生成的文件在:C:Users用户名.ssh中,有两个文件

            • id_rsa

            • id_rsa.pub

          • 把公钥配置在码云中

            打开.ssh文件中的id_rsa.pub,把文件中的内容复制到Github或者Gitee里的

            个人信息设置 ---> 公钥设置 ---> SSH公钥设置中

      • 3、创建远程仓库

     

    10、关于Git分支说明

    • Git分支中常用指令

      • 列出所有本地分支:git branch

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

      • 新建一个分支,但依然停留在当前分支:git branch branchName

      • 新建一个分支,并切换到该分支:git checkout -b branchName

      • 合并分支到当前分支:$ git merge branchName

      • 删除分支:$ git branch -d branchName

      • 删除远程分支:

        $ git push origin --delete branchName

        $ git branch -dr branch/remote

     

    Git大全

    Git大全

  • 相关阅读:
    java中判断文件存在与否
    crontab安装以及定时任务的执行
    su命令学习
    linux中如何查看哪些用户允许登录
    linux中的压缩文件的格式
    R语言学习(瑞士军刀)
    linux下mysql导入导出sql文件
    创建线程池的7种方法
    docker运行tomcat
    Docker之镜像
  • 原文地址:https://www.cnblogs.com/LittleSkinny/p/13697069.html
Copyright © 2011-2022 走看看