Github 使用简介

Github 相关概念解析

  • 一、下载与安装
    • 1.1、下载git
    • 1.2、注册github
  • 二、git的初始化配置
  • 三、使用git新建本地仓库
  • 四、添加文件到本地仓库
  • 五、对文件进行修改后提交到本地仓库
  • 六、版本回退
  • 七、删除文件
  • 八、远程仓库
    • 8.1、生成公钥
    • 8.2、配置公钥
    • 8.3、在github上建立远程仓库
    • 8.4、本地仓库与远程仓库建立关联
    • 8.5、将本地仓库同步到远程仓库
  • 九 分支管理
    • 9.1、创建分支
    • 9.2、查看分支
    • 9.3、切换分支
    • 9.4、合并分支
    • 9.5、删除分支
  • 十、git push指令详解
    • 10.1、一般形式
    • 10.2、省略远程分支名
    • 10.3、省略本地分支名
    • 10.4、省略所有分支名
    • 10.5、省略所有分支名以及远程仓库名
    • 10.6、查看远程分支名
    • 10.7、跟踪分支


一、下载与安装

1.1、下载git

首先下载git,下载链接如下:

https://git-scm.com/downloads

然后双击安装包进行安装,安装过程一路next即可

1.2、注册github

然后打开github首页,链接如下:

https://github.com/

点击sign up
Github 使用简介_第1张图片
填写相关信息
Github 使用简介_第2张图片
至此,完成git的安装与github的注册


二、git的初始化配置

安装完git后第一次使用时,需要确认用户名和邮箱

按下键盘上的Windows,然后输入git,即可打开git
Github 使用简介_第3张图片
输入指令如下:

git config --global user.name "注册github时你用的名字"  // 确认用户名

git config --global user.email "注册github时你用的邮箱" // 确认邮箱

完成后显示:
Github 使用简介_第4张图片


三、使用git新建本地仓库

新建了一个目录(文件夹),该目录就作为我们的工作目录
在这里插入图片描述
进入这个目录
Github 使用简介_第5张图片
在当前的工作目录下,右键并选择git Bash Here
Github 使用简介_第6张图片
出现以下的git的命令行交互界面
Github 使用简介_第7张图片
接下来输入指令:

git init

Github 使用简介_第8张图片
这说明已经当前项目的本地仓库已经新建完成了

此时当前工作目录下多出了一个以 “.” 开头的隐藏文件,这就是刚刚新建好的本地仓库
在这里插入图片描述


四、添加文件到本地仓库

我们新建一个文本文件:Hello.txt
Github 使用简介_第9张图片
里面写上一些内容,然后进行保存
Github 使用简介_第10张图片
此时还是打开git Bash,输入:

git status // 查看状态

Github 使用简介_第11张图片
可以看到Hello.txt这个文件是红色

这是说明我们这个文件已经做了修改,但是这个文件还没保存到本地仓库里面。

接下来执行:

git add Hello.txt

这个操作是将Hello.txt文件添加到暂存区

如果要将当前目录下的所有文件都添加到暂存区中,可以使用如下指令:

git add .  // 此处的 . 表示所有文件

在这里插入图片描述
再次查看状态:
Github 使用简介_第12张图片
如图所示,此时的Hello.txt已经变成了绿色,说明这个文件已经到了暂存区里面

概念解析:

首先你得明白这几个概念,工作区就是你现在编辑器所处的那个工程里面,在这个指的就是test这个文件夹

刚才你写了一个Hello.txt。写完之后就是往工作区增添了一个文件,然后你用git status查看状态发现,Hello.txt是红色的

git status就是查看你工作区和暂存区有没有文件没被提交到本地仓库

如果有工作目录区保存了,暂存区没有保存的就显示红色,如果有暂存区没提交到本地仓库的就是绿色

那么如何把文件从暂存区提交到本地仓库呢,就是使用以下指令:

git commit -m "注释"

执行完成后的结果如下:
Github 使用简介_第13张图片
git commit –m “注释” 这个引号里面的内容是随意的,就是自己添加一个备注,比如自己改动了什么东西,为什么要改之类的


五、对文件进行修改后提交到本地仓库

对Hello.txt进行修改并保存:
Github 使用简介_第14张图片
再次查看状态:
Github 使用简介_第15张图片
Hello.txt是红色的,这说明存在有未向暂存区提交的保存

此时再来一遍 git add 和 git commit 即可
Github 使用简介_第16张图片


六、版本回退

到目前为止,我们已经向工作区提交了两次修改

可以使用以下指令,可以查看我们最近的提交历史:

git log

Github 使用简介_第17张图片
如图所示,可以看出来我们提交(commit)了两次,前面那串黄色的字符串就是每次提交的版本号

此时,若我们要回退到第一次修改时,则可以执行以下指令:

git reset --hard  27c4cecb9

在这里插入图片描述
这句指令后面的参数“27c4cecb9”,其实是从这里复制过来的
Github 使用简介_第18张图片
此时再次打开Hello.txt
Github 使用简介_第19张图片
显然,版本已经回到第一次添加的内容了


假设想再次回退到第二次添加的内容

先查看一下状态:

Github 使用简介_第20张图片
可以发现,第二次commit的日志已经不见了

此时我们需要用到如下指令:

git reflog

Github 使用简介_第21张图片
显然,这里再次出现了第二次commit的版本号,我们尝试滚回第二次commit

git reset --hard ced05e0

在这里插入图片描述
完成
Github 使用简介_第22张图片


七、删除文件

