半小时学会使用Git(二)

上一次在半小时学会使用Git(一)一文中,我主要记录了Git是什么东西,在Windows下安装Git以及使用Git创建仓库三大内容。那么作为该文的续篇,这篇文章我将主要记录历史版本管理远程仓库github两方面的内容。

话不多说,直接进入正题。

一、历史版本管理

前面已经说过,Git作为分布式版本控制系统,它的核心功能就是做版本控制。所谓的版本控制,说白了不就是对迭代多次过后的历史版本进行管理,以实现修改保存新版本、版本回退、删除之类的功能嘛。在正式开撸这部分内容之前,我想先就工作区、暂存区、默认分支master和指针HEAD做个补充介绍。

上节已经说过,工作区就是创建的版本文件夹目录下没被隐藏的目录,即非.git目录,而.git则是Git的版本库,版本库中又分为stage/index(暂存区)、第一个分支master和指向当前分支的指针HEAD。大致关系如下图:

git add命令是把工作区的文件修改添加到暂存区;

git commit命令是把暂存区的内容提交到当前分支,此处指master,后面如果有新建分支,那么当前分支的含义就是Git控制台当前所处的分支;

同理,HEAD指针指向Git控制台当前所处分支,所以可以说commit命令是将暂存区中的内容添加到HEAD所指的分支之中。

好了,现在正式进入历史版本管理的内容。

1、版本回退

我们首先可以用git status命令查看当前的仓库状态:

On branch masterUntracked files:  

(use "git add <file>..." to include in what will be committed)

py2048/.idea/

 py2048/2048.ico        

 py2048env/

nothing added to commit but untracked files present (use "git add" to track)

提示消息告诉我们,有三个路径是没有添加到暂存区的。

由于这三个路径是我的python工程文件,暂时就不用他们做演示,而用我们之前创建好的readme2.txt文件,先来看看文件内容:

修改该文件,然后再看看仓库状态:

这次的信息就比上次多了,以下是多出来的提示:

Changes not staged for commit:  

(use "git add <file>..." to update what will be committed) 

(use"git checkout -- <file>..." 

to discard changes in working directory)


        modified:   readme2.txt

使用命令git diff readme2.txt具体看看改动了什么:

通过结果我们可以很清晰地看到改动,我们再用add和commit命令提交成为一个新版本(强烈建议读者跟随我的步骤一步步敲击,这会加深记忆)。 

提交之后,使用命令git log --pretty=oneline查看提交记录:

输出内容的第一个字段,是Git自动生成的唯一提交ID,我们可以利用它来完成各种版本之间的跳跃穿梭。(HEAD->master)则是说明当前版本正处于哪里,最后的内容则是我们commit时添加的,可以理解为备注。当然,上面的显示是由于我们加了--pretty=oneline进行格式化,所以才用一行简洁呈现,如果不加也可以,只是会凌乱一些。

除了可以查看提交记录之外,我们还可以用git reflog查看历史命令:

前面我们知道了唯一提交ID,聪明的小伙伴肯定已经想到它是我们版本回退的利器!事实正是如此,我们可以用git reset --hard HEAD^来回退到上一个版本,而参数HEAD^则可以替换成HEAD~n(n=回退版本数),也可以直接干脆换成提交ID

我的瞎改了几次之后,可以很明了地从上图看到提交历史。

2、管理修改

通过前面的内容,我们就可以很方便地在各个版本中穿梭游览了。

这一节内容,我就记录一些比较常用的管理修改的相关命令。

查看工作区和版本库的区别:git diff HEAD -- readme2.txt

让文件回到最近一次commit或者add的状态:

git checkout -- readme2.txt

另外命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区。

3、删除文件

删除文件可以有三种方法:直接从文件管理器删除、rm readme2.txt和从版本库中删除。前两种方法是等价的:

git checkout -- readme.txt恢复

从版本库删除:git rm readme.txt

恢复至版本库:git checkout -- readme.txt

二、远程仓库(以github为例)

通过前面的铺垫,我想对于如何玩转本地版本库大家应该都没问题了。不过光是本地版本库可根本体现不出Git作为一个分布式版本控制系统的优越性,版本控制系统从诞生之初就是为了解决多人协作的难题的。Git虽说是分布式(即每个关联在内的机子上都可以有完整的版本库),但其实一般使用时,我们也会创建一个中央库,这样一来所有人都从中取最新版本,在自己的分支改好了再合并进去,这不就完美了?

而github,就是这么一个网络项目托管平台。

本文第二点大内容,就是实现和github的连接,能够实现远程与本地版本库的互通

既然是要使用github,当然免不了去官网注册账号,这一步很简单,就不赘述了。我们直接从 创建SSH key 开始:

ssh-keygen -t rsa -C "1558473134@qq.com"

检查创建是否成功:在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

创建成功后,登陆GitHub,打开“settings”,“SSH and GPG Keys”页面:然后,点“new SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

创建好ssh key后,就在github创建新仓库,这一步和本地差不多。

一切准备就绪,开始关联:

git remote add origin git@github.com:MountaSouth/py2048.git

把当前分支推送到远程:git push -u origin master

从上图我们可以看到,第一次push是出错了的,但是按照截图先将本地与远程版本库进行合并,然后再push,则可以完美解决问题。执行完毕过后,你会在github上看到和本地仓库一样的文件,这就说明成功了!

好了,半小时学会使用Git(二)到这里就结束了。

如果初学的小伙伴们想要了解更多,和我一起进步,那么欢迎添加个人VX公众号南山泛娱,下期文章再见!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值