GitGitub笔记

本文详细介绍了Git作为版本控制工具的功能,包括协同修改、数据备份、版本管理和权限控制。重点讲解了Git的历史、优势和基本结构。进一步,文章深入讨论了Git的命令行操作,如初始化本地库、设置签名、提交文件、版本控制、分支管理和与GitHub的远程管理。内容涵盖从创建GitHub仓库到拉取远程库的所有流程。
摘要由CSDN通过智能技术生成

Git/Gitub笔记

一、版本控制

1.1 版本控制工具应该具备的功能

  • 协同修改

    多人并行不悖的修改服务器端的同一个文件。

  • 数据备份

    不仅保存目录和文件的当前状态,还能够保存没一个提交过的历史状态。

  • 版本管理

    在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约储存空间,提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。

  • 权限控制

    对团队中参与开发的人员进行权限控制。

    对团队外开发者贡献的代码进行审核——Git独有。

  • 历史记录

    查看修改人、修改时间、修改内容、日志信息。

    将本地文件恢复到某一个历史状态。

  • 分支管理

    允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

1.2 版本控制工具

集中式版本控制工具:CVS、SVN、VSS … …

分布式版本控制工具:Git、Mercurial、Bazaar、Darcs … …

二、Git简介

2.1 Git历史

在这里插入图片描述

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

2.2 Git的优势

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

2.3 Git结构

  • 本地库

  • 暂存区

  • 工作区

在这里插入图片描述

三、Git命令行操作

3.1 本地库初始化

  • 命令:git init

在这里插入图片描述

在这里插入图片描述

3.2 设置签名

  • 形式:

    用户名:tom

    邮箱:abcd@efg.com

  • 作用:区分开发者身份

  • 命令

    git config :项目级别签名

    例:

    git config user.name tom_pro
    git congig user.email abcd@efg.com
    

    在这里插入图片描述

    信息保存在 ./config

    git config --global :系统级别签名

    例:

    git config --global user.name tom_glo
    git congig --global user.email hijk@lmn.com
    

    在这里插入图片描述

    信息保存在 ~/.gitconfig

3.3 提交文件和查看状态

  • 工作区添加到暂存区命令:git add [resources]

    在这里插入图片描述

  • 查看工作区/暂存区状态:git status

    在这里插入图片描述

  • 移出暂存区:git rm --cached [resources]

    在这里插入图片描述

  • 暂存区提交到库:git commit

    在这里插入图片描述

    或者用 git commit -m "tips" [resources] 省略编辑器步骤

    在这里插入图片描述

3.4 版本控制

3.4.1 查看历史版本

命令:git log

在这里插入图片描述

简略显示:git log --pretty=oneline / git log --oneline

在这里插入图片描述

带下标显示:git reflog

在这里插入图片描述

3.4.2 跳转历史版本

命令:git reset --hard [哈希值]

在这里插入图片描述

符号^git reset --hard HEAD[^^...]

回退^的个数个版本(例:回退两个版本)

在这里插入图片描述

符号~git reset --hard HEAD~[n]

指定后退n个版本

在这里插入图片描述

3.4.3 reset命令三个参数对比
  • --soft 参数:

    仅在本地库移动HEAD指针

  • --mixed 参数:

    在本地库移动HEAD指针

    重置暂存区

  • --hard 参数:

    在本地库移动HEAD指针

    重置暂存区

    重置工作区

3.4.4 删除文件并找回

git reset --hard [指针位置]

  • 删除操作已经提交,指针指向某个历史版本恢复文件
  • 删除操作还未提交,指针指向当前版本HEAD恢复文件

3.5 比价文件差异

  • 命令:git diff [文件名]

    在这里插入图片描述

    比较历史版本文件:git diff [指针位置] [文件名]

    在这里插入图片描述

    (文件名省略时比较全部)

3.6 分支管理

  • 创建分支:git branch [分支名]

    在这里插入图片描述

  • 查看分支:git branch -v

    在这里插入图片描述

  • 切换分支:git checkout [分支名]

    在这里插入图片描述

  • 合并分支:git merge [新内容分支名]

    注:要先切换到目标分支上,将新内容分支并过来

    • 解决冲突

      在这里插入图片描述

      两个分支同时修改了某处,需要手动合并

      在这里插入图片描述
      在这里插入图片描述

      修改后添加至暂存区

      在这里插入图片描述

      提交,解决冲突(commit不用加文件名)

      在这里插入图片描述

3.7 Git的基本原理

3.7.1 哈希
  • Git底层采用的是SHA-1算法

  • 哈希算法的特点:

    • 不管输入的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
    • 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大。
    • 哈希算法不可逆。
3.7.2 Git保存版本机制
  • 集中式版本控制工具(SVN)机制

    以文件变更列表的方式存储信息,每一个版本保存的是与前一版本的差异信息,获取某一版本内容可以看做把历史版本的所有信息拼接起来。

    在这里插入图片描述

  • Git文件管理机制

    Git会把数据制作为一个快照,每次提交更新都会把新数据制作一个快照,并保存快照的索引。如果其余文件没有被修改,Git不会重新存储这些文件,而是在新快照保留一个链接指向之前存储的文件。

    在这里插入图片描述

  • Git分支管理机制

    分支创建:创建一个新指针指向快照

    在这里插入图片描述

    分支切换:将HEAD指针指向新分支

    在这里插入图片描述

    更新新快照:

    在这里插入图片描述

    切换主分支:

    在这里插入图片描述

    更新主分支快照:

    在这里插入图片描述

四、连接GitHub远程管理

4.1 创建GitHub仓库

获取HTTP地址

在这里插入图片描述

4.2 Git推送到远程库

  • 创建远程仓库地址别名

    origin表示仓库地址别名

    在这里插入图片描述

    查看状态:git remote -v

    在这里插入图片描述

  • 推送到远程库:git push [地址/别名] [分支名]

    在这里插入图片描述

4.3 克隆远程仓库

  • 命令:git clone [地址]

    新建一个文件夹在该文件夹执行命令,自动初始化本地库,且默认设置改地址别名为origin

4.4 拉取远程库

命令:git pull [远程库地址别名] [远程库分支名]

pull = fetch(拉取) + merge(合并)

也就是 git fetch [远程库地址别名] [远程分支名] + git merge [远程库地址别名/远程分支名]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值