git和github学习之旅

0.前言

印象中,github是一个很有用的工具,但是由于都是英文,真的让人头大,一直都没有仔细去学习如何使用。最近在学习前端,看到了几篇关于github的博客,心血来潮地想去学习一下,于是去哔哩哔哩上找了教程,下面是听课过程中的笔记。

1.基本概念

一定一定要明确,使用github是一种版本控制工具,其目的是托管项目代码

1.1几个名词

  • 仓库(Repository):用来存放项目代码,每个项目对应一个仓库,多个开源项目对应多个仓库。
  • 收藏(Star):收藏项目,方便下次查看。
  • 复制克隆项目(Fork):将他人的项目完整的复制克隆到自己的仓库。注意:克隆出来的是一个独立的仓库。
  • 关注(Watch):关注项目,当项目有更新时会有提醒。

1.2GitHub功能

  • 协同修改:多人并行不悖地修改服务器端的同一个文件。
  • 数据备份:不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
  • 版本管理:在保存每一个版本的文件信息的时候做到不保存重复数据。Git带去了文件系统快照方式实现这个功能。
  • 权限控制:对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核。
  • 历史记录:查看修改人、修改时间、修改内容、日志信息;将本地文件恢复到某一个历史状态。
  • 分支管理:允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

1.3Git的优势

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

2.了解Git

2.1Git下载安装

这个安装比较简单,网上也有很多安装教程,这里就不赘述了。
也可以参考哔哩哔哩视频
在这里插入图片描述然后在任意的文件夹里右键,都可以看到这两个选项。通过这两个选项就可以打开git的图形化界面或者命令行界面,从而进行一些操作。
在这里插入图片描述在这里插入图片描述

2.2Git结构

  • 工作区:写代码
  • 暂存区:临时存储
  • 本地库:历史版本
    在这里插入图片描述暂存区存在的意义在于:当提交到暂存区的文件不想提交了,还可以撤回。

2.3Git和代码托管中心

前面说过了,GitHub其实是一个代码托管中心。Git是本地库,GitHub就是远程库。
本地库和远程库之间可以进行交互,这种关系可以看一下这个视频,真的形象、简单、易懂。而且里面对于push、clone、pull、merge等概念也进行了讲述。

3.Git命令行操作

3.1本地库初始化

  • 命令:git init
  • 效果:实际上就是创建出了.git这个文件夹。
    在这里插入图片描述- 注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。
    在这里插入图片描述

3.2设置签名

  • 形式
    用户名:XXX
    Email地址:XXX@XXX(这里随便写,不会向这个邮箱发送邮件的)
  • 作用:区分不同开发人员的身份
  • 辨析:这里设置的签名和GitHub上的账号密码没有任何关系
  • 命令
    (1)项目级别/仓库级别:仅在当前本地库范围内有效。(上面实例中就是指appreciation这个项目)。
git config user.name your_username
git config user.email your_email

信息保存位置:./.git/config文件
在这里插入图片描述
(2)系统用户级别:登录当前操作系统的用户范围。(上述实例中就是指Lenovo用户)。

git config --global user.name your_username
git config --global user.email your_email

信息保存位置:~/.gitconfig文件(即根目录下的隐藏文件中)
在这里插入图片描述

(3)两者优先级
①就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名。
②如果只有系统用户级别的签名,就以系统用户级别的签名为准
③不允许两者都没有

3.3基本操作

3.3.1状态查看操作

  • 命令:
git status
  • 效果:查看工作区、缓存区状态

3.3.2添加操作

  • 命令:
git add [file name]
  • 效果:将工作区的“新建/修改”添加到缓存区

3.3.3提交操作

  • 命令:
/*对某一个文件进行提交*/
git commit -m "commit message" [file name]
/*对缓存区的所有文件进行提交*/
git commit -m "commit message"
  • 将暂存区的内容提交到本地库

3.3.4查看历史记录

(1)详细显示:
命令:

git log

效果:
在这里插入图片描述附注:多屏显示控制方式:①空格向下翻页;②b向上翻页;③q退出
(2)单行显示
命令:

git log --pretty=oneline

效果:
在这里插入图片描述(3)单行显示(更简洁)
命令:

git log --oneline

效果:只显示HEAD指针以前的版本号。
在这里插入图片描述(4)显示后退到某一版本的步数
命令:

git reflog

效果:
在这里插入图片描述附注:HEAD@{移动到当前版本需要多少步}

3.3.5前进后退

(1)本质:使用HEAD指针来进行版本控制。
在这里插入图片描述
(2)方式一:基于索引值操作【推荐
命令:

git reset --hard [索引值]

好处:
不必考虑是前进还是后退,因为每个版本的索引值都不同,直接用索引值即可定位到想要的某个版本。
(3)方式二:使用^符号(只能后退)
命令:

/*注:^的个数代表后退步数 */
git reset --hard HEAD^    /*后退一步*/
git reset --hard HEAD^^   /*后退两步*/
git reset --hard HEAD^^^  /*后退三步*/
…………

(4)方式三:使用~符号(只能后退)
命令:

git reset --hard HEAD~n    /*后退n步*/

3.3.6 reset命令的三个参数对比

(1)–soft参数:

  • 仅仅在本地库移动HEAD指针
    (2)–mixed参数
  • 在本地库移动HEAD指针
  • 重置暂存区
    (3)–hard参数
  • 在本地库移动HEAD指针
  • 重置暂存区
  • 重置工作区

