现代软件工程第二次作业-github初使用及CanTool需求文档

 

作业要求:

完成下面的题目,并在小组博客中写出整个操作过程及学习心得(图文并茂):(每人都要在小组博客中写出来,并注明姓名)

1.参照 http://www.cnblogs.com/xinz/p/3803109.html 的第一题,每人建立一个GitHub账号,组长建立一个Project,将本组成员纳入此Porject中的Collaborators,并添加zykgnyue 为Collaborator。

2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。

3.完成小组的“CanTool”项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产生冲突。并验证GitHub上的文档确实是最新的文档。

作业1、2 Github的个人使用

一、温浩

  1. 新建版本库

 

  因为已经建立过,所有红字提示,我在建立时使用了带默认README的选项。

  2. 建立project

  在建好的Repository界面里,依次点击Project->New Project,输入名称,描述即可。

   

  3. 将本组成员和老师添加到Collaborators.

   

  先点击Settings,再点击左边Options下的Collaborators,最后在3位置的添加栏中添加小组成员和老师。

  4. 设置SSH

  下载Git并安装,并打开Git Bash。输入下述命令,一路回车到生成ssh成功。

   

  我之前已经生成过 ,所以不显示之后的截图。在用户文档里查看.ssh文件,打开其中的id_rsa.pub复制自己的公钥。

  打开Github,通过头像下拉菜单里的 settings进入总设置里,点击左边的SSH and GPG keys。点击New SSH key按钮,复制刚才的公钥确认即可。

  5.关联本地Git和Github远程仓库

  输入 命令  git remote add origin git@github.com:3013218123/MSE_Project1.git

  因为我已经设置过,所以显示了已存在。

   

  6.建立helloWorld文件,熟悉Git的基本语句

  用notepad++新建一个helloWorld2.cpp文件

   

  先克隆远程的版本库到本地。我之前建立了dev分支,现在克隆该分支 。

   

  cd MSE_Project1进入本地版本库。

  把之前建立好的helloWord2.cpp文件放到MSE_Project1文件内。

   

  helloWorld 是之前建立的。

  添加helloWorld2.cpp进入暂存区

   

  提交到本地的dev分支上

   

  使用git pull提交到远程版本库中

   

  接下来使用git pull和git fetch

  我先在github上直接添加一个文件,使远程版本库的内容与本地不同

   

  注意gitCommand.txt文件是我在github上直接添加的,本地没有。

  使用git pull更新本地版本库。

   

  再看本地版本库

   

  多了gitCommand.txt文件。事实上,git pull的机制是:从远程获取最新版本并merge到本地。

  再看git fetch,先从github上直接添加一个文件让它与本地不同

   

  添加了问题.txt文件。接下来使用git fetch

   

  查看本地版本库,发现没有 问题.txt文件。可以用diff查看本地文件发现不同

   

  合并到本地版本库中:git merge origin/dev,再查看本地版本库(git bash崩了,少一张截图),多了问题文件

   

  git fetch 的过程是从远程的分支获取最新的版本到本地,不会自己merge

 

 二:王而川

第一:git的下载与安装

Git是一种版本的管理的工具,之前在本科做javaweb开发的时候用过svn,现在了解Git发现,其实一种分布式的,更加容易入手的工具。

使用Git之前需要下载git并完成安装,针对windows系统,有一个已经集成的安装文件。msysgitWindows版的Git,从https://git-for-windows.github.io下载。

 

点击下载之后,我们会看到很多的版本。

 

这里需要根据你的计算机的型号,下载所需要的安装包。

 

因为我电脑安装的是64为系统,所以下载了上图这个。

接下来点击下载一路安装就可以了。

 

 

 

 

这里部分安装页面的截图不显示,一路点击下一步就可以。

安装完成后,在开始菜单里找到Git->Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

 

第二设置账号与创建目录

首先我们输入 git --help

 

这样可以查看到git的使用方式。

接下来需要设置你的账号和邮箱。

