Git 基础 & GitHub【学习笔记】

avatar
作者
筋斗云
阅读量:0

一、Git 优势

  • 大部分操作在本地完成,不需要联网
  • 完整性保证
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与 Linux 命令全面兼容

二、Git 程序安装

https://git-scm.com

三、Git 结构

git addgit commit 工作区--写代码 暂存区--临时存储 本地库--历史版本

四、Git 和 代码托管中心

  • 局域网环境下
    • GitLab 服务器
  • 外网环境下
    • GitHub
    • 码云

五、本地库和远程库

  • 团队内部协作

    pushclonepush-'加入团队'pull 本地库1 远程库 本地库2
  • 跨团队协作

    forkclonepushmerge <- 审核 <- pull requestpullpull 远程库1 远程库2 本地库2-1 本地库1-1 本地库1-2

六、Git 命令行操作

1、本地库初始化

  • 命令:git init
  • 效果:在这里插入图片描述
  • 注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要随意修改

2、设置签名

  • 形式:
    • 用户名
    • Email 地址
  • 作用:区分不同开发人员的身份
  • 辨析:这里的签名与登录远程库(代码托管中心)的账号密码没有任何关联
  • 命令:
    • 项目级别 / 仓库级别:仅在当前本地库范围内有效
      • git config user.name abcdefg
      • git config user.email abcdefg_pro@123.com
      • 信息保存位置:./.git/config
    • 系统用户级别:登录当前操作系统的用户范围
      • git config --global user.name abcdefg
      • git config --global user.email abcdefg_pro@123.com
      • 信息保存的位置:~/.gitconfig
    • 优先级:(就近原则)项目级别 > 系统用户级别

3、基本操作

  • 状态查看操作
    git status
    查看工作区、暂存区状态
  • 添加操作
    git add [file name]
    将工作区的“新建/修改”添加到暂存区
  • 提交操作
    git commit -m 'commit message' [file name]
    将暂存区的内容提交到本地库
  • 查看历史记录
    git log(多屏显示控制方式:空格向下翻页;b 向上翻页;q 退出)
    git log --pretty=oneline
    git log --oneline
  • 前进后退
    • 本质
      git reflog
    • 基于索引值操作(推荐)
      git reset --hard [局部索引值]
    • 使用 ^ 符号:只能往后退
      git reset --hard HEAD^
      一个 ^ 表示后退一步,n 个表示后退 n 步
    • 使用 ~ 符号:只能后退
      git reset --hard HEAD~n
      表示后退 n 步
  • reset 命令的三个参数对比
    • soft 参数:仅仅在本地库移动 HEAD 指针
    • mixed 参数:在本地库移动 HEAD 指针,并重置暂存区
    • head 参数:在本地库移动 HEAD 指针,并且重置暂存区和工作区
  • 删除文件并找回
    • 前提:删除前文件存在是的状态提交到了本地库
    • 操作:git reset --hard [指针位置]
  • 比较文件差异
    git diff [文件名]:将工作区中的文件和暂存区进行比较
    git diff [本地库中历史版本]:将工作区中的文件和本地库历史记录比较
    不带文件名比较多个文件

4、分支管理

在版本控制过程中,使用多条线同时推进多个任务。

好处:

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果其中一个分支失败不会对其他分支产生任何影响
分支操作
  • 创建分支
    git branch [分支名]
  • 查看分支
    git branch -v
  • 切换分支
    git checkout [分支名]
  • 合并分支
    • 切换到接受修改的分支上(被合并、增加新内容)上
      git checkout [被合并分支名]
    • 执行 merge 命令
      git merge [有新内容分支名]
  • 解决冲突
    • 编辑文件,删除特殊符号
    • 把文件修改到满意程度,保存退出
    • git add [文件名]
    • git commit -m "日志信息"(此时 commit 不能带任何文件名)

七、Git 基本原理

哈希

  • 不论输入的数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
  • 哈希算法确定,输入数据确定,输出数据能够保持不变
  • 哈希算法确定,输入数据在变化,输出数据一定变化,而通常变化很大
  • 哈希算法不可逆

Git 底层采用的是 SHA-1 算法

原理:

SHA-1SHA-1 原始文件 2f9a352d8291ccbeea00628489141e45fd081a 网络传输 目标文件 8369f40251df6eb213d0a92a5b0390e5c8805b4d 对比 -> 不一致 -> 目标文件有损坏

八、GitHub

1、创建远程库

New repository Repository name Create repository

2、在本地创建远程库地址别名

git remote -v:查看当前所有远程地址别名

git remote add [别名] [远程库https地址]

3、推送操作

git push [别名] [分支名]

4、克隆

  • 命令:
    git clone [远程地址]
  • 效果:
    • 完整地把远程库下载到本地
    • 创建 origin 远程地址别名
    • 初始化本地库

5、拉取

  • pull = fetch + merge
  • git fetch [远程库地址别名] [远程分支名]
  • git merge [远程库地址别名/远程分支名]
  • git pull [远程库地址别名] [远程分支名]

6、解决冲突

如果不是最新推送,必须先拉取

7、跨团队协作

  • 点击 Fork

  • 本地修改,然后推送到远程

  • Pull Request New pull request Create pull request Pull Request commits Files changed Conversation Merge pull request Confirm merge
  • 对话

  • 审核代码

  • 将远程库拉取到本地

8、SSH 登录

  • 进入当前用户的加目录
    cs ~

  • 删除 .ssh 目录
    rm-rvf .ssh

  • 运行命令生成 .ssh 密钥目录
    ssh-keygen -t rsa -C abcdefg@123456.com
    [注意这里 -C 这个参数是大写]

  • 进入 .ssh 目录查看文件列表
    cd .ssh
    ls - lF

  • 查看 id_rsa.pub 文件内容
    cat id_rsa.pub

  • 复制 id_rsa.pub 文件内容,登录 GitHub

    用户头像 Settings SSH and GPG keys
  • New SSH Key

  • 输入复制的密钥信息

  • 回到 Git hash 创建远程地址别名
    git remote add origin_ssh git@github.com:abcdefg@123456/[项目名称].git

  • 推送文件进行测试

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!