博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git-实验报告
阅读量:6449 次
发布时间:2019-06-23

本文共 3734 字,大约阅读时间需要 12 分钟。

“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 test2.公共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 
现在你可以在创建标签的时候使用-s 参数来创建“签名的标签”: $ git tag -s stable-1 1b2e1d63ff 如果没有在配置文件中配GPG key,你可以用-u参数直接指定。 $ git tag -u
stable-1 1b2e1d63ff

转载于:https://www.cnblogs.com/gaosheng-221/p/6706955.html

你可能感兴趣的文章
java递归深度限制_为什么我可以达到不确定的最大递归深度?
查看>>
java更新停止程序_不停止JVM动态更新Java类
查看>>
java怎么创建属性类_怎么建立java类属性
查看>>
怎么让access数据库连接到Java_如何将Java连接到MS Access数据库
查看>>
java企业级应用开发设计总结_JavaEE(企业级应用开发)学习路线及知识总结
查看>>
java8u162环境_java - 日志文件未使用log4j 1.2.17和java8u162进行翻转 - 堆栈内存溢出...
查看>>
java如何导入扫描类_java – 导入扫描程序类的问题
查看>>
java迷你图书管理_JAVA高级特性——迷你图书管理系统(DOM4J操作存储集合中的对象)...
查看>>
java实现pdf旋转_基于Java实现PDF文本旋转倾斜
查看>>
java二维数组内存模型_C++二级指针第二种内存模型(二维数组)
查看>>
java static import 与 import_Java中的import和static import语句之间有什么区别?
查看>>
python time库3.8_python3中datetime库,time库以及pandas中的时间函数区别与详解
查看>>
java 代替Python_Java总是“沉沉浮浮”,替代者会是Python?
查看>>
贪吃蛇java程序简化版_JAVA简版贪吃蛇
查看>>
poi java web_WebPOI JavaWeb 项目 导出excel表格(.xls) Develop 238万源代码下载- www.pudn.com...
查看>>
java 顶点着色_金属顶点着色器绘制纹理点
查看>>
我php第一个页面,你的第一个启用了 PHP 的页面
查看>>
java打印等边三角市,java实现打印正三角的方法,java实现打印三角
查看>>
php任意字符,PHP中把字符串中的任意连续字符换成一个对应字符
查看>>
php 修改文件最后修改时间,PHP如何获取文件最后修改时间?
查看>>