Git-实验报告

“Git 实战教程”实验报告

基本用法(下)

二、比较内容 1.比较提交 - Git Diff git diff命令的作用是比较修改的或提交的文件内容。 如何查看缓存区内与上次提交之间的差别呢?需要使用--cached参数: 2.比较分支 可以用 git diff 来比较项目中任意两个分支的差异。 $ git diff master test git diff 是一个难以置信的有用的工具,可以找出你项目上任意两个提交点间的差异。可以使用git help diff详细查看其他参数和功能。 3.更多的比较选项 如果你要查看当前的工作目录与另外一个分支的差别,你可以用下面的命令执行:

      # 切换到master
      $ git checkout master
      # 查看与test分支的区别
      $ git diff test
  你也以加上路径限定符,来只比较某一个文件或目录:
      $ git diff test file1
  --stat 参数可以统计一下有哪些文件被改动,有多少行被改动:
      $ git diff test --stat

三、分布式的工作流程
1.分布式的工作流程 首先,我们假设另一个用户也用shiyanlou用户登录,只是工作在不同的目录下开发代码,实际工作中不太可能发生,大部分情况都是多个用户,这个假设只是为了让实验简化。
该用户需要从git仓库进行克隆:

    # 进入到临时目录
    $ cd /tmp
    # 克隆git仓库
    $ git clone /home/shiyanlou/gitproject myrepo
  在myrepo做了一些修改并且提交:
  myrepo修改完成后,如果我们想合并这份修改到gitproject的git仓库该如何做呢?
  可以在仓库/home/shiyanlou/gitproject中把myrepo的修改给拉 (pull)下来。
  执行下面几条命令:
    $ cd /home/shiyanlou/gitproject
    $ git pull /tmp/myrepo master
    这就把myrepo的主分支合并到了gitproject的当前分支里了。
    如果gitproject在myrepo修改文件内容的同时也做了修改的话,可能需要手工去修复冲突。

  git pull命令执行两个操作: 它从远程分支(remote branch)抓取修改git fetch的内容,然后把它合并git merge进当前的分支。
  gitproject里可以用git fetch 来执行git pull前半部分的工作, 但是这条命令并不会把抓下来的修改合并到当前分支里:
    $ git fetch myrepo
  获取后,我们可以通过git log查看远程分支做的所有修改,由于我们已经合并了所有修改,所以不会有任何输出:
    $ git log -p master..myrepo/master
  当检查完修改后,gitproject可以把修改合并到它的主分支中:
    $ git merge myrepo/master
  如果我们在myrepo目录下执行git pull会发生什么呢?
  myrepo会从克隆的位置拉取代码并更新本地仓库,就是把gitproject上的修改同步到本地:

  因为myrepo是从gitproject仓库克隆的,那么他就不需要指定gitproject仓库的地址。
  因为Git把gitproject仓库的地址存储到myrepo的配置文件中,这个地址就是在git pull时默认使用的远程仓库:
    $ git config --get remote.origin.url
  如果myrepo和gitproject在不同的主机上,可以通过ssh协议来执行clone 和pull操作:
    $ git clone localhost:/home/shiyanlou/gitproject test
2.公共Git仓库
    开发过程中,通常大家都会使用一个公共的仓库,并clone到自己的开发环境中,完成一个阶段的代码后可以告诉目标仓库的维护者来pull自己的代码。
    如果你和维护者都在同一台机器上有帐号,那么你们可以互相从对方的仓库目录里直接拉所作的修改,git命令里的仓库地址也可以是本地的某个目录名:
      $ git clone /path/to/repository
      $ git pull /path/to/other/repository
    也可以是一个ssh地址:
      $ git clone ssh://yourhost/~you/repository
3.将修改推到一个公共仓库
    通过http或是git协议,其它维护者可以通过远程访问的方式抓取(fetch)你最近的修改,但是他们 没有写权限。如何将本地私有仓库的最近修改主动上传到公共仓库中呢?
    最简单的办法就是用git push命令,推送本地的修改到远程Git仓库,执行下面的命令:
      $ git push ssh://yourserver.com/~you/proj.git master:master
      或者
      $ git push ssh://yourserver.com/~you/proj.git master
  git push命令的目地仓库可以是ssh或http/https协议访问。
4.当推送代码失败时要怎么办
    如果推送(push)结果不是快速向前fast forward,可能会报像下面一样的错误:
        error: remote ‘refs/heads/master‘ is not an ancestor of local
        ‘refs/heads/master‘.
        Maybe you are not up-to-date and need to pull first?
        error: failed to push to ‘ssh://yourserver.com/~you/proj.git‘
    这种情况通常是因为没有使用git pull获取远端仓库的最新更新,在本地修改的同时,远端仓库已经变化了(其他协作者提交了代码),
    此时应该先使用git pull合并最新的修改后再执行git push:
        $ git pull
        $ git push ssh://yourserver.com/~you/proj.git master

