一些有用的链接:

https://www.git-scm.com/

http://nvie.com/posts/a-successful-git-branching-model/

Git开发模式:

建议至少有一个master和develop分支。master只做版本维护工作,develop用于开发。开发完成且测试通过后合并到master。

常用场景:

  •  撤销提交到Remote的commit或者本地回滚

强制方式:

如果你推送到remote的commit没有被其他人pull过,那么你可以使用

git reset --hard <commit-hash>
git push -f origin master (假定本地和远程都是对master进行操作)

来撤销之前提交的commit。

兼容方式(推荐使用):

但是如果有其他人同步过你的push,那么使用强制的方式会给他人带来问题。

你可以在本地使用revert来还原你提交的commit,然后生成一个新的commit然后再推送到远端。具体如下:

假设当前状态如下:

回滚前状态

我们希望将fb43619的commit回滚,则可以使用:

git revert HEAD~1 (HEAD~1表示HEAD的前一个commit,依此类推) 或者   git revert fb43619

这样我们将得到没有该commit的状态。然后我们可以继续在此基础上进行编辑提交,最后push到Remote。

本地回滚后状态(尚未push到Remote)

值得一提的是,6bb916commit的内容不会被回滚,即revert操作只会针对一个commit有效。

如果我们不需要这次回滚,可以:

git revert HEAD  或者  git revert a58f231

得到如下结果:

回滚push到远程后并撤销本地回滚后状态(撤销本地回滚尚未push到Remote)

经过回滚、撤销回滚后,我们回到最开始状态:

撤销回滚后状态

但是,我们可以发现log中增加了两次回滚的操作记录。

  • 删除Remote上不需要的分支

git push origin :<delete branch>

  • 本地回滚

主要的命令:git revert和git reset

git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留,revert操作本身也会被记录。
git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区(视情况而定)。该操作本身不会被记录。

  --soft 只有commit被回滚,index及内容不变

  --mixed commit和index都被回滚,内容不变

  --hard commit和index都被回滚,内容被重置,之后的内容无法找回

注:git reset可以用于合并多个commit记录。

可能的问题:

  • git status/add中文乱码

情景:

使用git add添加文件或者使用git status查看状态时,中文文件名会显示形如274\232\350\256\256\346\200\273\347\273\223.png 的乱码
解决方案:
git config --global core.quotepath false

参考链接:http://zengrong.net/post/1249.htm

  • Adding a new SSH key to the ssh-agent

参考链接:https://help.github.com/articles/adding-a-new-ssh-key-to-the-ssh-agent

Git相关知识的更多相关文章

  1. git相关知识(github,idea等的配置)

    本地git提交文件到github上: 1.在github上创建项目 2.使用git clone https://github.com/xxxxxxx/xxxxx.git克隆到本地 3.编辑项目 4.g ...

  2. git相关知识:如何避免某些文件无需提交

    查看所有命令 git help -a 查看所有概念解释 git help -g 某个命令的具体帮助信息 git help command 如何避免某些文件无需提交? 合作开发时个人的约定的不上传的文件 ...

  3. SC || Git 相关知识

    发现大佬的博客:https://www.cnblogs.com/onetwo/p/4157610.html 注:图片来自小姐姐的笔记~ ┉┉┉∞ ∞┉┉┉┉∞ ∞┉┉┉∞ ∞┉┉┉┉┉∞ ∞┉┉┉┉∞ ...

  4. podSpec文件相关知识整理

    上一篇文章整理了我用SVN创建私有库的过程,本文将整理一下有关podSpec文件的相关知识. podSpec中spec的全称是“Specification”,说明书的意思.顾名思义,这是用来描述你这个 ...

  5. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  6. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

  7. listener监听器的相关知识

    从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...

  8. UIViewController相关知识

    title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...

  9. 【转】java NIO 相关知识

    原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...

随机推荐

  1. BZOJ 3732 Network

    2016.1.28 纪念我BZOJ第一题 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= ...

  2. Erlang 参考资料

    Erlang 官方文档 Distributed Erlang Erlang 教程中文版 %设定模块名 -module(tut17). %导出相关函数 -export([start_ping/1, st ...

  3. ipad2 恢复

    1.用原装充电线连接电脑,并打开itunes~2.同时按住电源键和home键 10秒左右,直到白苹果画面变成黑屏3.按住home键~但要松开电源键,继续等待~直到ipad出现画面(如图) 4.这时候, ...

  4. truncate table语句和delete table语句的区别

    truncate table 表名 ; delete from 表名; 都是用来删除表中所有的记录,前者删除数据后表的标识列会重新开始编号,它比delete语句使用的系统资源和事务日志资源更少,但是表 ...

  5. PHP中对淘宝URL中ID提取

    <?php $taobao = 'taobao.com'; $tmall = 'tmall.com'; $guojitmall = 'tmall.hk'; $juhuasuan = 'ju.ta ...

  6. symbol(s) not found for architecture x86_64 之 linker command failed with exit code 1 (use -v to see invocation)解决方案排查

    这样的错误 ,我的解决方案是, 第一种:   查看他说在 ****.o 中,你要查看这样的关键点,然后去查看,你 项目中有没有引进这样的文件,在项目中查找,看项目中有没有,如果没有那就是没添加进来,你 ...

  7. PHP数组的常用函数

    在PHP中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函数 ...

  8. 进击的docker 一 : Docker 简介

    Docker简介 1.什么是docker 1.1.docker 起源 开源项目 诞生2013年初 GO语言开发实现 遵从了Apache2.0协议 项目代码在GitHub维护 1.2.docker目标 ...

  9. Asp.net Core基于MVC框架实现PostgreSQL操作

    简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...

  10. 分拆素数和 HDU - 2098

    把一个偶数拆成两个不同素数的和,有几种拆法呢? Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束.Output对应每个偶数,输出其拆成不同素数的个数,每个结果 ...