如下图输入: git config --global user.name “这里输入用户名字” 点击enter之后,继续输入你的邮箱 git config --global user.email “这里输入你的邮箱” 继续按enter就可以

 

第三:创建版本目录以及将其变为仓库

我们输入以下语句,可以把指定的文件夹设置为git的目录$ mkdir learngit

$ cd learngit

$ pwd

/Users/michael/learngit

注意目录尽量不要有汉字

 

然后是把该目录变为仓库即可

$ git init

 

第四步建立一个文件,并将其放在这个仓库之中,便于后期的版本维护。

MicrosoftWord格式是二进制格式是不行的

此外:千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符

首先我们新建立一个txt文件,这里我使用的是

 

建立之后,在里面输入的几条语句如上图。

然后我把他放在了刚才新建立的文件夹目录之中。

 

然后是输入语句,讲此文件加入到git目录之中:

 

但是这样还没有结束,还需要另外一步:

 

这样我们就把刚才的文件放入了,git的版本管理之中,神奇的事情即将发生,你会发现,当你更改里面的内容的时候,git将会记录。

第五步修改文件内容查看git记录

首先我们打开之前放入git目录的文件,并且修改一下里面的内容。

 

修改之后,我们输入语句,查看修改的情况

 

这里我们可以看到没有发生变化,是因为变化之后,我们还没有将变化的文件提交

如下图可以查看到详细修改的情况。

 

 

现在我们提交一下,刚才手动修改后的文件。

 

添加收,我们查看修改的内容,会出现一下信息。

 

然后发现似乎没有发生变化呀,因为之前添加并没有提交的版本库呀,你如果看上一节课的内容话,你会发现提交到版本库一共分两步的,接下来的便是第二步。

 

这样我们才把刚才的修改的内容,真正的提交到版本库,现在我们再查看一下修改的内容。

 

 

第六步注册github,创建SSH-key并将本地版本提交到远程仓库

Github注册比较简单

 

注册这里不做过多的讲述,主要还需要收一个邮箱认证,到时候你就拥有自己的github账号了。

接下来是在本地创建SSH-key,创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开ShellWindows下打开Git Bash),创建SSH Key

 

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

2步:登陆GitHub,打开“Account settings

在这里你可以看到一下界面,根据下图填写就可以SSH key

 

点击 new SSH key

 

填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

 

点击下面的Add SSH key你就发现你成功了

 

 

然后是github上新建一个远程仓库

 

 

然后添加远程仓库的信息

 

然后便成功的添加了远程仓库

 

接下来便是把本地仓库的文件信息提交到远程仓库

输入下边的信息。

 

此时你再查看刚才新建的远程仓库,变回发现和本地仓库一样了,信息达到了同步的状态。

 

 

三、纪春洋

1. 新建版本库             

图 1-1 新建版本库                                                                                          图1-2 新建版本库

图1-1中填写版本库名字创建即可,其红圈选中的方框勾选后,创建版本库的同时创建一个README文件,创建好的版本库如图1-2所示。

2. clone命令

第一次使用Git时,若想本地Git与远程的GitHub进行通信,需要为GitHub添加SSH Key,因为GitHub需要识别出你推送的消息确实是你推送的,而不是别人冒充的,而且Git支持SSH协议,所以GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。公钥放在id_rsa.pub文件中,由于第一次使用,用户目录的.ssh文件中是没有id_rsa和id_rsa.pub文件的,需要我们自己创建,命令格式如图2所示。

 

图2 创建SSH Key

这里在创建SSH Key时要注意一个细节,创建SSH Key的函数在安装Git所在目录的bin文件夹中,调用命令时记得切换到bin文件夹,在其他路径会创建失败。

创建成功后,我们将id_rsa.pub文件中的内容添加到GitHub上,如图3所示

 

图3 添加SSH Key

做完这些工作后,就可以从远程GitHub上新建的版本库克隆到自己本地,命令格式如图4所示,结果如图5所示。

 

图4 clone命令

 

图5 本地版本库

3. add和commit命令

先创建一个Hello_Word项目,将其复制到本地的工作区中,如图6所示

 

