2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push

/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。

(1)创建版本库:

首先在本地电脑新建HelloWorld文件夹,而后打开Git Bash,通过git init命令把这个目录变成Git可以管理的仓库:

而后编辑HelloWorld.c文件

(2)设置用户名、邮箱,添加、提交及查看状态、日志

a. 设置用户名和邮箱

b. 将HelloWorld.c添加至暂存区,再提交到本地仓库

c 查看状态、日志

git log显示从最近到最远的提交日志,其中commit id为版本号,可使用git reset --hard commit id实现版本回退

(3)在github上建立远程仓库并添加SSH KEY

建立远程仓库

生成SSH KEY

这里要特别注意的是其中邮箱是你github账号注册的邮箱,要不然无法将本地仓库和本地仓库关联起来,出现类似下图的错误

在github上添加SSH KEY

(4)关联仓库并将本地仓库上传到远程仓库

这时我们查看github上的对应仓库,会发现已然同步。

由于远程库是空的,因而第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

(5)从远程库fetch、pull、clone

为了便于比较fetch和pull的区别,首先将本地的工作空间中HelloWorld.c文件修改如下并提交至本地仓库

通过git log可查看具体提交情况

a、使用git fetch从远程获取最新版本到本地

这里git branch -a是显示所有分支情况(可看出目前分支位于master),而git branch -r是只显示远程分支

下图中使用git diff命令查看不同分支的情况,两者有差异,说明git fetch不会自动merge,那么我想merge该如何呢?

使用git merge命令,即合并分支,按照预想的应该是两分支有冲突,合并的时候会出现错误,然后得先解决冲突才能合并,可会出现下面的情况

what???ㄟ(▔︹▔ㄟ) (╯▔︹▔)╯

Already up-to-date 说明已经合并了啊,可是切换到对应的分支,分别查看HelloWorld.c的内容仍然是不一样,这是为什么呢?

这里推荐一个gitk的命令,它可将分支情况很好的可视化以及历史信息显示出来,

举一个例子来更好地说明这种情况,假设在branch1分支上提交历史如下

然后建立一个新的分支branch2,继续提交四次:

此时branch1的头指针指向D,branch2的头指针指向H。"Already up-to-date"说明你想要合并的分支已然成为你现在分支的parent,这里D便是H的parent

那么将branch1分支合并到branch2是不管用的,因为branch2并没有发生改变,要想合并就需要将branch1的指针提交历史变成

即使用git reset --hard H强制变成branch1分支的指针指向H

回到问题中,remotes/origin/master显然是master的parent,因此无法将其合并到master分支中。

下图中git fetch origin master:temp 这句命令的意思是:将远程origin仓库的master分支下载到本地并新建一个分支temp

显然这种情况是可以将master分支合并到temp分支上

b、git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。

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

比如,取回origin主机的master分支,与本地的master分支合并,需要写成下面这样。

git pull origin master:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git pull origin master

上面命令表示,取回origin/master分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

c、可使用git clone将远程库克隆到本地仓库

d、在远程仓库新建一文件,而后git fetch、git clone

新建test.txt文件

git merge

git pull

(6)总结:

整个过程中我们可以看出git作为分布式系统的强大之处,而远程仓库和本地仓库既相互独立而又紧密相连,分支的存在使得工作能够分工而有条理地进行。由上我们也可以得知,"git fetch"命令执行完毕之后,还不会立即将下载的文件合并到当前工作目录里,要是想将从远程分支下载的文件更新到工作目录里,需要执行一个合并("git merge")操作。"git pull"的问题是它把过程的细节都隐藏了起来而是自动合并,这样导致本地工作目录在未经确认的情况下就会被远程分支更新,一旦代码有问题,很难找到错误的地方,因而建议使用git fetch+git merge。

转载于:https://www.cnblogs.com/bywb/p/5873611.html

