c/#可以c 调用git接口吗

你真的不会用Git - 50关点亮git技能树 - 简书
你真的不会用Git - 50关点亮git技能树
忽略某些文件 * 创建,删除分支 * 找到最后修改某行代码的人 * commit 后发现里边包含一个不应该提交的文件 * commit 后发现少提交了一些文件 * 一个文件中的多次有改动,怎么做到只提交其中的一部分? * 怎样整理提交记录使其更加整洁? * 快速定位是哪一次提交引入了 bug * ...
2.第二关 设置git name and email
git config --global
3.git clone到指定文件夹
git clone &git.repositoryURL&
&文件夹名字&
4.git 忽略指定文件
echo "文件名" & .gitignore
#每次只能保证一个文件被忽略,因为下次调用时,.gitignore文件被重写了
5.忽略一系列文件
vim .gitignore
.a #代表所有以.a结尾的文件都会被忽略
#除了lib.a
#所有文件及目录都被忽略
#除了foo目录
#foo目录下的所有文件及目录都被忽略
!/foo/bar #除了foo/bar目录
#代表所有路径,即是 如果有a/c/d/e/f/g/h/b这样的路径,那它被忽略了
6.git 记录每次更新到仓库
git status #可以查看当前仓库中各个文件的状态
文件状态变化周期
git 仓库中文件有以下4种状态:
1)untraced
unmodified
有时你嫌git status 输出很臃肿,也可以使用git status --short / git status -s输出精简模式:
?? 新添加的未跟踪文件前面有??标记
新添加到暂存区中的文件前面有A标记
修改过的文件前面有M标记
有时文件的标记位置会出现两个MM##
出现在左边的表示该文件被修改了,并将修改后的文件放到了暂存区
出现在右边的表示该文件被修改了,但是还没有放到暂存区
表示文件在工作区被修改了并且放到了暂存区,但是又在工作区被修改了,所以在暂存区和工作区都有该文件被修改的记录
7.仅从git仓库中删除指定文件,而保留其在working tree中
git rm --cached &文件名&
# 仅从git仓库中删除&文件名&而在working tree中保留
8.有时你在工作区做了一些工作,但是没有做完,这时你需要切换到别的分支进行工作,而你又不想把这些半成品作为一次commit进行提交,这时你只是需要做git stash命令,将当前不想commit的文件暂时保存
这个命令貌似挺强大~以观后效
9.git tag 命令盲点
git 有两种标签,轻量标签和附注标签
1)轻量标签---像一个不会改变的分支,只是特定提交的引用
2)附注标签---是存储在git数据库中的完整对象,是可以被检验的,其中包含打标签者的名字、email、日期时间等信息
在git中创建附注标签很简单:
创建附注标签
git show 命令可以帮助你查看对应标签提交信息:
查看标签信息与对应的提交信息
后期打标签
后期打标签
假设想给上面的hash Id打标签:9fceb02
git tag -a v1.2 9fceb02
默认状态下,git push 命令并不会传送标签到远程服务器上,必须显示提交,服务器端才会显示,提交分为两种方式,每次只提交一个,每次提交多个:
每次提交一个标签
每次提交多个标签
git checkout -b &branchname& &tagname&
10.git commit
git commit --date='@@@@@@@' -m "@@@@@@@"
可以用来指定commit 动作的提交时间
git commit --amend
用来修改并替换上一次commit,也可以理解为在上次的基础上追加
11.git reset
git 三棵树
index / working Directory
HEAD 为当前分支引用的指针,它总是指向该分支的最后一次提交,这表示HEAD将是下一次提交的父节点。简单理解,HEAD就是你上一次的提交的快照。
index 是你预期的下一次提交,index 从理解上,你可以把它认为是Git的"暂存区域"
working Directory 字面意思就是你操作的工作目录,你所有的git repository目录下的内容都在这个工作区,而另外两棵树以一种高效但不直观的方式存储在.git文件夹中。
git 工作流程
git 主要的目的是通过操纵这三棵树并记录各自的状态来管理整个项目:
git 工作流程图
假设通过git init初始化一个git 项目后,我们的目录下有个file.txt 这样一个文件,并假定其当前版本为v1,下面通过分别执行
git commit
三条命令来讲解git 是如何操作这三棵树的.
git add 命令将处在wd目录下的文件,复制到索引中
git commit
git commit
git commit 首先会移除index中的内容,并将它保存为一个永久的快照,然后创建一个指向该快照的对象,最后更新master来指向本次提交
这时如果运行git status命令,会发现没有任何log,因为三棵树现在完全相同
如果这时我们修改了file.txt文件为v2版本,然后执行git status命令,git log日志系统会提示『Changes not staged for commit』,提示你进行git add 操作
edit file.txt -& v2
执行git add操作
git add操作
这时如果执行git status来观察变化,会有『Changes to be committed』这样的提示,因为HEAD和index中的内容不同。最后我们执行git commit 来完成提交
git commit
至此三棵树再次相同,都是file.txt v2版本
为了理解reset命令,假设我们修改了file.txt文件并第三次提交它,现在三棵树如下所示:
![Upload Paste_Image.png failed. Please try again.]
有三种git reset 使用方式:
git reset --soft &版本号&
git reset --mixed &版本号&
git reset --hard &版本号&
git reset --soft &版本号&
通过--soft 选项,仅仅是改变了HEAD的指向,但是并不改变index和WD,这和改变HEAD自身不同(checkout所做的),这意味着如果HEAD设置为master分支,运行git reset 9e5e64a 将会使master 指向 9e5e64a 。无论你调用上面哪种形式的reset, git 都会尝试改变HEAD的指向,只不过--soft选项保证了仅仅是改变了HEAD的指向,而不对index和wd进行修改!
git reset --soft HEAD~
综上,理解上git reset --soft 可以理解为git commit 的反向操作
git reset --mixed &版本号&
按照讲得顺序,猜你已经知道了,git reset --mixed 就是回滚到git commit 和 git add 之前,即保存wd中的修改,但是撤销上次的add/commit对命令
git reset [--mixed] HEAD~
git reset --hard
git reset --hard 是一个很危险的操作,除非你真的知道你在做什么,不然啥给你们两条命令足够满足你的需求。假设现在三棵树都在file.txt v3版本下,这时如果你执行 git reset --hard 命令,则同时修改了HEAD / index / WD, 即整个三棵树都回滚到上一次 修改/ add / commit 时的内容
git reset --hard HEAD~
git reset 大招 --- 压缩
通常我们在完成一个小需求时都会选择add/commit一下,而由于整个需求没有都完成,所以如果直接push就会显得很没有水平,那么如果能合并几次commit为一次commit动作,就是压缩一下,是不是就会很完美!
原理很简单,先正常add/commit , 然后使用git reset --soft 来修改HEAD,最后在执行一次commit,就完成了压缩操作。
举例说明:
设你有一个项目,第一次提交中有一个文件,第二次提交增加了一个新的文件并修改了第一个文件,第三次提交再次修改了第一个文件。 由于第二次提交是一个未完成的工作,因此你想要压缩它:
压缩示例图1
然后执行git reset --soft HEAD~2 来将HEAD分支移动到一个旧的提交上(即你想保留的提交)
压缩示例图2
然后执行 git commit
压缩示例图3
12. git checkout
checkout 命令通常都用在了切换分支上,但是checkout 针对文件,它还有restore恢复,还原文件的功能:
git checkout -- &file&
this is a initial file
modified : This is the initial config file
These are changed you don't want to keep!
这时如果使用checkout 命令就会还原修改modified -& origin版本!
当然你要记住,这是一条很危险的命令,因为git会用原来的文件覆盖你修改的文件,而你又没有对其进行提交,因此可以说还原是不可逆的操作,也就是说还原很简单,但是再想恢复到修改后的状态是不容易啦
13. 查看远程仓库
当使用git在本地开发时,如果你是通过git clone 命令拿到的项目的repository,那么git 则帮你建好了本地的仓库,并命名为origin !
但有时你有疑问,想知道远程服务器中还有哪些仓库? 可以通过
git remote
git remote
如果你想知道更具体的信息,则执行
git remote -v
git remote -v
已经知道了有哪些仓库,如果你想知道某一个仓库的具体信息,可以执行
git remote show &repository name&
git remote show &repository name&
如果获得某一个仓库中所有数据,但又不想改变本地仓库中的内容(pull动作),可以执行
git fetch &remote-name&
git fetch &remote-name&
添加远程仓库:
git remote add &remote-name& &remote-url&
git remote add &remote-name& &remote-url&
Git全面教程 简介 Git分布式版本管理系统。 Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的方式给Linus,然后他本人通过手工的方式进行合并代码。后来在2002年B...
目录 一、版本控制概要 1.1、什么是版本控制 1.2、常用术语 1.3、常见的版本控制器 1.4、版本控制分类 1.4.1、本地版本控制 1.4.2、集中版本控制 1.4.3、分布式版本控制 1.5、Git与SVN最主要区别 二、Git安装与配置 2.1、什么是Git 2...
本系列为《Git权威指南》的读书笔记,分为两个部分:Part 1 涵盖了书中第 1~3 篇共 20 章的内容,Part 2 为剩余部分。 git format-patch 命令 将从 v1 开始的历次提交逐一导出为补丁文件: $ git format-patch v1..H...
1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可。 安装完成后,在开始菜单里找到“Git”-&“G...
git常用命令 GIT常用命令备忘:http://stormzhang.com/git//git-common-command/Git远程操作详解 :https://microzz.com//git/一篇文章,教你学会Git : ht...
第一张:吴世勋 第二张:边伯贤 第三张:朴灿烈
今天介绍的是凭着exo——亚洲男子人气偶像团出道的三位欧巴
拼颜值,你们对谁一见钟情。
我喜欢你,你喜欢王者 我喜欢王者=你喜欢我 01 前几天考完试约傻秋一起出去吃饭,在楼下等了半个小时迟迟不见傻秋出来。 “说好的六点半mad” 于是我电话打过去,被挂掉,再打,又挂掉,我再打 “NM!!”傻秋从电话里大吼 我有点懵, 刚想骂回去傻秋就挂电话了 “我输了,水晶...
爱情的故事 别人都傻傻的错过地 我捡到了一个天才 天天都有的菜 一毛钱一车的大白菜都会寻思半天 扔掉的是会致癌的 低头默默说句敏感词 胸前挂个牌 十年或者二十年后才能摘下 头发长不长 灰白灰白 指手画脚,畏畏缩缩讲述着风发的青春 轻松地, 沉重地 一天就是一万年。一万年前的...
Automobile structure and power transmission.
Car generally engine, chassis, body and electrical equipment such as the four basic compon...新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 26, 距离下一级还需 174 积分
论坛徽章:0
我有5次提交,都是本地的
commit id 是
然后git checkout 3xx
发现不对,然后想git checkout 5xx但是那个commit id不记得了
而且git log也看不到,怎么办?
家境小康, 积分 1732, 距离下一级还需 268 积分
论坛徽章:0
git checkout &Branch Name&
大富大贵, 积分 19118, 距离下一级还需 882 积分
论坛徽章:11
git log& && && &
大富大贵, 积分 19118, 距离下一级还需 882 积分
论坛徽章:11
darkread 发表于
而且git log也看不到,怎么办
这就不对了, 没有 git log 看不到的可能, 就你的描述, 你肯定做了其他操作
办法还是有:
git reflog
大富大贵, 积分 19118, 距离下一级还需 882 积分
论坛徽章:11
zylthinking 发表于
这就不对了, 没有 git log 看不到的可能, 就你的描述, 你肯定做了其他操作
办法还是有:
git refl ...
次奥, 是看不到了, 我现在头晕,
gitref log 可以找到
白手起家, 积分 26, 距离下一级还需 174 积分
论坛徽章:0
zylthinking 发表于
次奥, 是看不到了, 我现在头晕,
gitref log 可以找到
O(∩_∩)O哈哈~
又被我玩晕一个。开玩笑、开玩笑。
一个下午没有想通,刚才看到你的头晕,我突然开窍了。
我的工作模式就是
修改-&增加功能-&commit,如此循环,那么commit频率很高,因此我选择了git作为代码回溯的工具(回溯的作用比版本管理大)。
很可能出现commit了3回后,发现这三次的代码可能有问题,需要3次commit之前的,但我又想不想去掉这三次commit的代码,那么就git log找到&3次前的commit_id&,然后git checkout &3次前的commit_id&。
但这样,就git log就没有了后三次的&commit_id& --all也么用,
因为如果git branch ,会显示当前的代码不在任何的分支上。
那么我只能git checkout &3次前的commit_id& ,然后把代码文件复制出来,再git checkout &刚才的分支名&继续,然后复制回来刚才复制出去的文件,继续干活。
为什么不行?因为git毕竟还是以版本管理为主,主线是把一次一次commit串起来,那么git checkout &3次前的commit_id&对git管理的版本树来讲毫无意义,如果checkout &分知名&指向了&3次前的commit_id&,那么这个commit点之后的版本算什么?因此,checkout &分知名&肯定是指向每个分支最新的那个commit,你要修改了&3次前的commit_id&指向的代码,也不能直接commit回去,如果可以,然这个代码放在那里呢?它不是本分支最新代码的更新版本,嵌在&3次前的commit_id&和&3次的commit&之间么?它又只是&3次前的commit_id&的一个分支,和&3次的commit&的代码没有关系。
因此,git认为这个代码可以checkout出来,但是不能commit回去,除非是checkout commit_id -b new_branck,另行分支开发。至于如何merge两个分支,我还么仔细看。
看了以后我的git树会非常的枝繁叶茂。
大富大贵, 积分 19118, 距离下一级还需 882 积分
论坛徽章:11
本帖最后由 zylthinking 于
21:34 编辑
打了这么多字,还说开窍了,&&难道没看到我已经告诉你办法了吗。?
白手起家, 积分 26, 距离下一级还需 174 积分
论坛徽章:0
在这里找到了更加NB的,详解了各种本地开发场景。
白手起家, 积分 26, 距离下一级还需 174 积分
论坛徽章:0
zylthinking
& & 这样的弊端是
当前会处于no branch状态。
稍有积蓄, 积分 295, 距离下一级还需 205 积分
论坛徽章:1
man git checkout
里面的HEAD detached state讲的就是这个玩意儿。
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处下次自动登录
现在的位置:
& 综合 & 正文
git: 如何用git-am来合并git format-patch生成patch git回退
UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的。作为最重要的开源项目之一,Linux,也是这样的。普通开发者从软件仓库clone下代码,然后写入代码,做一个Patch, 最后用E-mail发给Linux Kernel的维护者就好了。Git最初作为Linux的版本控制工具,提供了透明、完整、稳定的Patch功能。
我们先介绍一下Patch是什么。如果一个软件有了新版本,我们可以完整地下载新版本的代码进行编译安装。然而,像Linux Kernel这样的大型项目,代码即使压缩,也超过70MB,每次全新下载是有相当大的代价的。然而,每次更新变动的代码可能不超过1MB,因此,我们只要能够有两个版本代码的diff的数据,应该就可以以极低的代价更新程序了。因此,Larry Wall开发了一个工具:patch。它可以根据一个diff文件进行版本更新。
不过在git中,我们没有必要直接使用diff和patch来做补丁,这样做既危险又麻烦。git提供了两种简单的patch方案。一是用git diff生成的标准patch,二是git format-patch生成的Git专用Patch。
diff 和format-patch的比较:
兼容性:很明显,git diff生成的Patch兼容性强。如果你在修改的代码的官方版本库不是Git管理的版本库,那么你必须使用git diff生成的patch才能让你的代码被项目的维护人接受。
除错功能:对于git diff生成的patch,你可以用git apply --check 查看补丁是否能够干净顺利地应用到当前分支中;如果git format-patch 生成的补丁不能打到当前分支,git am会给出提示,并协助你完成打补丁工作,你也可以使用git am -3进行三方合并,详细的做法可以参考git手册或者《Progit》。从这一点上看,两者除错功能都很强。
版本库信息:由于git format-patch生成的补丁中含有这个补丁开发者的名字,因此在应用补丁时,这个名字会被记录进版本库,显然,这样做是恰当的。因此,目前使用Git的开源社区往往建议大家使用format-patch生成补丁。
下面主要介绍一下git-am 和 format-patch 的使用。 因为在git使用当中,
会有很多时候别人(供应商或者其他的开发人员)发过来一系列的patch,这些patch通常的是类似这样的名字:
0001--JFFS2-community-fix-with-not-use-OOB.patch
0002--Community-patch-for-Fix-mount-error-in.patch
0003--partial-low-interrupt-latency-mode-for-ARM113.patch
0004--for-the-global-I-cache-invalidation-ARM11.patch
0005--1-arm-Add-more-cache-memory-types-macr.patch
0006--2-Port-imx-3.3.0-release-to-2.6.28.patch
0007--3-Add-MX25-support.patch
0008--Move-asm-arch-headers-to-linux-inc-dir.patch
0009--1-regulator-allow-search-by-regulator.patch
里面包含了提交的日志,作者,日期等信息。你想做的是把这些patch引入到你的
代码库中,最好是也可以把日志也引入进来, 方便以后维护用。传统的打patch方式是
patch -p1 & 0001--JFFS2-community-fix-with-not-use-OOB.patch
这样来打patch,但是这样会把这些有用的信息丢失。
由于这些patch显然是用git format-patch来生成的,所以用git的工具应该就可以很好的做好。
git-am 就是作这件事情。
在使用git-am之前, 你要首先git am –abort 一次,来放弃掉以前的am信息,这样才可以进行一次全新的am。
不然会遇到这样的错误。.git/rebase-apply
still exists but mbox given.
git-am 可以一次合并一个文件,或者一个目录下所有的patch,或者你的邮箱目录下的patch.
下面举两个例子:
cd small-src
git-am ~/patch/0001-trival-patch.patch
如果成功patch上去, 你就可以去喝杯茶了。
如果失败了, git 会提示错误, 比如:
error: patch failed: android/mediascanner.cpp:452
error: android/mediascanner.cpp: patch does not apply
这样你就需要先看看patch, 然后改改错误的这个文件,让这个patch能够patch上去。
cd opencore
git am ~/patch-set/*.patch
(这里git就会按照文件名的顺序一次am这些patch)
如果一切顺利, 你所有的patch都OK了, 你又Lucky了。
不过不顺利的时候十有八九,如果git am中间遇到了patch,am就会停到打这个
patch的地方, 告诉你是哪个patch打不上去。
比如我现在有一个文件file,有两个patch.
file 的内容是
两个patch分别是:
0001-add-line.patch:
From 48869ccbced494eafa5a54f2a261df0f Mon Sep 17 00:00:00 2001
From: zhangjiejing &zhangjiejing@zhangjiejing-desktop.(none)&
Date: Thu, 22 Apr :34 +0800
Subject: [PATCH 1/2] add line
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/file b/file
index 067780e..685f0fa 100644
--- a/file
+++ b/file
@@ -3,3 +3,5 @@ file:
0002-change-line.patch:
From f756e1b3a87c216b7e0afea9d15badd Mon Sep 17 00:00:00 2001
From: zhangjiejing &zhangjiejing@zhangjiejing-desktop.(none)&
Date: Thu, 22 Apr :19 +0800
Subject: [PATCH 2/2] change line
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/file b/file
index 685f0fa..7af
--- a/file
+++ b/file
@@ -1,6 +1,6 @@
-some text
+Change line text
git am *.patch
来merge这些patch, 报错, Patch failed at 0001 add line这样我们看0001这
个patch,原来patch需要的是some text, 而file里面是the text, 所以我们用编
辑器把这行改成some text,
git apply 0001-add-line.patch
git add file
git am --resolved
在解决完冲突以后, 比如用git add来让git知道你已经解决完冲突了。
使用git format-patch生成所需要的patch:
# git format-patch -s 1bbe3c8c197a35f79bfddabae54ea9c7
please replace the hash code with your repo previous commit.
then you can find the patch under repo directory.
then mail your patch to configuration admin.
# git format-patch -M master
// 当前分支所有超前master的提交
# git format-patch -s 4e16
// 某次提交以后的所有patch, --4e16指的是SHA1
ID, -s : signed off
# git format-patch -1
# git format-patch -3
// 从master往前3个提交的内容,可修改为你想要的数值
# git format-patch –n 07fe
// -n指patch数,07fe对应提交的名称, 某次提交(含)之前的几次提交
# git format-patch -1 commit-id
// + commit-id 选定的那个commit打patch
# git format-patch -s
--root origin
// 从origin到指定提交的所有patch
应用patch:先检查patch文件:# git apply --stat newpatch.patch检查能否应用成功:# git apply --check
newpatch.patch打补丁:# git am --signoff & newpatch.patch
(使用-s或--signoff选项,可以commit信息中加入Signed-off-by信息)
今天发现有个需求,就是我提交了错误的提交,如何再切换到先前的版本,但是并没有建立branch的时候,
原来用git checkout 就可以了,
# git checkout 7a1eba1f6d
// SHA1 ID 这种情况只是切换,但是不做任何处理,如果需要反转就用
# git revert
如果需要复位就用
# git reset SHA1 ID
git revert还原最近一次的修改,但版本commit会向前推进,只是创建一个相反的内容,再次提交git revert commit-id还原指定版本的修改git reset --hard commit-id
# 整個 Repository 恢復到某個版本的狀態git reset HEAD^git reset HEAD~1
撤销最后一次提交,默认模式-mixed,回退commit与index,git reset --soft 回退commit,但不回退indexgit reset --hard HEAD^
撤销最后一次提交并清除本地修改。git reset commit-id
回到commit-id对应的提交状态。
git rebase -i HEAD~*
用来修改commit的内容,可以删除或者修改名字或者移动位置或者合并,然后ctrl+o,ctrl+x保存退出。
# Commands:
= use commit
= use commit, but edit the commit message
= use commit, but stop for amending
s, squash = use commit, but meld into previous commit
= like "squash", but discard this commit's log message
git log -p test.c
// 查看这个文件提交的记录,及内容的修改
git log test.c
// 仅查看提交的记录
git log --oneline -2
// 显示一行,显示最近的两次提交
gitlog --pretty=short
# git config --global alias.lg "log --graph"
# git config -lalias.lg=log --graph --pretty=format:'%Cred%h%Creset: %s %Cgreen(%cr)%Creset %C(yellow)%d%Creset' --abbrev-commit --date=short
%Cred : 显示红色
%h : 简短的commit id
%Creset : 颜色复位成常规的颜色
%s : 显示提交的内容标题
%cr : 显示提交的日期,这个按照比今天前多少天
%Cyellow : 显示黄色
%d : ref name
git commit --amend
// 追加到前一次提交,这个类似于 git rebase -i HEAD~2
// 显示最近的一次提交的内容
git show --name-only
// 只显示修改的文件名,而不具体显示修改的行的内容
git grep -n -w
“searched name”
// git 提供的比较方便的搜索方式, -w 只搜索全匹配的字符串,适合于搜索函数名
git am -3 *.patch
git cherry-pick
git reset commit-id // 复位到指定的commit,但是会把修改的内容保留在目录下,后面可以修改并继续提交
git blame -L 40,60 test.c
// 责备40行 - 60行git blame -L 40,+21 test.c
// 责备第40行,及后面21行
git blame --since=3.weeks -- test.c
git am 用了git apply,用它打补丁会生成commit信息。如果出现以下错误:previous rebase directory ../.git/rebase-apply still exists but mbox given可以用# git am --abort
丢弃某个commit:
# git revert commit-id -n, --no-commit
【上篇】【下篇】}

我要回帖

更多关于 git实用教程 鱼c ppt 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信