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 ...
随机推荐
- latex如何插入空白行
1.~\\:一行空白2.\\[行距]:可加入任意间距的空白行 [xpt]
- 编程语言分类和Python解释器介绍
主要内容: 一.编程语言分类和介绍 二.Python解释器分类和介绍 一.编程语言分类和介绍 1.编程语言分类 编程语言的发展依次经历了机器语言.汇编语言和高级语言. 2.编程语言的介绍 2.1 ...
- 转)GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以”为所欲为”, ...
- Centos7 下mariadb安装
1.创建 /etc/yum.repos.d/MariaDB.repo vim /etc/yum.repos.d/MariaDB.repo 添加如下内容: [mariadb]name=MariaDB ...
- mysql常见错误/usr/local/mysql/bin/mysqld: [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
出现这种情况多数是找不到data目录,还有就是对data目录没有写入权限.
- Java 设计模式系列(二二)责任链模式
Java 设计模式系列(二二)责任链模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求 ...
- msys2 + clion安装所需的mingw64编译环境
pacman -S mingw-w64-x86_64-toolchain 输出结果为: $ pacman -S mingw-w64-x86_64-toolchain:: 在组 mingw-w64-x8 ...
- 如何用Python实现常见机器学习算法-1
最近在GitHub上学习了有关python实现常见机器学习算法 目录 一.线性回归 1.代价函数 2.梯度下降算法 3.均值归一化 4.最终运行结果 5.使用scikit-learn库中的线性模型实现 ...
- IntelliJ IDEA 2017版 快捷键CTRL + SHIFT + A无效如何调试(详细的开启idea自动make功能 )
1.前景描述 因为我把编译器的快捷键都设置成eclipse模式了,所以要做热部署的时候,需要CTRL + SHIFT + A --> 查找Registry --> 找到并勾选compile ...
- .NET基础 (19)多线程
多线程编程的基本概念1 请解释操作系统层面上的线程和进程2 多线程程序在操作系统里是并行执行的吗3 什么是纤程 .NET中的多线程1 如何在.NET程序中手动控制多个线程2 如何使用.NET的线程池3 ...