• Git操作说明


    Day15 Git 课堂笔记

    1 Git 介绍

    Git 是一款开源免费的分布式的版本控制系统。是 Linux 之父 Linus Torvalds(林纳斯·托瓦兹)为了方便管理 linux 代码代码而开发的。

    Git 可以实现的功能:

    • 代码备份

    • 版本回退

    • 多人协作

    • 权限控制

    Git 工具下载地址:https://git-scm.com/

    GIt 官方文档地址:https://git-scm.com/book/zh/v2

     

    2 Git 准备工作

    2.1 常用 Linux 操作

    ① 常用 Linux 命令

    ls      列出当前目录下所有的文件和目录
    命令选项:
    -a 列出当前目录下的包括隐藏文件在内的所有文件和目录
    -l 列出当前目录下的文件和目录的详细信息
    -al 列出当前目录下的包括隐藏文件在内的所有文件和目录的详细信息


    cd 目录路径 进入指定的目录
        cd .. 表示进入上一个目录
       

    mkdir 目录名 创建一个目录

    touch 文件名 创建一个文件

    cat 文件名 快速读取文件中的内容(适合文件中的内容不是太多)

    mv 旧的名字 新的名字 重命名文件或目录

    rm -rf 路径 删除文件或目录

    clear 清空当前的命令行工具

    ② 常用快捷键

    tab     路径补全

    ctrl + L 清空当前的命令行工具

    ctrl + C 结束当前正在执行命令

    键盘上下方向键 查看历史命令

    2.2 Vim 的使用

    vim 可以用来读取、编辑文件内容,使用 vim 命令打开文件。

    如果 vim 打开的文件的不存在,会自动创建。

    vim 文件名

    vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

     

    ① 命令模式

    vim 文件名 打开文件之后,进入的就是命令模式; 在命令模式下不可编辑内容。

    常用命令:

    • i 命令,可以进入输入模式。

    • x 命令,删除当前光标后面的字符。

    • : 命令,可以进入底线命令模式。

    ② 输入模式

    在命令模式下,输入 i 命令可以进入输入模式,

    在输入模式下,可以编辑文本内容。

    ESC 可以退出输入模式,回调命令模式。

    ③ 底线命令模式

    在命令模式下,输入 : 可以进入底线命令模式。

    在底线命令模式下,可以进行保存或退出。

    • w 命令,保存。按完回车执行,回到命令模式。

    • q 命令,退出,如果没有没存是无法退出的,如果要强制退出,可以使用 q!,可以不保存就退出。

    • wq 命令,保存并退出。可以使用 wq! 表示强制保存并退出。

     

     

    3 Git 基础概念

    3.1 .git 目录 仓库目录

    • hooks 目录包含客户端或服务端的钩子脚本,在特定操作下自动执行。

    • info 包含一个全局性排除文件,可以配置文件忽略。

    • logs 保存日志信息。

    • objects 目录存储所有数据内容,本地的版本库存放位置。

    • refs 目录存储指向数据的提交对象的指针(分支)。

    • config 文件包含项目特有的配置选项。

    • description 用来显示对仓库的描述信息。

    • HEAD 文件指示目前被检出的分支。

    • index 暂存区数据。

    切记: 不要手动去修改 .git 文件夹中的内容。

     

    3.2 Git 仓库的三个区域

    • 工作区 (代码编辑区)

    • 暂存区 (修改待提交区)

    • 版本库(代码保存区)

     

    4 Git 基础命令总结

    4.1 初始化配置

    git 工具安装完成之后,要先进性一次初始化配置;只配置一次集合,以后不需要配置。

    git config --global user.name "Your Name"
    git config --global user.email "email@example.com"

    如果要查询配置的情况,可以使用以下命令:

    git config -l

    4.2 仓库初始化

    git init

    每个项目都要进行一个仓库初始化,通过仓库的初始化可以创建与该项目对应的仓库。

    会在当前的目下创建一个 .git 目录,.git 目录是个·隐藏文件,该目录就是仓库目录。

    4.3 查看状态

    git status

    4.4 添加暂存区

    git add <file>  # 添加指定文件到暂存区
    git add -u   # 提交所有被删除或被修改的文件到暂存区(不包括新增文件)。
    git add .   # 提交所有修改和新建的文件到暂存区(不包括删除的文件)。
    git add -A   # 提交所有被删除、被替换、被修改和新增的文件到暂存区。 推荐!!!

    4.5 提交版本库

    git commit -m '注释信息'    # 提交暂存区到版本库并注释。 
    git commit -a -m '注释'    #一步添加且提交修改。(新增的文件不会提交)

    4.6 查看暂存前后具体的变化

    git diff    # 查看工作区(没有添加缓存的)和版本库的差异 (不会显示新添加的文件)
    git diff --cached # 查看暂存区和版本库的差异

    4.7 撤销修改和撤销暂存

    git resotre <file>  # 撤销工作区中的修改,指定文件,会与版本库对比 (无法撤销新增的文件)
    git restore . # 撤销工作区中所有的修改;会与版本库对比 (无法撤销新增的文件)

    git restore --staged <file> # 指定文件,把修改从暂存区撤销
    git restore --staged . # 把所有修改从暂存区撤销
    # 旧的 git 命令
    git checkout -- <file>  # 同 git restore <file> 作用一致
    git checkout -- .   # 同 git restore . 作用一致

    4.8 历史版本回滚

    ① 查看历史版本号

    git log     # 查看所有历史版本号
    git log -n # 查询最近的前 n 次提交的版本号;n 是数字。
    git log --oneline # 查询所有历史版本号,在一行显示;版本号只显示前七位
    git reflog  # 查看包括已删除的版本在内所有的历史版本号!

    ② 通过指定版本号回滚

    git reset --hard b815fd5a6ae655b521a31a9

    注意:

    进行版本回退时,不需要使用完整的 commitId(版本号),前七位即可。

    版本切换之前,要提交当前的修改状到仓库。

    ③ 快捷回滚

    git reset --hard HEAD^    # 恢复到上个版本
    git reset --hard HEAD^^    # 恢复到上上个版本
    git reset --hard HEAD^^^    # 恢复到上上上个版本

     

     

    5 忽略文件

    5.1 被忽略的文件

    项目目中有些文件是不需要进入版本库中,比如编辑器的配置。

    忽略文件的原则是:

    1. 忽略操作系统自动生成的文件,比如缩略图等;

    2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如 Java 编译产生的.class文件;

    3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

    5.2 设置忽略文件 .gitignore

    在该文件中配置想要忽略的文件

    该文件可以放在项目内的任意目录下,放在哪个目录只对哪个目录以及子目录进行设置。

    通常,忽略文件放在项目目录下。

    5.3 忽略文件的语法

    1. 空格不匹配任意文件,可作为分隔符,可用反斜杠转义。(空格没意义)

    2. # 开头的文件标识注释,可以使用反斜杠进行转义。

    3. ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义。

    4. / 结束的模式只匹配目录以及在该目录路径下的内容。(不加也可以)

    5. / 开始的模式匹配当前目录下的,(.gitignore 文件所在的目录)

    6. ** 匹配多级目录,可在开始,中间,结束。

    7. * 匹配任意数量的任意字符串。

    8. ? 通用匹配单个字符。

    9. [] 通用匹配单个字符列表。

    以用git check-ignore <file> 命令检查 .gitignore文件格式是否正确。

    git check-ignore .gitignore

    5.4 忽略文件配置示例

    # 忽略 readme.md 文件 (目录下自己子目录所有的 readme.md)
    readme.md

    # 忽略当前目录下的 readme.md
    /readme.md

    # 忽略所有以 html 为后缀的文件
    *.html

    # 忽略当前目录下 以 html 为后缀的文件
    /*.html

    # 忽略目录
    configs/

    # 忽略当前目录下的 指定目录
    /configs/


    # 忽略所有的 以html为后缀的文件,除了 index.html
    *.html
    !index.html

    # ? 匹配一个任意字符; * 匹配任意数量的任意字符
    ??.html

    # .html 的前面只能有一个字符,该字符可以是 a、b或c
    [abc].html


    # 忽略 static 目录下的 以html为后缀的文件(只是static目录下,不包括子目录)
    static/*.html

    # 忽略 static 下以及子目录下 以 html 为后缀的文件
    static/**/*.html

     

    6 Git 分支

    6.1 分支介绍

    分支并非 Git 的专利,几乎所有的版本控制系统都以某种形式支持分支。

    使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

    分支

    6.2 分支操作

    ① 创建分支

    git branch <nmae>

    ② 切换分支

    git switch <nmae>
    # 或者
    git checkout <name>

    ③ 创建并切换到该分支

    git switch -c <name>
    # 或者
    git checkout -b <name>

    ④ 查看分支

    git branch

    ⑤ 删除分支

    git branch -d <name>    # 分支能被删除的前提是,以及合并到了其他分支
    git branch -D <name> # 强制删除分支

    ⑥ 合并分支

    git merge <name>    # 把指定的分支合并到当前分支
    git merge <name1> <name2> <name3> # 合并多个分支到当前分支

    把 shopcart 分支合并到 dev 分支,本质会在 dev 分支上做一次提交。

    shopcart 在合并到 dev 之前,一定要把自己的修改都提交的。

    6.3 合并分支冲突解决

    发生冲突的原因: 两个分支对同一个文件进行了修改,合并的时候必然冲突。

    解决冲突: 合并之后,处于 mergeing 状态,手动修改代码解决冲突,添加并提交。

     

     

    7 GitHub - Git 远程仓库

    7.1 GitHub 介绍

    Hub 是一个代码仓库的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。可以创建远程中心仓库,为多人合作开发提供便利。

    目前,其注册用户已经超过 350 万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python等。

    2018 年 6 月 4 日,微软宣布,通过 75 亿美元的股票交易收购代码托管平台 GitHub。

    网址:https://github.com

    从搜索框,输入,可以查看星数十万以上,会从高到低排列

    stars:>100000

     

     

    7.2 GitHub 使用流程

    ① 场景一: 本地有仓库 远程没有仓库

    1. 注册并登陆 GitHub 账号。

    2. 在GitHub上,创建远程仓库。

    3. 获取远程仓库的地址。

    4. 本地配置远程仓库的地址

      git remote add origin  https://github.com/unclealan/test2.git
      
      # 如果地址添加错了,需要删除再重新添加
      git remote rm origin  # 删除 origin

      origin 相当于 地址的别名

    5. 本地提交(保证在进行同步之前,本地已经提交)

    6. 向远程仓库推送

      git push -u origin master

      -u origin 可以记录远程仓库的地址,以后推送的的时候只运行 git push 即可

      master 表示提交到远程仓库的 master 分支。

     

    ② 场景二: 本地没仓库 远程有仓库

    1. 注册并登陆 GitHub 账号。

    2. 获取远程仓库的地址。

    3. 把远程仓库克隆到本地

      git clone  https://github.com/unclealan/test2.git
    4. 本地可以进行 push 操作以及 pull 操作。 无需再指定地址,因为克隆的时候自动指定了。

     

    7.3 多人合作

    ① 创建组织配置权限

    首页 -> 右上角 `+` 号 -> new Organization
    免费计划
    填写组织名称和联系方式(不用使用中文名称)
    邀请其他开发者进入组织(会有邮件邀请,==如收不到,请查看垃圾箱==)
    配置组织权限,组织首页右侧  settings -> Member privileges -> 选择 write

    ② 多人合作工作流程

    第一天:

    1. 克隆远程仓库
    2. 进行本地操作,修改代码,添加提交,分支操作
    3. 下班之前 先 git pull
    4. 最后 git push

    推送的时候一定先拉取。

    如果远程仓库的版本比本地版本高,是无法推送的。所以一定先拉取。

    第二天:

    1. 早上 git pull
    2. 进行本地操作
    3. 下班之前 先 git pull
    4. 最后 git push

    ③ 冲突解决

    冲突原因: 两个人向同一个分支提交,修改了相同的文件; 第一推送的会成功推送,第二个人在拉取的时候就会报错。

    解决冲突: 手动修改代码,再次添加提交(远程仓库的分支就可以合并到本地分支)。

     

    7.4 GitHub 免密登录

    1. 在本地创建密钥对

      ssh-keygen -t rsa -C "xxx@xxx.com"
    2. 文件默认存储在家目录(c:/用户/用户名/.ssh)的 .ssh 文件夹中。

      • id_rsa 私钥

      • id_rsa.pub 公钥

    3. 将公钥(.pub)文件内容配置到账号中

      首页 -> 右上角头像-> settings -> SSH and GPG keys -> new SSH Key

    4. 使用 git 协议的远程仓库地址 git@github.com:unclealan/Myproject03.git

    5. 以后就可以免密操作

     

    8 GitFlow - Git 开发流程

     

     

    • Master 主分支。上面只保存正式发布的版本

    • Hotfix 线上代码 Bug 修复分支。开发完后需要合并回Master和Develop分支,同时在Master上打一个tag

    • Feather 功能分支。当开发某个功能时,创建一个单独的分支,开发完毕后再合并到 dev 分支

    • Release 分支。待发布分支,Release分支基于Develop分支创建,在这个Release分支上测试,修改Bug

    • Develop 开发分支。开发者都在这个分支上提交代码

     

     

     

     

  • 相关阅读:
    C#中List<T>用法
    windows phone中,将crash report记录下来,写入文件,方便分析
    解决问题之,wp项目中使用MatchCollection正则表达式匹配出错
    提问的智慧
    toolkit,phonetextbox中实现用户按回车键会换行
    Hibernate主键生成策略
    hibernate.cfg.xml位置及JDBC配置
    Java与数字签名
    MyEclipse不能编译的一种解决方法
    java读文件和写文件编码方式的控制
  • 原文地址:https://www.cnblogs.com/xincheng-1999/p/14050210.html
Copyright © 2020-2023  润新知