完成下面的题目,并在小组博客中写出整个操作过程及学习心得(图文并茂):(每人都要在小组博客中写出来,并注明姓名)
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上的文档确实是最新的文档。
需求文档地址:https://github.com/a2017218057/zjc/blob/master/%E9%A1%B9%E7%9B%AE%E9%9C%80%E6%B1%82.md
张金琛
1.注册github账号,组长建立一个Project
注册成功后登录,然后创建一个Project:
创建完成以后,可以看到以下Project(之前创建好的,为了写文本,重新截图)
添加Collaborators,并添加zykgnyue 为Collaborator:
2.首先从https://git-scm.com/downloads下载安装最新版本Git,配置好环境变量,这样就可以正常使用Windows Powershell。
下面介绍指令:
git clone
这个命令是将远程文件克隆到本地,文件链接为https://github.com/a2017218057/zjc
在Powershell中执行命令:
克隆成功,本地多了一个文件,在D:目录下
然后在zjc文件夹下添加zjc_helloworld文件夹,并在文件夹中添加zjc.txt,内容为“aaa”。
git status
此命令用来查看本地空间的状态,如果有新建立的文件或者未提交修改的文件,将会给出提示:
这是我新建的文件“zjc_helloworld”,运行git status后显示这个文件未被跟踪,于是使用git add命令,将新文件包含进去。
git add
这个命令是用来添加新的文件即未被跟踪的文件。
然后使用git status命令,此时显示新文件“zjc_helloworld”已被add成功。
git commit
这个命令用来将做出的修改提交到本地空间。
-m用来对此次提交添加信息,以便知道这次提交做出什么改变。
如果之前没有使用git add命令,也可以直接在git commit 命令后加上-a,即
git commit -a -m “add file to zjc”,等同于git add加上git commit命令。
git push
这个命令将本地空间的内容推送到远程空间中,保证两方的同步。
master->master意思是本地的master分支推送到远程的master分支。
打开远程项目地址:
本地空间的文件以及同步到远程空间。
git pull与git fetch
这两个命令是同步到本地空间的两种方式。
在网页Github上添加新文件:
提交后确认在远程空间已经添加了新文件:
在远程空间创建的新文件,在本地空间是不存在的,下面通过git pull和git fetch将其同步到本地空间。
git pull
这个指令将远程空间的文件同步到本地空间,并且进行合并,但是在合并时会有发生冲突的情况。
在本地空间新建文件“emmmm”,内容为“bbb”。
然后执行git pull命令
此时提示发生冲突,需要在提交之前移除或者移动冲突文件。
将本地空间的“emmmm”删除或者将内容修改为“aaa”,然后再进行git add/git commit/git pull操作,发现还是出现了报错:
此时txt内的内容是一样的:
我认为这是一个bug,即使本地空间和远程空间的文件内容一样,也不能完成同步。于是我只能将他删除,然后重复以上操作,成功同步到本地空间。
git fetch/git diff/git merge
git fetch用来将远程空间的内容提取到本地,不做其他操作。分支的合并需要用到git merge命令。将本地空间的“emmmm”文件删除,此时远程空间比本地空间多一个文件。
执行git fetch:
成功将远程空间fetch到本地,但本地仓库看起来没有发生变化。
这是因为git fetch仅仅将远程空间的内容提取到本地,不做其他操作,没有改变本地空间。
通过git diff指令可以查看它和本地仓库有什么不同:
git diff master origin 中,master 代表比较本地仓库的 master 分支;origin代表origin/master,即远程仓库的master分支,由于不会有歧义就进行了简写。
比较发现远程仓库多了文件emmmm.txt。下面将远程仓库这个改变合并到本地仓库,使用 git merge:
同时,本地空间也出现了新文件emmmm.txt:
完成同步。
——————————————————————————————————
马驰
a) 首先按照http://blog.csdn.net/xiaohanluo/article/details/53214933 中提到的方法在电脑上配置git环境(SSH方法可百度);
b) 接下来体验git这个神奇的工具,创建一个本地文件夹作为本地仓库,默认文件夹在/Users/beautiful/下,新建后cd进入文件夹进行git init ,生成本地.git;
c) 建立一个空仓库,命名为helloworld(非中文),此时未创建readme文件;
d) 将本地仓库与远程仓库进行关联,终端中输入git remote add origin https://github.com/slience2014/helloworld.git ;
e) 关联后终端输入vim README.md ,创建文件写入一些内容后退出;
f) 使用add/commit/push:
git add 命令可将该文件添加到缓存,添加文件或者修改文件,commit以及push之前使用;
git commit 提交到当前仓库中(感觉就是文件有改动的时候),-m后可以加一些说明来解释;
git push 将本地仓库新增或修改文件上传到远程仓库。
在网页端,可见创建了md文件;
g) 或者是我觉得可以直接用一些方便的工具来避免终端繁琐的命令行,图中使用了intelij编译器(eclipise vs也可以),集成了github,在perference里登录自己的github账号,可以图形化上传到仓库:
h) git log ,顺道用了下,可以显示当前仓库提交过的日志信息:
i) git branch 可以创建本地分支(-a 列出本地&远程分支,-r列出远程分支)。
![](https://i-blog.csdnimg.cn/blog_migrate/8cb707c738880231b2e601483cb2df27.png)
git checkout 可以切换分支,没有就创建一个指定分支(本地)。
这里我们可以首先创建一个本地分支,
再将本地分支push为远程分支:
分支在我理解中就是同一物体在不同时间线这种概念,主分支类似于一个指针,停留在软件开发比较完善成熟的地方,分支则用来拓展功能,如果功能完备,就可以合并进master,分支与分支之间互不影响,切换即可分别编写:
j) git fetch 从一个或多个其他存储库中获取分支和/或标签(统称为“引用”)以及完成其历史所必需的对象。 远程跟踪分支已更新(commit之后),需要将这些更新取回本地,这时就要用到git fetch命令。它可以获取远程代码仓库中与当前工作分支关联的 分支的最新代码,但不与本地工作分支进行合并。观察了下文件夹结构,/helloworld/.git/refs/heads/下的master文件总会随之改变。
k) git pull:相当于是从远程获取最新版本并merge到本地,相当于fetch+merge
我这边报错,后来询问同学查找资料得知,原因在于可能是我这两个分支的内容差别过大,这种情况下需要指定。
l) git clone 将远程仓库克隆到本地
git clone 可将属于自己或者属于他人的公共仓库克隆到本地,要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。我们可以对本地的内容进行修改或者增加新功能,但不一定可以上传到远程仓库,我们可以发送pull request给远程仓库,人家如果愿意的话再merge。
另外:当想更正别人仓库里的错误时,要走一个流程:先 fork别人的仓库,相当于拷贝一份,做一些 bug fix发起 pull request 给原仓库,让他看到你修改的 bug原仓库 review 这个 bug,如果是正确的话,就会 merge 到他自己的项目中至此,整个 pull request 的过程就结束了。
m) 项目版本对比
可以简单理解成我们的仓库就是一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。每次更新,都会有一个新的commit id。
n) github协作
已经被组长添加到Collaborators中,在本地直接将组长的远程仓库克隆下来:
使用intelji中所带的markdown插件来编辑项目需求文档:
编好使用add -commit-push命令上传到组长仓库中:
赵莹
本次作业为17现代软件工程第二次作业,首先要申请Github的帐号,由于在本科时使用过Github,因此直接sign in进入Github,初始页面如下图:
登陆后,需要新建repository,点击左上角“+”号按键“New Repository”,创建工程名cici630_1,包含readme文件,创建后如下图所示。
接下来需要安装github安装包,将项目从网页clone至本地路径,下图为安装好后的GitBash界面和clone的代码。
从下图可以看到已经复制到本地了。
同样的,使用Github的Windows客户端也可以看到新的工程已经被建立,如下图所示。
在此特意使用不同的创建工程目录,更方便看出二者创建的工程文件。
使用命令定位到当前工程,同时在本地添加文件hello.txt。
使用命令将文件同步到网页Github上去。
下图可看到1个文件被更改。
添加文件后会要求登录GitHub,在弹出框输入登录胡用户名和密码。
下图显示的是hello.txt文件还未更新时的命令。
更改过后的命令行如下图:
这时刷新网页版GitHub,可以看到此时hello.txt文件已经被更新,同步成功。
修改hello.txt文件,修改后如下图:
使用status指令,可以看到本地库中被修改却未被提交的文件。
修改hello.txt文件,加入一行:Enjoy Git!
使用diff指令可以得到此文件被修改的具体内容如下图所示。
按照之前的方法将文件同步。
从下图可以看到hello.txt文件在网页上看到已经被修改,同步成功。
最后练习在网页上修改文件,使用fetch语句抓取与本地不同的地方并显示出来。
同步到本地文件。
打开本地文件,可以看到文件已经被修改,与网页版对比可以看到同步成功。
李子祺
我完成的是第二次的作业,github的安装与使用。起初对github只是略有所闻,并没有实际操作过,通过此次作业我感受到github对于团队开发是十分重要的,可以很高效的管理团队每个人的代码,并且对于个人而言可以很方便的对自己负责的部分进行修改,也不会打乱团队里其他成员的代码结构:
Github登陆后初始界面,点击左上角加号按键New Rpository
通过此界面创建工程。
创建成功后的项目界面,工程名sanji1,包含readme文件
以上为安装好github以后,Git Bash的命令行界面
从网络端复制sanji1库到本地
本地文件夹内的sanji1,项目复制成功
转到本地库,在命令行会显示“(master)”字样
第一条命令先将本地的hello.txt文件加入暂存区,然后通过第二条命令将暂存区内容加载到当前分支,最后通过第三条命令将分支内容上传到网络库中(会出现github登陆界面)。
本地库与网络库hello.txt内容相同,同步成功
通过第一条与第二条指令,可以得到本地库中哪个文件被修改并且没有被提交,通过第二条语句可以得到此文件被修改的具体内容,之后通过之前同步的方法将修改后的同步到网络库中
内容与本地修改后一致,更改同步成功。
通过第一条命令将网络库变更处拉取下来,通过第二条语句查阅具体变动内容,然后通过第三条语句将变动更新到本地
本地文件内容与网络端内容一致,同步更新成功,git pull的效果也是将网络端的内容更新到本地,但是将git fetch和git merge的功能合二为一,不用等待任何命令直接将网络库的文件拉取覆盖当前本地库中对应的文件。
通过此次对github的学习,初步了解了相关命令语句的意义与作用,并进行了操作受益匪浅。
__________________________________________________________________
新尼
SHINEBAYAR BATZORIG
1.First You need to register in https://github.com/ It’ll looks like this.
2.Then go to this page https://git-for-windows.github.io/ and download Git
3.After register you can create project.
4.After create project download your project (this is my created project)
5.After download your project go to in your download folder extract zip file open with git bash
6.Now I use git clone command to synchronize with this https://github.com/BatzorigShinebayar/ModernSoftwareDevelopment/
7.Git status command. This command is used to view the current status of the project. If you got error make sure in your folder got .git folder without this folder git bash got error like this fatal: Not a git repository ( or any of the patent directories): .git .when I got this error I use ls command this command will show you file list. In my scenario I got this files FirstApp.java ModersoftwareDevelopment/ (which is folder) Python.py README.md
My .git fil was in this folder ModersoftwareDevelopment/ so I use cd command. this command change your current directory. After change my directory I use git status command it work fine.
8.Git add command. This command adds the file to the cache.
You can see the file has been added, A on behalf of the addition, M on behalf of the amendment, D on behalf of the deletion (?? This undefined file.)
9.git commit command. Use the git add command to write the contents of the snapshot to the cache, and execute git commit to add the contents of the cache to the repository.
10.git push command. Use git commit add code to the local repository and push operations to store the data permanently into the Git repository. After the success of the operation, other developers can see the new submission changes (I use git pull origin master command. this will show you all changes in your project).