四、Git标签
1.轻量级标签
我们可以用 git tag不带任何参数创建一个标签(tag)指定某个提交(commit):

        # 查看git提交记录
        $ git log
        # 选择其中一个记录标志位stable-1的标签,注意需要将后面的8c315325替换成仓库下的真实提交内,commit的名称很长,通常我们只需要写前面8位即可
        $ git tag stable-1 8c315325
        # 查看当前所有tag
        $ git tag stable-1
      这样,我们可以用stable-1 作为提交 8c315325 的代称。  前面这样创建的是一个“轻量级标签”。
      如果你想为一个tag添加注释,或是为它添加一个签名, 那么我们就需要创建一个 "标签对象"。

  标签对象
      git tag中使用-a, -s 或是 -u三个参数中任意一个,都会创建一个标签对象,并且需要一个标签消息(tag message)来为tag添加注释。
      如果没有-m 或是 -F 这些参数,命令执行时会启动一个编辑器来让用户输入标签消息。
      当这样的一条命令执行后,一个新的对象被添加到Git对象库中,并且标签引用就指向了一个标签对象,而不是指向一个提交,这就是与轻量级标签的区别。
      下面是一个创建标签对象的例子:
        $ git tag -a stable-2 8c315325 -m "stable 2"
        $ git tag
  2.签名的标签
      签名标签可以让提交和标签更加完整可信。如果你配有GPG key,那么你就很容易创建签名的标签。
      首先你要在你的 .git/config 或 ~/.gitconfig 里配好key。  下面是示例:
      你也可以用命令行来配置:
          $ git config (--global) user.signingkey <gpg-key-id>
      现在你可以在创建标签的时候使用-s 参数来创建“签名的标签”:
          $ git tag -s stable-1 1b2e1d63ff
      如果没有在配置文件中配GPG key,你可以用-u参数直接指定。
          $ git tag -u <gpg-key-id> stable-1 1b2e1d63ff
时间: 2024-08-25 16:21:46

Git-实验报告的相关文章

20145207 实验三 敏捷开发与XP实践 实验报告

实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问同学"."看书"等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等).报告可以

20145307第五次JAVA学习实验报告

20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名称: 一.实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端 4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出

java第三次实验报告

20155317 实验三<Java面向对象程序设计>实验报告 一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器>课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问同学"."看书&quo

20145321 实验三实验报告

20145321 实验三实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 实验步骤 下载.设置git并上传代码 1.下载并安装好git,在cmd中输入git指令: 2.在命令行下模式下给git配置用户名和邮箱: 3.添加公钥: 4.测试是否联通,并上传代码: 5.代码上传成功. PSP 步骤 耗时 百分比 需求分析 10分钟 10% 设计 20分钟 20% 代码实现 30分钟 30% 测试 10分钟 10% 分析总结 30分钟 30% 合作伙伴 刘俊谦

Java实验报告(实验四)

北京电子科技学院(BESTI) 实     验    报     告 课程:Java    班级:1352班      姓名:王国伊    学号:20135207 成绩:             指导教师:娄嘉鹏       实验日期:2015.6.9 实验密级:无       预习程度:           实验时间:15:30-18:00 仪器组次:         必修/选修:选修     实验序号:四 实验名称:  服务器与客户端间传送信息加解密 实验目的与要求: 1.没有Linux基础

JAVA实验报告三:敏捷开发与XP实践

实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构建.软件测试和软件维护. 人们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想体系.软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”.软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光

第三次实验报告 敏捷开发与XP实践

一.  实验内容 (一)敏捷开发与XP 摘要:一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈.假设简单性.递增更改.提倡更改.优质工作.XP软件开发的基石是XP的活动,包括:编码.测试.倾听.设计. 学习:XP是一种更加灵活的开发方式和理念,通过迅速的反应及时充分修改程序,保证所有团队成员对资源和责任的共享:适用于“小而精”的团队开发.同时,其所倡导的“倾听”也是实现了程序开发“需求至上”的终极目标. (二)编码标准 编码是一个即主观又客观的过程,每个程序员都有他自己的编程

java实验报告三

实验三 敏捷开发与XP实践 一.实验内容 1. XP基础 2. XP核心实践 3. 相关工具 二.实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构建.软件测试和软件维护. 人们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想体系.软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”.软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户

java实验三实验报告

一.实验内容 1. XP基础 2. XP核心实践 3. 相关工具 二.实验过程(本次试验是在自己电脑上完成,没有使用实验楼) (一)敏捷开发与XP 1.XP是以开发符合客户需要的软件为目标而产生的一种方法论 2.XP是一种以实践为基础的软件工程过程和思想 3.XP认为代码质量的重要程度超出人们一般所认为的程度 4.XP特别适合于小型的有责任心的.自觉自励的团队开发需求不确定或者迅速变化的软件 一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈.假设简单性.递增更改.提倡更改.优

20135231 JAVA实验报告三:敏捷开发与XP实践

---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中