Git 进阶操作(一)
1. 获取提交信息(commit)
git show 1c002d(哈希值的前几位): 获取提交的信息;git show HEAD^: 显示HEAD的上级(parent)提交的信息;git show HEAD~: 同上;git show HEAD~3: the first parent of the first parent of the first parent;
// experiment 分支上,还没有合并到master分支上的内容
$ git log master..experiment
D
C
// 变体:
// git log origin/master..HEAD: 本地分支还未合并到远程分支的内容;

// 显示每个分支独有的部分
git log master...experiment
// 升级版
git log --left-right master...experiment
2. 更改历史记录(Rewriting History)
git commit --amend: 更改最后一次提交的历史记录;
3. 重置(Reset)
- 三颗"树"
- 此处"树"指文件的集合;
 - "HEAD": Last commit snapshot, next parent;
 - "Index": Proposed next commit snapshot;
 - "Working Directory": Sandbox;
 
 

3.1 重置情况一
git reset 9e5e6a4或git reset --soft HEAD~

3.2 重置情况二(默认)
git reset --mixed HEAD~或git reset HEAD~

3.3 重置情况三
git reset --hard HEAD~

4. 合并分支进阶
git checkout --conflict=diff3 hello.rbgit config --global merge.conflictstyle diff3: 在配置文件中设置;

- `git log --oneline --left-right HEAD...MERGE_HEAD`: 查看合并时,每个分支包含的操作日志;

- `git log --oneline --left-right --merge`: 查看含有冲突的日志;

4.1 复原分支
git reset --hard HEAD~: 将合并的分支复原(针对本地仓库)


- `git revert -m 1 HEAD`: 保存主分支(C6)的内容,将合并的分支(C4)内容剔除

git revert ^M: 将剔除的分支,重新合并到主分支;git merge topic

参考资料:
- Pro Git
 - 删除Git仓库中的大文件
 - 寻找并删除Git记录中的大文件
 - Remove large .pack file created by git
 - Removing sensitive data from a repository
 - Git+Gerrit如何永久删除历史文件
 - git找回本地误删的文件
 
Git 进阶操作(一)的更多相关文章
- git 进阶操作
		
1.blame git blame +文件名,可以查看到某个文件每一行最近一次是由谁编辑修改的.-L 22,33 选项可以制定 2.bisect 开始git bisect: $ git bisec ...
 - Git 进阶指南(git ssh keys / reset / rebase / alias / tag / submodule )
		
在掌握了基础的 Git 使用 之后,可能会遇到一些常见的问题.以下是猫哥筛选总结的部分常见问题,分享给各位朋友,掌握了这些问题的中的要点之后,git 进阶也就完成了,它包含以下部分: 如何修改 ori ...
 - Git 进阶指南
		
转自: https://github.com/kaiye/kaiye.github.com/issues/7 在掌握了基础的 Git 使用 之后,可能会遇到一些问题.以下是猫哥筛选总结的部分常见问题, ...
 - 从0开始学习 GITHUB 系列之「GIT 进阶」【转】
		
本文转载自:http://stormzhang.com/github/2016/06/16/learn-github-from-zero5/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...
 - 从0开始学习 GitHub 系列之「05.Git 进阶」
		
关于 Git 相信大家看了之前一系列的文章已经初步会使用了, 但是关于Git还有很多知识与技巧是你不知道的,今天就来给大家介绍下一些 Git 进阶的知识. 1. 用户名和邮箱 我们知道我们进行的每一次 ...
 - Git进阶:常用命令和问题案例整理
		
一.前言 整理常用git命令和以及在实际使用的过程中碰到的问题案例,旨在git进阶,提升工作开发效率,有需要补充的小伙伴欢迎下方留言,本篇持续更新中... 二.命令 配置用户名和邮箱 git conf ...
 - Git远程操作详解
		
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...
 - Git远程操作
		
Git远程操作 // */ // ]]> Git远程操作 Table of Contents 1 Git远程命令概览 2 Git远程仓库与本地仓库的关系图 3 git clone 4 git ...
 - [转]Git远程操作详解
		
原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...
 
随机推荐
- Climbing Stairs爬楼梯——动态规划
			
题目描写叙述: 初阶:有n层的台阶,一開始你站在第0层,每次能够爬两层或者一层. 请问爬到第n层有多少种不同的方法? 进阶:假设每次能够爬两层.和倒退一层,同一个位置不能反复走,请问爬到第n层有多少种 ...
 - PHP json_decode 无法解析特殊问号字符
			
在通过别人接口请求信息的时候,偶尔会遇到由于部分字符,如以下情况,则通过json_decode是会返回null的 但是这种情况通常不是由于整体编码的问题,因为在解析的时候就是以utf-8的编码解析的 ...
 - C语言对文件的操作函数用法详解1
			
在ANSIC中,对文件的操作分为两种方式,即: 流式文件操作 I/O文件操作 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef str ...
 - app服务端server端数据库设计
 - implode,explode的使用
			
implode把数组转成字符串的函数,在组合SQL语句时候使用特好使! 比如 $a = array('a','b','c');$b = implode(',', $a);echo $b; 返回的字符串 ...
 - 在可部署到brew真机上的程序包构建完之后又要如何将该程序包发布到真机上呢
			
1.到brew官网上去申请含有classid的bid文件,以及.sig文件 2.根据申请到的bid文件重新生成mif文件. 3.将mif文件部署到brew真机上的mif文件夹下. 4.在真机上的bre ...
 - 关于Java 枚举类型的自定义属性
			
package com.cpic.test;/** * 关于枚举类型自定义属性 * */public enum Provious { ANHUI("皖", 1),BAIJING(& ...
 - 南京IT企业环境之最深心得体会
			
我是南京做嵌入式的. 之前搞过一年的PC平台Linux内核开发,Linux内核态的仅仅要不是非常复杂的BUG还是能修复的.一年的Linux用户态软件开发. 然后近期搞了两年ARM嵌入式开发. 做的CM ...
 - Java精选笔记_IO流(字节流、InputStream、OutputStream、字节文件、缓冲区输入输出流)
			
字节流 操作图片数据就要用到字节流. 字符流使用的是字符数组char[],字节流使用的是字节数组byte[]. 字节流读写文件 针对文件的读写,JDK专门提供了两个类,分别是FileInputStre ...
 - 【RF库Collections测试】Get Dictionary Keys
			
Name:Get Dictionary KeysSource:Collections <test library>Arguments:[ dictionary ]Returns `keys ...