3.3.7删除文件并找回

(1)前提:删除前,文件存在时的状态提交到了本地库
(2)操作:git reset --hard[指针位置]

  • 删除操作已经提交到本地库:指针位置指向历史记录中未删除该文件时的索引值。
  • 删除操作尚未提交到本地库:指针位置使用HEAD(当前位置)即可。

3.3.8比较文件差异

(1)git diff [文件名]
作用:将工作区的文件和暂存区的文件进行比较
(2)git diff [本地库中历史版本] [文件名]
作用:将工作区中的文件和本地库历史记录比较
(3)git diff
作用:比较多个文件。

3.4分支管理

3.4.1什么是分支

在版本控制过程中,使用多条线同时推进多个任务。
在这里插入图片描述

3.4.2分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,删除失败的分支并重新开始即可。

3.4.3分支操作

(1)创建分支

git branch [分支名]

(2)查看分支

git branch -v

(3)切换分支

git checkout [分支名]

(4)合并分支

/*第一步:切换到接受修改的分支(一般是主干)上*/
git checkout [接受合并的分支名/master]
/*第二步:执行merge命令*/
git merge [请求合并的分支名]

(5)解决冲突

  • 冲突的表现
    会在产生冲突的文件里多一些特殊符号,提醒冲突的内容。
    例如:
    ①在master和hot_fix里都有test.txt文件,现在两个分支都对该文件的同一行进行修改,如下图:
    在这里插入图片描述
    ②在两个分支里都将这个文件提交到本地库。
    在这里插入图片描述③在master中使用git merge [hot_fix]命令进行合并,则会提示发生冲突,无法自动合并,如下图:
    在这里插入图片描述
    ④打开冲突文件,会发现多了一些特殊符号提示当前冲突所在。如下图:
    在这里插入图片描述

  • 冲突的解决
    按照以下步骤进行解决即可:
    ①编辑文件,删除特殊符号。在这里插入图片描述
    ②把文件修改到满意的程度,保存退出
    ③git add [文件名]
    在这里插入图片描述
    ④git commit -m “日志信息”
    在这里插入图片描述
    注意:第四步中一定不能带文件名!

4.GitHub

4.1账号信息

进入官网,网址为https://github.com/
在这里插入图片描述
注册账户比较简单,虽然这个网站是全英文的,但是注册这部分凭靠浅薄的英文水平还是可以胜任的hhhh。实在有问题也可以参考这篇博客

4.2远程交互

(1)团队内部协作:如下图所示,这里是从哔哩哔哩视频上截取下来的图片,通过这个图片可以清楚的知道团队内部协作的过程。
在这里插入图片描述
(2)跨团队协作:如下图所示,这里也是从哔哩哔哩视频上截取下来的图片,通过这个图片可以清楚的知道跨团队协作的过程。
在这里插入图片描述

4.3交互实现过程

4.3.1创建本地库

按照上述内容,对本地库进行初始化、对项目进行签名设置,然后添加文件、提交文件,即将项目中的文件提交到本地库。

4.3.2创建远程库

这个比较简单,填写完基本信息之后点击commit即可。
在这里插入图片描述

4.3.3在本地创建远程库地址别名

这一步只是为了简化操作,也可以不做的。
在这里插入图片描述
按照上图,在新建仓库的主页获取网址,然后在本地的git命令行中输入一下两条指令:

 git remote add [别名] [刚刚获取的网址]
 git remote -v

在这里插入图片描述

4.3.4推送操作

命令:

git push [别名] [分支名]

效果:会弹出一个GitHub的登录界面,填写账号密码即可。
在这里插入图片描述
我的这个地方报下述错误。。。
在这里插入图片描述看了这篇博客之后,对命令进行了修改,成功推送~
在这里插入图片描述

4.3.5克隆操作

命令:

git clone [远程地址]

实现的效果:

  • 完整的把远程库下载到本地
  • 创建appreciation远程地址别名
  • 初始化本地库

4.3.6邀请团队成员

在GitHub仓库主页上,按照下图中的过程依次进行即可。
在这里插入图片描述然后会弹出下面这个弹窗:
在这里插入图片描述被邀请者会收到邮件提示,登录GitHub之后点击同意即可加入团队。

4.3.7远程库修改的拉取

pull实际上是fetch和merge两个操作,即pull=fetch+merge
命令:

/*抓取远程库的某个分支*/
git pull [远程地址别名] [远程分支名]
/*抓取远程库的某个分支*/
git fetch [远程地址别名] [远程分支名]
git merge [远程地址别名/远程分支名]

两者选择:当进行的修改比较简单,不太会产生冲突时,使用pull即可,比较简单;但是如果要保险起见,可以先fetch查看,没有问题之后再merge。

4.3.8协同开发的冲突解决

(1)要点:

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

4.3.9跨团队协作

(1)Fork:以东方不败的身份登录GitHub,然后找到岳不群的项目,点击fork。
在这里插入图片描述
(2)clone:东方不败将项目clone到本地进行修改操作。
(3)push:东方不败将项目push到自己的远程库。
(4)pull request:
在这里插入图片描述
后面有些复杂,不太能表述清楚☹☹,
建议看视频,网址为:https://b23.tv/AebrPq

5.后记

这些还是比较基础的,推荐哔哩哔哩的尚硅谷博主,视频讲的真的挺好。
但是最主要的还是要自己多练习。
加油吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值