git官网:https://git-scm.com/

1.安装

2.结构

  • 工作区(写代码) git add–> 暂存区(临时存储) git commit–> 本地库(本地存储)

3.Git和代码托管中心

  • 代码托管中心:维护远程库
    • 局域网环境下
      GitLab服务器
    • 外网环境下
      GitHub 码云

4.本地库和远程库

团队内部协作:

跨团队协作:

5.Git命令行操作

5.1 本地库初始化

Git init

5.2 设置签名

  • 形式:
    用户名:tom
    Email: 123.@as.com(写不存在的地址也没事)

  • 作用:区分不同开发人员的身份(这边的签名和登录远程库【代码托管中心】的账号和密码没有任何关系)

  • 命令:

    • 项目级别/仓库级别:仅在当前本地库范围内有效
      git config user.name tom
      git config user.email 123@as.com
      保存于项目目录下的 .git/config

    • 系统用户级别:登录当前操作系统的用户范围
      git config --global user.name tom
      git config --global user.email 123@as.com
      保存于系统用户目录下的 .gitconfig文件
      优先级:项目级别优先于系统级别,都有则采用项目级别

5.3 查看状态,添加提交

  • 命令:

    git status
    git add文件 添加到缓存区
    git rm –cache 文件 从缓存区移除
    git commit -m “xxx” 文件

5.4 查看历史记录

  • 命令:
    git log

附加参数:
git log --pretty=oneline

git log --oneline

git reflog

HEAD@{移动到当前版本需要的步数}

5.5 版本前进回退

  • 基于索引值操作(推荐)
    Git reset –hard [局部索引值]
    Git reset –hard 56fcccd

  • 使用^符号:只能往后退
    Git reset –hard HEAD^ 一个^符号表示后退一步

  • 使用符号
    Git reset –hard HEAD
    3(~加数字n表示后退n步)

  • Reset 3个参数比较:

    • soft
      仅仅在本地库移动HEAD指针
    • mixed
      在本地库移动HEAD指针
      重置暂存区
    • hard
      在本地库移动HEAD指针
      重置暂存区
      重置工作区

5.6 找回删除文件

  • 怎么删除
    Rm 文件(工作区删除) -> git add 文件(加入暂存区)-> git commit 文件(提交本地库)
  • 找回
    已提交本地库,reset到有文件的版本
    未提交本地库,reset到当前版本,刷新暂存和工作区 git reset –hard HEAD

5.7 文件比较

  • git diff 文件名
    工作区和暂存区比较
  • git diff [本地库中的历史版本] 文件名(56fcccd或者HEAD^)
    工作区和本地库比较
  • 不带文件名 比较多个文件

5.8 分支

  • 创建分支
    Git branch [分支名]
  • 查看分支
    Git branch -v
  • 切换分支
    Git checkout [分支名]
  • 合并冲突
    第一,切换到被合并的分支上 git checkout [被合并的分支名]
    第二,执行merge命令 git merge [新内容的分支名]
  • 解决冲突
    冲突的表现
  • 冲突的解决
    • 编辑文件,修改文件
    • git add [文件名]
    • git commit (不加文件名)

6.Git的基本原理

6.1哈希

  • 哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
    1.不管输入数据量多大,经过同一个hash算法加密,得到的加密结果长度固定
    2.哈希算法确定,输入数据确定,输出数值能够保证不变
    3.哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
    4.哈希算法不可逆
  • Git底层采用的是SHA-1算法。

6.2git保存版本的机制

6.2.1集中式版本控制工具的文件管理机制

6.2.2 git的文件管理机制

6.2.3 git文件管理细节

  • git的提交对象
  • 提交对象及其父对象形成的链条

6.3git分支管理机制

6.3.1分支的创建

6.3.2分支的切换



7.GitHub

7.1 创建远程库

7.2 起别名

git remote add [别名] [地址]

7.3 推送操作

git push [远程库别名/地址] [分支]

7.4 克隆

  • 完整的吧远程库下载到本地
  • 创建origin远程库别名
  • 初始化本地库
    Git clone [地址]

7.5 添加项目成员

7.6 远程库拉取

  • 先fetch
  • 后merge
  • 总结:
    • Pull = fetch + merge
    • git fetch [远程库地址别名] [远程分支名]
    • git merge [远程库地址别名/远程分支名]
    • 不容易产生冲突的话,可以直接pull : git pull origin master

7.7 解决冲突

  • 要点:
    如果不是基于GitHub远程库最新版所作的修改,不能推送,必须先拉取。
    拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。

7.8 跨团队协作

  • fork

7.9 SSH登录

  • 进入当前用户目录
    $cd ~
  • 删除.ssh目录
    $rm -rvf .ssh
  • 运行命令生成.ssh密钥目录
    $ssh-keygen -t rsa -C [用户邮箱]
  • 进入.ssh目录查看文件列表
  • 查看id_rsa.pub文件内容
    $cat id_rsa.pub
  • 复制id_rsa.pub文件内容,登录GitHub,点击用户头像–>settings–>SSH and GPG keys
  • New SSH Key
  • 输入复制的密钥信息
  • 回到GitHub创建远程地址别名
    $git remote add origin_ssh git@github.com:fairy7/huashan.git
  • 推送文件进行测试



8.Idea上使用git

  • 设置git路径

8.1创建本地库

8.2 加入.ignore插件,项目内部加入.gitignore文件

  • 注:全局ignore方式(路径使用“/”)

8.3 添加远程库

9.Git工作流

9.1概念

  • 在项目开发过程中使用git的方式

9.2分类

  • 集中式工作流
  • GitFlow工作流(多数)
  • Forking工作流

9.3 gitflow工作流详解

  • 举例
  • 分支实战

10.GitLab

10.1下载安装

  • rpm -vif gitlab-ce-12.7.2-ce.0.el7.x86_64.rpm
  • 然后按照官网给的安装步骤进行:
  • 可以整理成bash文件直接运行(安装前可以拍个快照)
  • 走完后reboot。

10.2GitLab服务操作

  • 初始化配置gitlab
    gitlab-ctl reconfigure
  • 启动gitlab服务
    gitlab-ctl start
  • 停止gitlab服务
    gitlab-ctl stop

10.3浏览器访问

  • 访问Linux服务器IP地址即可,如果想访问EXTERNAL_URL指定的域名还需要配置域名服务器或本地hosts文件。
  • 初次登录时需要为gitlab的root用户设置密码。
  • 注意防火墙