作业二:分布式版本控制系统Git的安装与使用
这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097。
我的远程仓库地址是:https://github.com/linyiman5508。
步骤一:(1)登录即sign in你的GitHub网址;
(2)使用你的GitHub 创建一个属于自己的库。
单击右上角的加号,输入库名+描述,即可创建一个新库。如下图所示:
操作完成后,命名为“lym”的库如下图所示:
步骤二:(1)在自己的电脑安装一个软件Git Bash;
(2)对git bash进行配置。
首先修改用户名和邮箱地址:分别输入命令 $ git config --global user.name "username" 和 $ git config --global user.email "email"。如下图所示:
然后查看用户名和邮箱地址:分别输入命令$ git config user.name 和 $ git config user.email。如下图所示:
步骤三:(1)选择一个合适的地方,创建一个空目录,即本地版本仓库;
工作目录的路径如下图所示:
(2)通过 git init 命令把这个目录变成Git可以管理的仓库。如下图所示:
通过 ls -a 命令发现当前目录下多了一个.git的目录。这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,否则改乱了,就把Git仓库给破坏了!!.git的目录如下图所示:
步骤四:(1)工作目录下准备文本文件(一定仓库目录下(子目录也行));
(2)使用命令 git status 检查当前文件状态。如下图所示:
(3)使用命令 git add 把文件添加到仓库,使用命令 git status 检查当前文件状态。如下图所示:
(4)使用命令 git commit 把文件提交到仓库,使用命令 git status 检查当前文件状态。如下图所示:
原理图如下:
隐藏目录.git
需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
步骤五:(1)修改文件内容;
(2)使用命令 git diff 查看具体修改了什么内容。如下图所示:
(3)再使用命令 git add 把文件添加到仓库,使用命令 git status 检查当前文件状态。如下图所示:
(4)再使用命令 git commit -m "add distributed" 把文件提交到仓库,使用命令 git status 检查当前文件状态。如下图所示:
步骤六:(1)使用 git log 命令显示从最近到最远的提交日志 git log --pretty=oneline(单行显示版本信息)。 一大串的类似1094adb...的是commit id(版本号)!!如下图所示:
(2)使用 git reset 命令回退到前面某一个版本, $ git reset --hard d31d(版本号的前几位,自动查找) 和 $ cat new.txt (查看文本文件)。效果如下图所示:
步骤七:(1)在用户主目录下,看看有没有.ssh目录 如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步; 如果没有,打开Shell(Windows下打开Git Bash),使用命令 $ ssh-keygen -t rsa -C "1726186166@qq.com" 创建SSH Key。如下图所示:
.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对。id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人!!
(2)登陆GitHub,打开“settings”,“SSH and GPG keys”页面, 然后点“New SSH Key”,填上Title,在Key文本框里粘贴id_rsa.pub文件的内容。如下图所示:
(3)建立了本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。在本地的仓库下运行命令 $ git remote add origin git@github.com:linyiman5508/lym.git。如下图所示:
(4)使用命令 $ git push -u origin master 就可以把本地库的所有内容推送到远程库上。如下图所示:
编辑两次 new.txt 文档,提交两次,运行结果如下图所示:
编辑三次 new.txt 文档,提交三次,运行结果如下图所示:
注:把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。