图6 Hello_Word项目

切换到版本库中,查看当前版本库的状态,命令如图7所示,提示Hello_Word文件没有被跟踪

 

图7 status命令

使用 add命令将Hello_Word文件添加到暂存区,对其进行跟踪,命令如图所示,提示更改需要被提交,跟踪成功

 

图8 add命令

使用commit命令对暂存区中改动的文件进行提交,其提交到当前的分支上。可以对更改的内容添加备注,命令如图所示,再次查看当前的版本库的状态,工作区是空的。

 

图9 commit命令

4. push命令

本地版本库同步远程GitHub版本库,命令如图10所示,同步成功

 

 

图10 push命令

5. pull(fetch)命令

现在还有一个人对Hello_Word项目感兴趣,同样向GitHub添加了SSH,如图11所示

 

图11 SSH Key

他也克隆了一份版本库到自己的电脑上。两个人在自己的电脑上同时创建了分支dev,如图12所示

 

图11 创建dev分支

他加了“I AM ji chun yang.”一句话,并且同步到了远程版本库,如图12所示

 

图12 修改并同步远程

自己也加了“I am ji chun yang.”一句话,推送到远程的时候出现错误,命令提示有冲突。如图13所示

 

图13 同步远程冲突

这时候我们使用pull命令把远程版本库抓取下来,发现抓取错误,原因时没有指定本地dev分支与远程origin/dev分支的链接,如图14所示

 

图14 pull命令错误

再使用pull命令,会提示合并时发生冲突的文件名,如图15所示

 

图15 pull命令

我们手动解决冲突,改成“I’ m ji chun yang.”,再次推送到远程库,推送成功,如图16所示

 

图16 解决冲突

从上面的例子中可知,pull命令用于从远程版本库到本地版本库的抓取,并且会和本地版本库合并。而fetch命令跟pull的功能一样,唯一不同的地方在于不会自动与本地版本库合并。

先再远程版本库上创建一个Difference文件,使用fetch命令对其抓取,但发现本地版本库并没有Difference文件,如图17所示

 

图17 fetch命令

再使用diff命令查看有何不同,如图18所示,

 

图18 版本库差异

使用merge命令与本地版本库进行合并,如图19所示,

 

 

图19 版本合并

使用log命令查看历史记录,如图20所示

 

图20 版本历史纪录

 

 

四:王新平

 

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git的使用场景是非常多的,可以说软件工程的学生应该是必须会有的一个工具。

 

首先我的电脑是Windows的系统,我先安装了git,Windows的git安装相对来说比较简单点击下一步就可以了。

 

然后开始了我的git之旅。

 

第一:我新建了一个文件夹,把它当作了这次使用的版本库。

 

语句是这样的:1、$ mkdir xinping  2、$cd xinping   3、pwd

 

而后便创建了一个仓库,这个来说的话是比较简单的。

 

 

 

 

 

       接下来便是把这个版本库,变成Git可以管理的远程仓库了,执行的语句也在上边的截图中。

 

语句是这样的: $git init

 

瞬间Git就把仓库建立好了,当然现在还是一个空的仓库。

 

第二:我利用MarkdownPad 新建了一个文件git.md,并且把它放在了版本库的文件夹中。

 

 

 

 

 

现在需要执行语句把这个git.md提交到版本库,只有这样以后我们对它的更改就可以随时记录了。

 

语句是:$git add git.md

 

        $git commit  -m “git file”

 

 

 

第三:我们对里面的文件进行修改,然后提交修改,可以查看到修改的记录。

 

首先我们对git.md就行修改

 

 

 

 

 

然后此时我们利用git可以查看文件的状态

 

语句:git status

 

下边的命令,我们可以知道,文件是被修改过的,但是没有准备提交的修改。

 

 

 

虽然git告诉我们文件被修改了,但是如何查看修改的内容呢,所以要使用git diff的命令查看。

 

 

 

这样我们就可以看到详细的修改了。

 

接下来我们需要把修改的后的文件重新提交到仓库这样我们就放心多了。

 

