Git 教程 -- 基于自己学习记录
Git 教程 -- 基于自己学习记录
1. 引言
由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这。
2. 注册登录 GitHub。
3. 选择一个仓库克隆到本地,这里以我自己的一个私人项目为例,克隆到本地。
git clone https://github.com/weixuqin/love_source.git //克隆项目到本地
4. 创建dev 分支,并切换到dev分支。
git checkout -b dev //创建dev分支
git branch //查看当前分支
合并分支, 删除分支。
vim README.md //修改操作
git add README.md //提交
git commit -m "branch test" //提交
git checkout master //切回master分支
git merge dev //合并分支
git branch -d dev //删除dev分支
git branch //查看当前分支
衍合分支。
git rebase dev
合并(merge)和衍合的区别:
merge把两个分支最新的快照以及两者的共同祖先进行三方合并,合并的结果是产生一个新的提交对象。
衍合是把在一个分支里发生的变化补丁在另一个分支重新打一遍。
衍合最后生成的快照,其实和普通的三方合并的快照内容一模一样。虽然最后整合得到的结果没有任何区别,
但是衍合能产生一个更为整洁的提交历史。如果观察一个衍合过的分支的历史记录,看起来会更清楚:仿佛所有修改都是在一跟线上先后进行的,尽管实际上他们原本是同时并行发生的。
5. 撤销操作。
回退到上一个版本
reset 用法:
git reset --hard HEAD^
revert 用法:
git revert HEAD
git revert 和 git reset的区别
- git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
- 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
- git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
丢弃工作区的修改:
我们在已经提交的test.txt文件中添加一句话:
真是愚蠢!
使用 git checkout -- test.txt
撤销这句话的内容。
撤销暂存区的修改:
我们在已经提交的test.txt文件中添加一句话:
真是愚蠢!
并将test.txt文件add到暂存区。
使用 git reset HEAD test.txt
将test.txt,重新放回工作区。
6. git标签管理。
创建标签:git tag <name>
。
用 git tag
查看所有标签。
删除标签:git tag -d <tagname>
。
7. git fetch 和 push 用法。
fetch是将远程分支下载下来,但不会进行合并,
push是将本地分支上传到远程分支。
这里只进行fetch的演示,因为远程的git仓库我不想修改。
8. Git打补丁。
Git 提供了两种补丁方案,一是用 git diff
生成的UNIX标准补丁 .diff
文件,二是 git format-patch
生成的 Git 专用 .patch
文件。
.diff
文件只是记录文件改变的内容,不带有 commit 记录信息,多个 commit 可以合并成一个 .diff
文件。
.patch
文件带有记录文件改变的内容,也带有 commit 记录信息,每个 commit 对应一个 .patch
文件。
a. 创建patch 文件的常用命令行。
某次提交(含)之前的几次提交:
git format-patch [commit sha1 id]-n //n指从sha1 id对应的commit开始算起n个提交。
某两次提交之间的所有patch:
git format-patch [commit sha1 id]..[commit sha1 id]
b. 创建diff文件的常用方法。
git diff [commit sha1 id] [commit sha1 id] > [diff文件名]
Git 教程 -- 基于自己学习记录的更多相关文章
- SVN教程 -- 基于自己学习记录
SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控 ...
- git教程,待学习
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git教程: Git简介Git的诞 ...
- Jquery基础教程第二版学习记录
本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...
- gulp入门学习教程(入门学习记录)
前言 最近在通过教学视频学习angularjs,其中有gulp的教学部分,对其的介绍为可以对文件进行合并,压缩,格式化,监听,测试,检查等操作时,看到前三种功能我的心理思想是,网上有很多在线压缩,在线 ...
- 8小时入门Git之团队合作学习记录
Git几个重要的区域 工作流程
- 面向对象与基于对象 学习记录 thread举例
/********************************************************************/* @file* @author def< qq gr ...
- 学习廖雪峰的Git教程4--继续学习分支管理
查看分支 git branch -a 查看远程分支 git branch 查看本地分支 创建分支 git checkout -b branch-name 在远程创建一个属于自己的分支 删除分支 删除本 ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- 廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结
廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结 本教程主要是个人的 Git 学习总结. 主要参考博客: 廖雪峰 Git 教程 Git-Cheat-Sheet 文章目录 廖雪峰 Gi ...
随机推荐
- C#抽象类与接口的区别【转】
一.抽象类: 抽象类是特殊的类,只是不能被实例化(可以用派生类实例化基类对象):除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法(当然它可以有普通方法),这是普通类所不能的.抽象方 ...
- swagger2 注解整体说明
@Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置&q ...
- SO_LINGER
[SO_LINGER] 在默认情况下,当调用close关闭socket的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然 ...
- leetcode 121 股票买卖问题系列
描述: 给一些列数字,表示每条股票的价格,如果可以买卖一次(不能同一天买和卖),求最大利益(即差最大). 其他三道问题是,如果能买卖无限次,买卖两次,买卖k次. 题一: 实质是求后面一个数减前一个数的 ...
- ajax传递数组及后台接收
ajax传递的是{"items":arr},其中arr=[]; 在后台String[] items=req.getParameterValues("items" ...
- FIX protocol tutorial : Fix Session is not connecting how to diagnose it ?
In this blog post of FIX protocol tutorial series I would like to share my experience with connectiv ...
- JavaScript事件 DOMNodeInserted DOMNodeRemoved
JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定交互的瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码. 13.1 事件流 ...
- python 探测网站目录的GUI程序-乾颐堂
1.pyqt4写的界面 find_ui.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- $_SERVER["HTTP_HOST"]
$_SERVER["HTTP_HOST"]访问的网站的域名
- python多版本共存问题
1.环境变量配置,pip路径别忘记加入,否则pip不好使. 2.如果改名python.exe为其他名字,复制一份保留,否则pip容易无法启动进程 参见爆栈: http://stackoverflow. ...