Git学习手册2 (附GitHub注册指南)

本文是继续我的上一篇:Git学习手册1,链接如下:
Git学习手册1

7.版本回退

我们已经学会了修改文件,现在如果继续修改,修改完毕之后想要查看历史记录,可以使用git log命令
git log
git log命令显示从最近到最远的显示日志,我们可以看到最近三次提交
最近的一次是,增加内容为333333.
上一次是添加内容222222
第一次默认是 111111.
如果嫌上面显示的信息太多的话,我们可以使用命令 git log –pretty=oneline 演示如下:
git log –pretty=oneline
现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,要使用什么命令呢?可以使用如下2种命令,

  • 第一种是:git reset --hard HEAD^
    回退到上一个版本

那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可。

现在,我想回退到最新的版本,该怎么做呢?
 我们可以通过版本号回退,使用命令方法如下:

git reset --hard 版本号 

问题又来了,不知道版本号,该怎么办呢?
别着急,可以通过如下命令即可获取到版本号:

git reflog 

同时,这里需要提到一个概念:
(划重点了)
什么是工作区?与暂存区有什么区别?

工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

8.Git撤销修改、删除文件

Ⅰ 撤销修改

现在,如果我发现最后修改的文件有错误,所以,必须要恢复到以前的版本,我们可以有以下几种方式:

  • 第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。

  • 第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^

除此之外,还能怎么办?
可以直接使用撤销命令!
先使用git status查看当前状态
git status
可以发现,Git会告诉你,git checkout -- file 可以丢弃工作区的修改
注意:git checkout – readme.txt 中的 – 很重要,如果没有 – 的话,那么命令变成创建分支了。

例如:git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销
在这里有两种情况:

  1. readme.txt 自动修改后,还没有放到暂存区,使用撤销修改就回到和版本库一模一样的状态。
  2. 另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
Ⅱ 删除文件

一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:

rm 文件名

例如:
rm readme.txt
如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令,提交掉,就彻底删除了,这时候,再想要在版本库中恢复文件,是不可能的了。
谨记:一旦commit,有些操作不可逆。

那么没有commit之前,如果我想在版本库中恢复此文件如何操作呢?
可以使用如下命令

git checkout -- 文件名

千万不要把 -- 写成了-,两个杠之间没有空格。

例如:git checkout -- readme.txt,就可以恢复回来了。

9.远程仓库

在了解这些之前,你得先有一个GitHub的账号才行,如果没有的话,先注册GitHub账号
GitHub官方网站
打开之后是这样的
GitHub注册
如果有的话,直接点击Sign in
没有的话,稳住别慌,接着看下面

注册GitHub

点击Sign up
sign up
输入完成之后点击Select a plan,选择免费版本,然后发送邮箱验证信息
登录你刚才使用的邮箱账号,会有一封来自于GitHub的验证邮件,如果没有的话,稍微等待一会,或者可以去邮箱的垃圾箱看看是不是被误删了。
email
点击验证之后,,就可以使用了。

下面我们继续我们的Git。

Git push到GitHub

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一点设置:

第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:

ssh-keygen -t rsa –C “youremail@example.com”, 由于我本地此前运行过一次,所以本地有,如下所示:
在这里插入图片描述
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第二步:登录GitHub,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后,你就能看到已经添加的key了
在这里插入图片描述

如何添加远程库?
我们已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且希望这两个仓库进行远程同步,这样GitHub的仓库可以作为备份,又可以其他人通过该仓库来协作。

首先,登录GitHub上,然后在右上角找到“new repository”创建一个新的仓库。如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在GitHub上,这个是空的。

GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的testgit仓库下运行命令:

git remote add origin 自己的网址
在这里查看
在这里插入图片描述
例如我的是:https://github.com/cjw7177/testgit.git

本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样了
后面第二次,第三次等等,提交都可以直接使用命令

git push origin master

把本地master分支的最新修改推送到GitHub上了,现在你就拥有了真正的分布式版本库了。

如何从远程库克隆?

为什么要从远程克隆?
 假如远程库有新的内容了,我们就可以从远程克隆到本地来
首先,找到你需要clone的库,例如,我自己的
https://github.com/cjw7177/Banker-s_Algorithm

使用命令git clone克隆一个本地库。

git clone https://github.com/cjw7177/Banker-s_Algorithm

克隆之后,本地就有了Banker-s_Algorithm这个项目

10.创建与合并分支

在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

首先,我们来创建dev分支,然后切换到dev分支上。如下操作:

git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令

git branch dev

git checkout dev

git branch查看分支,会列出所有的分支,当前分支前面会添加一个星号。然后我们在dev分支上继续做demo。
在这里插入图片描述
我们可以把dev分支上的内容合并到分支master上了,可以在master分支上,使用如下命令 git merge dev

git merge命令用于合并指定分支到当前分支上,合并后,再查看文件的内容,其实和dev分支最新提交的是完全一样的。
在这里插入图片描述
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

合并完成后,我们可以接着删除dev分支了
在这里插入图片描述
总结创建与合并分支命令如下

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

前面说到,Git一般使用“Fast forward”合并分支。在这种模式下,删除分支后,会丢掉分支信息,我们可以使用带参数 –no-ff来禁用”Fast forward”模式。

git merge –no-ff -m "······注释~·····" dev

分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

Git入门的知识差不多就这些,当然,还有其它比如各种分支:bug分支,以及多人协作的推送分支、抓取分支等,以后有机会再给大家写。

到这里,就结束了,码字不易,还望各位路过的大佬们能点点关注、点点赞,谢谢各位老铁。
表情包-笑脸

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值