• Git学习



    title: Git学习
    date: 2020-12-17 11:29:58
    tags: Git


    GIt学习

    简单了解

    版本控制

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

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

    简单说就是用于管理多人协同开发项目的技术

    版本控制分类

    本地版本控制

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

    集中版本控制 SVN

    所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。所有的版本数据都存在服务器上,用户的本地只有自己以前同步的版本,如果不连网的话,用户就看不到历史版本,也就无法切换版本验证问题,或在不同的分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然也可以定期备份。代表产品:SVN,CVS,VSS

    分布式版本控制 GIT

    每个人都拥有全部的代码,存在安全隐患。

    所有版本仓库信息全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。但是不会因为服务器损坏或者网络问题,造成不能工作的情况。

    Git与SVN的主要区别

    • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,

      从中央服务器得到最新的版本 --> 开始工作+完成工作 -->推送到中央服务器。

    • Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。

      自己在电脑上改了文件A / 其他人也在电脑上改了文件A,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!

    扩展:常用Linux命令

    Command
    cd 改变目录
    cd . . 回退到上一个目录,直接cd进入默认目录
    pwd 显示当前所在的目录路径
    touch 新建一个文件 如 touch index.js
    就会在当前目录下新建一个index.js文件。
    rm 删除一个文件, rm index.js 就会把index.js文件删除
    mkdir 新建一个目录,就是新建一个文件夹
    rm -r 删除一个文件夹, rm -r src 删除src目录
    mv 移动文件
    reset 重新初始化终端/清屏
    clear 清屏
    history 查看命令历史
    help 帮助
    exit 退出
    #表示注释

    Git配置

    查看配置

    git config -l #查看配置
    git config --system --list #查看系统config
    git config --global  --list #查看当前用户(global)配置
    

    配置文件

    • [Git安装目录]etcgitconfig Git 安装目录下的 gitconfig --system 系统级
    • C:UsersAdministrator .gitconfig 当前登录用户的配置 --global 全局

    必要配置

    git config --global user.name "userName"  #名称
    git config --global user.email 邮箱地址   #邮箱
    

    GIt基本理论

    三个区域

    Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。

    image-20201202180149360

    工作流程

    git的工作流程一般是这样的:

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

    2、将需要进行版本管理的文件放入暂存区域;

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

    因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

    Git项目搭建

    • 创建工作目录与常用指令

      • 工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文

      • 常用指令

    • 本地仓库搭建

      • 创建全新的仓库,

        # 需要用GIT管理的项目的根目录执行
        $ git init
        # 在当前目录新建一个Git代码库,执行后可以看到,仅仅在项目目录多出了一个.git目录,
        # .git目录:关于版本等的所有信息都在这个目录里面。
        
      • 克隆远程仓库

        # 克隆一个项目和它的整个代码历史(版本信息)
        $ git clone [url]  # https://gitee.com/kuangstudy/openclass.git
        

    Git文件操作

    • 文件的四种状态

      版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

      • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged
      • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
      • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
      • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
    • 查看文件状态

      #查看指定文件状态
      git status [filename]
      #查看所有文件状态
      git status
      # git add .                  添加所有文件到暂存区
      # git commit -m "消息内容"    提交暂存区中的内容到本地仓库 -m 提交信息
      
    • 忽略文件

      • 有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

      • 在主目录下建立".gitignore"文件,此文件有如下规则:

        • 忽略文件中的空行或以井号(#)开始的行将会被忽略
        • 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等
        • 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
        • 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
        • 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
        #为注释
        *.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
        !lib.txt     #但lib.txt除外
        /temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
        build/       #忽略build/目录下的所有文件
        doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt 
        

    完整流程

    1. 先进入项目文件夹,通过命令 git init 把这个目录变成git可以管理的仓库
    git init
    git add .
    git commit -m "描述" 
    git remote add origin git@github.com:yourname/仓库名.git  #把本地仓库提交至远程仓库
    git push -u origin master #进行第一次提交
    

    [git第一次提交代码至远程仓库][(21条消息) git第一次提交代码至远程仓库_技术空间-CSDN博客_git 提交到远程仓库]

    常用命令

    1、使用git之前的最小配置

    git config --global user.name 'your_name'
    git config --global user.email 'your_email@domain.com'
    # --global.--system,--local
    

    2、查看系统配置参数

    git config --list [--global]
    

    3、简便操作合集

    git add . #添加所在文件夹的所有文件到暂存区git add -u # 所有被git管理过的文件可以用-u代替git rm --cached <filename> #从暂存区中删除文件git commit -am "message" # 直接将工作区的文件推送到版本库中git commit -amend #对最近一次的提交的message进行变更
    

    4、查看版本演变

    git log --oneline # 一行内查看一次提交记录git log # 查看当前分支的历史git log --oneline [temp] # 查看其它分支的历史git log --oneline --all tempgitk --all# 图形界面工具来查看版本记录
    

    git进阶(已忘却,仅记录)

    1、探究.git目录

    HEAD	$ cat HEAD	ref: refs/heads/temp当前正在工作的分支是temp`git cat-file -t RSAID`查看文件类型`git cat-file -p ` pack 打包松散文件哈希值足以标识唯一即可
    

    2、 git的存储关系

    • commit 对应一颗树,存储当前状态的快照,所有文件及文件夹的快照
    • tree 文件夹
    • blob具体文件,根据文件内容来判断不是根据文件名
  • 相关阅读:
    element ui 表单清空
    element ui 覆盖样式 方法
    element ui 修改表单值 提交无效
    element ui 抽屉里的表单输入框无法修改值
    element ui 抽屉首次显示 闪烁
    css 左侧高度 跟随右侧内容高度 自适应
    PICNUF框架
    elementui 抽屉组件标题 出现黑色边框
    vue 子组件跨多层调用父组件中方法
    vue 编辑table 数据 未点击提交,table里的数据就发生了改变(深拷贝处理)
  • 原文地址:https://www.cnblogs.com/aspiration/p/15422762.html
Copyright © 2020-2023  润新知