第二章作业第2题--苏志华相关推荐

  1. 第二章作业-第3题-万世想

    第3题是:完成小组的"四则运算"项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产生冲突 ...

  2. c语言程序设计第二章的答案,C语言程序设计第二章作业参考答案

    C语言程序设计第二章作业参考 <C语言程序设计>第2章作业 布置日期:2017-10-23 截止日期:2017-11-3 一.单选题(每小题4分,共100分) 1.以下说法中正确的是___ ...

  3. [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法

    首先是Windows10 + Visual Studio 2019 搭建OpenGL环境可以查看如下链接: 萌新向!!!Windows10 + Visual Studio 2019 搭建OpenGL环 ...

  4. 第二章第十六题(几何:六边形面积)(Geometry: area of a hexagon)

    第二章第十六题(几何:六边形面积)(Geometry: area of a hexagon) 2.16(几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积.计算六边形面积的公式是: ...

  5. 《计算机网络》第二章作业

    <计算机网络>第二章作业 复习题 R5 运行在一台主机上的一个进程,使用什么信息来标识运行在另一台主机上的进程? 在两个不同端系统上的进程,通过跨域计算机网络交换报文(message)而相 ...

  6. 第二章计算机网络答案,计算机网络第二章作业参考答案

    计算机网络第二章作业参考答案 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 2. A noiseless 8-kHz channel ...

  7. 汽车理论第六章matlab,汽车理论第二章作业

    汽车理论第二章作业 汽73 许四聪 20007010806 2-7: 1)汽车功率平衡图: 接合1-3的数据编程如下: n=600:0.5:4000; T=-19.313+295.27*(n/1000 ...

  8. 尚学堂 JAVA第二章作业

    文章目录 尚学堂JAVA 第二章作业 尚学堂JAVA 第二章作业 第二章比较简单写得很粗略 import java.util.Scanner; import java.math.*;/*** 作业2* ...

  9. 第二章计算机网络答案,《计算机网络》第二章-作业参考答案

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

最新文章

  1. python引用文件 mode写在后面还是前面,python3 文件操作常用mode参数用法详解
  2. db2 如何导出insert语句_实用技术:MYSQL特别实用的几种SQL语句送给大家,让你的SQL高大上...
  3. js 加alert后才能执行方法
  4. 剑桥制造学院下的研究硕士项目!
  5. 洛谷 P1463 [POI2002][HAOI2007]反素数
  6. SAP Fiori国际化支持之UI5 RTL support的实现原理
  7. 我的世界服务器氪金系统怎么做,[经济]PPRMB销售系统 1.3.1 —— 地图扫码自动到账,氪金系统如此简单[全版本]...
  8. OKR组织敏捷目标和绩效管理第二课 O、KR和案例讲解
  9. python求梯形面积_Python - 教你用Python进行简单的面积计算
  10. python发送qq文件_怎么用qq邮箱发文件-十分钟教你使用Python发送邮件(复制可用)...
  11. 模拟外线O口呼入时,看不到来电显示号码?
  12. 【算法】3 由招聘问题看随机算法
  13. unity 调用打印机打印图片问题
  14. 爬取天气时常用的城市代码(备忘)
  15. set -x 与 set +x
  16. electron-builder打包过程中报错——网络下载篇
  17. Java调用Cplex的基础简单教程
  18. LabelMe2seg无法生成真值图片的问题解决
  19. mysql gbk编码 字节数,mysql中utf-8编码数据库转换成GBK编码的问题
  20. 产品体验报告——准备工作思维导图+模板转载

热门文章

  1. [BUUCTF-pwn]——picoctf_2018_shellcode
  2. springSecurity源码分析——DelegatingFilterProxy类的作用
  3. Collections.binarySearch用法
  4. Intel(R)Turbo Boost Technology Driver上面显示为感叹号
  5. Ubuntu字符界面输入密码始终提示错误 login incorrect 解决办法
  6. JXLS 2.4.0系列教程(四)——拾遗 如何做页面小计
  7. 继承extends、super、this、方法重写overiding、final、代码块_DAY08
  8. Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
  9. [转]PHP程序中的汉字编码探讨
  10. stripslashes和addslashes的区别