执行的语句和第一次提交的过程是一样。

 

$git add git.md

 

$git commit -m “add git”

 

 

 

在这一节我们会知道如果需要掌握工作区的状态使用git status命令

 

当然啦,如果你需要知道更加详细的修改情况呢,请使用git diff

 

第四:我们链接远程仓库,使用push语句把我们的修改提交到远程仓库

 

首先我们做出修改

 

 

 

首先我们还是使用之前的add和commit的语句提交到本地仓库。

 

 

 

然后我们把修改后的推送到远程的github仓库中

 

语句:git push -u origin master

 

 

 

如上图我们提交成功。

 

现在我们可以看一下我们远程的仓库。我们发现之前的修改已经成功的push到了远程仓库。

 

 

 

第五:我们执行fetch的语句,把最新的文件更新到本地

 

首先我们在远程端把之前的文件修改一下。

 

 

 

修改之后,我们本地的仓库如何同步呢,这里我们使用fetch语句

 

语句是:git fetch origin master

 

 

 

这个时候我们执行语句 git diff origin/master

 

我们可以在分支上看到修改

 

 

 

但是现在本地还是没有修改的,最后一步需要合并到本地的修改。

 

语句:git merge origin/master

 

 

 

这样fetch全部流程就结束了,我们查看一下本地的修改情况

 

 

 

我们会发现已经修改成功了。

 

第六:pull命令,pull命令也是吧远程最新的版本更新到本地,但是pull比较直接,不需要执行merge会直接合并到当前的分支。

 

首先我们对远程文件进行修改

 

 

 

然后我们本地执行pull的语句:git pull origin master

 

 

 

然后我们会发现直接便修改成功了

 

 

 

第七我们最后学一下克隆clone的命令

 

首先我们在github新建一个仓库叫做xinpingxin

 

 

 

新建之后,我们会发现github有一个新的仓库。然后我们在本地执行语句:git clone git@github.com:Github的帐户名/Github仓库名.git

 

 

 

这个时候因为还在之前的仓库中,我们会发现之前文件夹里出来了一个新的文件夹,也就是说克隆成功了。

 

 

 

第八:需求文档我做了一些工作

 

作业3 CanTool需求文档

1.温浩

组织小组成员对项目内容进行会议讨论,经过商议作出以下决定:

本次的需求文档将项目按照功能大体划分为3部分,每一部分附有功能介绍和结构图。

文档格式使用markdown,编辑器使用markdownPad

首先编写一个需求文档的框架。

 

上传到github中的版本库中

 

依次使用,add commit tag 命令,上传需求文档框架并设置了版本号v0.0,在github中如下:

修改需求文档:添加一个版本记录表格

首先在本地上修改需求文档框架,如下:

 

 

接下来在本地提交 add、commit

 

在上传到版本库之前,考虑到期间队员对远程版本库的修改,需要首先保证本地与版本库相同。使用之前重点尝试的git fetch,git diff origin/master

 

果然发现本地版本库和远程版本库不一致。

与本地版本库合并

查看本地文件

果然除了自己添加的表格,还有队友添加的部分。

上传至远程版本库

再去github上看一下,进行确认

关于冲突问题,除了廖老师构造的本地冲突外,暂时又发现了两种。

1.github上,一个其他分支发送了一个pull requests. master分支有许多自己有,请求分支没有的地方。请求分支本身也有新增加的部分 ,pull request是无法接受的:

2.git pull时,遇到不能通过简单添加完成的合并时,也会有冲突发生:

 

 

 接下来由组内成员分别完成功能模块的内容填写。

二、纪春洋

主要负责数据模块的功能需求,简单的UseCase和描述如下:

          

github远程库的部分记录如下:

 三:王而川

主要负责数据接收与发送模块的功能需求,简单的UseCase和描述如下:

四:王新平

主要负责设定模块,设定模块的用例图如下;

posted @ 2017-10-08 21:37  17现代软件工程第八组  阅读(409)  评论(0编辑  收藏  举报