我们把文件删除了
Github 使用简介_第23张图片
查看状态
Github 使用简介_第24张图片
存到缓存区
在这里插入图片描述
查看状态
Github 使用简介_第25张图片
提交到本地仓库
在这里插入图片描述
查看日志
Github 使用简介_第26张图片


八、远程仓库

8.1、生成公钥

在Windows下打开git客户端
Github 使用简介_第27张图片
输入如下指令,生成你正在使用的这个电脑的公钥(public key)

ssh-keygen

然后一路回车键到底
Github 使用简介_第28张图片
若出现以上页面,说明公钥完成了
Github 使用简介_第29张图片

8.2、配置公钥

然后打开github:

https://github.com/

因为你已经注册过了,所以这次点击这里:

Github 使用简介_第30张图片
输入注册时的邮箱和密码
Github 使用简介_第31张图片
登录进去后,点击右上角头像,选择setting
Github 使用简介_第32张图片
然后选择SSH and GPG keys
Github 使用简介_第33张图片
点击新建SSH key
Github 使用简介_第34张图片
Github 使用简介_第35张图片

8.3、在github上建立远程仓库

接下来建立远程仓库

点击右上角,选择建立新的远程仓库
Github 使用简介_第36张图片
Github 使用简介_第37张图片
创建好之后就是这样的
Github 使用简介_第38张图片

8.4、本地仓库与远程仓库建立关联

接下来把本地仓库推送到远程仓库
Github 使用简介_第39张图片
输入如下指令:

git remote add origin 刚刚复制的内容

Github 使用简介_第40张图片
此时我们本地的仓库已经和github上的远程仓库完成了关联

这个远程仓库的名字就是origin

这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程仓库

然后我们要将本地仓库的东西同步到远程仓库去,在这之前,我们先要执行如下指令:

8.5、将本地仓库同步到远程仓库

git pull --rebase origin master

Github 使用简介_第41张图片
这条指令的意思是,把远程库中的更新合并到本地库中,因为你在新建远程仓库的时候新加了readme,这是本地仓库没有的

–rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中

git pull –rebase origin master意为先取消commit记录,并且把它们临时保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),之后同步远程库到本地,最后合并补丁到本地库之中

接下来执行如下指令,将本地仓库中的东西同步到远程仓库去

git push  origin  master

Github 使用简介_第42张图片
Github 使用简介_第43张图片
显然远程仓库的内容和本地仓库也是一致的
Github 使用简介_第44张图片
Github 使用简介_第45张图片


九 分支管理

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

最开始的时候我们的所有操作都是默认在一个叫做master的分支上操作的,包括提交到远程库,等等。关联远程库的时候也是从远程关联master分支。当我们用dev这个分支写完一个项目之后,我们要把这个分支所做的工作向master分支进行靠拢.

9.1、创建分支

首先创建分支dev,指令如下:

git checkout -b dev

Github 使用简介_第46张图片

9.2、查看分支

可以使用以下指令查看所有分支:

git branch

Github 使用简介_第47张图片
如图所示,共有两个分支,且当前分支为dev

我们在dev分支下对Hello.txt进行修改
Github 使用简介_第48张图片
然后将其添加到本地仓库
Github 使用简介_第49张图片

9.3、切换分支

现在我dev的分支工作已经做完,现在我可以切换回master分支

git checkout master

Github 使用简介_第50张图片
此时的Hello.txt
Github 使用简介_第51张图片
切换回master分支之后,我们发现Hello.txt里面新加的语句不在了

因为我们刚才是在dev分支上做的提交

9.4、合并分支

现在我们要把分支合到master上,就利用以下指令就可以了:

git merge dev

Github 使用简介_第52张图片
此时再去查看Hello.txt发现我们在dev里面做的操作已经在master里面了。
Github 使用简介_第53张图片

9.5、删除分支

现在我们可以使用命令git branch –d dev来删除dev这个分支,之后再使用git branch来查看分支发现只有master一个分支了。
Github 使用简介_第54张图片
因为创建、合并和删除分支非常快,所以Git鼓励我们使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。


十、git push指令详解

10.1、一般形式

git push的一般形式为:

git push <远程主机名>  <本地分支名>  <远程分支名>

10.2、省略远程分支名

看一个例子
Github 使用简介_第55张图片
显然这里省略了远程分支名(或者你也可以理解为省略了本地分支名)

这说明远程分支名和本地分支名是一样的,都是master

10.3、省略本地分支名

如果是这样的:

git push origin :refs/for/master   //  refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

若省略本地分支,则相当于推送一个空的本地分支到远程分支,等同于删除指定的远程分支
Github 使用简介_第56张图片
与以下指令是等价的:

10.4、省略所有分支名

git push origin --delete master

若本地分支和远程分支都省略掉了,就像这样写:

git push origin

如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

10.5、省略所有分支名以及远程仓库名

如果当前分支只有一个远程分支,那么主机名都可以省略,直接使用指令如下:

git push

10.6、查看远程分支名

可以使用以下指令查看远程分支名:

git branch -r

Github 使用简介_第57张图片

10.7、跟踪分支

从远程分支 checkout 出来的本地分支,称为 跟踪分支 (tracking branch)。跟踪分支是一种和某个远程分支有直接联系的本地分支

在跟踪分支里输入 git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来

在我们克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master。这正是 git push 和 git pull 一开始就能正常工作的原因

当然,我们也可以随心所欲地设定为其它跟踪分支,比如 origin 上除了 master之外的其它分支

刚才我们已经看到了这样的一个例子:git checkout -b <远程主机名> <本地分支名> <远程分支名>

你可能感兴趣的:(github)