Git相关知识
一些有用的链接:
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相关知识的更多相关文章
- git相关知识(github,idea等的配置)
本地git提交文件到github上: 1.在github上创建项目 2.使用git clone https://github.com/xxxxxxx/xxxxx.git克隆到本地 3.编辑项目 4.g ...
- git相关知识:如何避免某些文件无需提交
查看所有命令 git help -a 查看所有概念解释 git help -g 某个命令的具体帮助信息 git help command 如何避免某些文件无需提交? 合作开发时个人的约定的不上传的文件 ...
- SC || Git 相关知识
发现大佬的博客:https://www.cnblogs.com/onetwo/p/4157610.html 注:图片来自小姐姐的笔记~ ┉┉┉∞ ∞┉┉┉┉∞ ∞┉┉┉∞ ∞┉┉┉┉┉∞ ∞┉┉┉┉∞ ...
- podSpec文件相关知识整理
上一篇文章整理了我用SVN创建私有库的过程,本文将整理一下有关podSpec文件的相关知识. podSpec中spec的全称是“Specification”,说明书的意思.顾名思义,这是用来描述你这个 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- UIViewController相关知识
title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
随机推荐
- 模块化编程时,#include到底要放在哪里?
结合我自己的经验,谈一谈模块化编程时#include应该出现的位置.总结起来大体有二条规则: 一.规则1:只包含必要的头文件 看下面这个模块: ===foo.c==== #include <st ...
- 【HEVC】4、HM-16.7编码一个CU(帧内部分) 3.帧内预测各种模式实现
HEVC中一共定义了35中帧内编码预测模式,编号分别以0-34定义.其中模式0定义为平面模式(INTRA_PLANAR),模式1定义为均值模式(INTRA_DC),模式2~34定义为角度预测模式(IN ...
- Python-5 数据类型、操作符
#1 数值类型: 整型int.浮点型float(科学记数法 e 或 E).布尔型bool #2 字符串: 与整型.浮点型转化:int()--截断处理 float() str() #3 获取数据类型: ...
- Java 2D API - 2. Graphics 入门
Java 2D API强大而复杂,不过大多时候我们只需使用java.awt.Graphcis类的部分功能.下面的内容将覆盖大多数的常见应用. Graphics 类中的方法大致可以分为两类: Draw ...
- 最长公共子序列LCS问题
很经典的一个问题,也是常考的问题
- Linux进阶文件系统管理之RAID
RAID 1.引言 RAID全称Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即独立冗余磁 ...
- windows下git识别大小写配置
默认情况下windows上的Git客户端,在文件名仅发生大小写改变时不会识别,提交后发现,gitlab上的文件名不会发生变化. 解决方法: 编辑 .git 中的config文件, 将 ignoreca ...
- java面试题个人总结
1.重载和重写的区别重写:发生在父子类中,方法名.参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类:如果父类方法访问修饰符为private则子类中就不是重写.2.j ...
- Webservice简介
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- SQL Server提高事务复制效率优化(三)订阅初始化优化
初始化订阅主要是由分发代理分发和应用快照代理之前生成的快照,所以优化的主体是分发代理. 1.初始化订阅 首先在本地创建一个订阅,发布服务器.分发服务器和订阅服务器都在同一台服务器上,仅为了测试生产环境 ...