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的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. 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 教程 -- 基于自己学习记录的更多相关文章

  1. SVN教程 -- 基于自己学习记录

    SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控 ...

  2. git教程,待学习

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git教程: Git简介Git的诞 ...

  3. Jquery基础教程第二版学习记录

    本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...

  4. gulp入门学习教程(入门学习记录)

    前言 最近在通过教学视频学习angularjs,其中有gulp的教学部分,对其的介绍为可以对文件进行合并,压缩,格式化,监听,测试,检查等操作时,看到前三种功能我的心理思想是,网上有很多在线压缩,在线 ...

  5. 8小时入门Git之团队合作学习记录

    Git几个重要的区域 工作流程

  6. 面向对象与基于对象 学习记录 thread举例

    /********************************************************************/* @file* @author def< qq gr ...

  7. 学习廖雪峰的Git教程4--继续学习分支管理

    查看分支 git branch -a 查看远程分支 git branch 查看本地分支 创建分支 git checkout -b branch-name 在远程创建一个属于自己的分支 删除分支 删除本 ...

  8. Git学习记录 力做全网最强入门教程

    目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...

  9. 廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结

    廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结 本教程主要是个人的 Git 学习总结. 主要参考博客: 廖雪峰 Git 教程 Git-Cheat-Sheet 文章目录 廖雪峰 Gi ...

随机推荐

  1. GBDT,Adaboosting概念区分 GBDT与xgboost区别

    http://blog.csdn.net/w28971023/article/details/8240756 ============================================= ...

  2. Go and Beego Development

    1. Beego wiki in en and cn https://beego.me/ For API development: https://beego.me/blog/beego_api 2. ...

  3. interrupt和isInterrupted的基本使用方法

    java线程是协作式,而非抢占式 调用一个线程的interrupt() 方法中断一个线程,并不是强行关闭这个线程,只是跟这个线程打个招呼,将线程的中断标志位置为true,线程是否中断,由线程本身决定. ...

  4. 使用net Manager工具配置远程连接oracle

    一,在服务端配置oracle端口在命令行中输入netca命令,打开相关配置默认端口号为1521 二,配置端口后使用Telnet工具调试端口是否联通 在命令行输入telnet 服务器ip 端口号 三,找 ...

  5. mybatis调用存储过程获得取返回值

    总体思路:map传值 controller: Map<String,Object> m=new HashMap<String,Object>(); m.put("na ...

  6. 递归中traverse小人 & dc女王的区别

    TRAVERSE 是一个小人, 拿着一个记事本, 顺着二叉树走, 走过一个, 在本子上面记下来 DIVIDE & CONQUER 是女王接到这个任务, 找两个小弟A和B, 让A和B先去收集, ...

  7. python简单爬虫(一)

    学习python前纠结了下,到底是应该一个个知识点吃透,然后写些小程序.还是应该快速掌握基础语法,快速实践.思考后认为前者这么学习速度真心不高,于是花2天时间看了下python3的语法,虽然很多都不明 ...

  8. Java 设计模式系列(二)简单工厂模式和工厂方法模式

    Java 设计模式系列(二)简单工厂模式和工厂方法模式 实现了创建者和调用者的分离.分为:简单工厂模式.工厂方法模式.抽象工厂模式 简单工厂模式.工厂方法模式都很简单,就不详细介绍了. 一.简单工厂 ...

  9. PHP 微信公众号开发 - 获取用户信息

    项目微信公众号开发,记录获取用户微信号信息,和用户openid 1,登录微信公众平台 点击登录微信公众平台 2,获取公众号开发信息 登陆之后在 开发->基本配置 3,设置IP白名单 在这里添加服 ...

  10. swift 创建UICollectionView

    // //  CollectionViewController.swift //  tab // //  Created by su on 15/12/8. //  Copyright © 2015年 ...