Git工具

选择修订版本
1.单个修订版本
简短的SHA-1
Git十分智能,只需要提供SHA-1的前几个字符就可以获取对应的那次提交,当让你提供的SHA-1数量不得少于4个

//查看提交日志
$ git log
commit 046d5f7dfc4a390eb2ba679c166b795d33ece362 (HEAD -> master)
Author: unknown <l>
Date:   Fri Jan 17 10:29:10 2020 +0800
    ‘提交修改文件
commit f8db1c9799c5edb610e67ca4a30a850a3e99fc70
Author: unknown <l>
Date:   Thu Jan 16 11:36:44 2020 +0800
    优秀
MagicData@DESKTOP-NQK66AL MINGW64 /d/phpstudy_pro/WWW/新建文件夹 (master)
//git show SHA-1     获取对应的提交
$ git show f8db
commit f8db1c9799c5edb610e67ca4a30a850a3e99fc70
Author: unknown <l>
Date:   Thu Jan 16 11:36:44 2020 +0800
    优秀
diff --git a/README b/README
new file mode 100644
index 0000000..4732b90
--- /dev/null
+++ b/README
@@ -0,0 +1,2 @@
+o My Project
+封建帝国海军返还甲方,给反倒是三国杀
\ No newline at end of file

//获取简短的日志   默认使用7个字符
$ git log --abbrev-commit --pretty=oneline
//结果只输出对应的信息
046d5f7 (HEAD -> master) ‘提交修改文件
f8db1c9 优秀

2.分支引用
指明一次提交最直接的方法是有一个指向它的分支引用。
就是利用分支名可以直接查看最后一次提交的对象

//查看分支名
$ git branch
* master
//利用分支名查看版本信息
$ git show master

commit 046d5f7dfc4a390eb2ba679c166b795d33ece362 (HEAD -> master)
Author: unknown <l>
Date:   Fri Jan 17 10:29:10 2020 +0800
    ‘提交修改文件
diff --git a/README b/README
deleted file mode 100644
index 4732b90..0000000
--- a/README
+++ /dev/null
@@ -1,2 +0,0 @@
-o My Project
-封建帝国海军返还甲方,给反倒是三国杀
\ No newline at end of file

3.引用日志

$ git reflog
046d5f7 (HEAD -> master) HEAD@{0}: commit: ‘提交修改文件
f8db1c9 HEAD@{1}: commit (initial): 优秀
//根据引用日志来查看版本
$ git show HEAD@{1}

4.祖先引用
在引用的尾部加一个^,GIT会将其解析为该引用的上一个提交
在 ^ 后面添加一个数字——例如 d921970^2 代表 “d921970 的第二父提交”

$ git log --pretty=format:'%h %s' --graph
* $h ‘提交修改文件
* $h 优秀

//查看HEAD的父提交
$ git show HEAD^
commit 1c3618887afb5fbcbea25b7c013f4e2114448b8d
Author: Tom Preston-Werner <tom@mojombo.com>
Date:   Fri Nov 7 13:47:59 2008 -0500
    ignore *.gem

交互式暂存

$ git add -i

  staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help

暂存与取消暂存

What now> 提示符后键入 2 或 u,脚本将会提示想要暂存哪个文件:

What now> 2
           staged     unstaged path
  1:    unchanged        +0/-1 TODO
  2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>
//要暂存 TODO 与 index.html 文件,可以输入数字:
Update>> 1,2
           staged     unstaged path
* 1:    unchanged        +0/-1 TODO
* 2:    unchanged        +1/-1 index.html
  3:    unchanged        +5/-1 lib/simplegit.rb
Update>>
//每个文件前面的 * 意味着选中的文件将会被暂存。
//如果在 Update>> 提示符后不输入任何东西并直接按回车,Git 将会暂存之前选择的文件:

Update>>
updated 2 paths
*** Commands ***
  1: status     2: update      3: revert     4: add untracked
  5: patch      6: diff        7: quit       8: help
What now> 1
           staged     unstaged path
  1:        +0/-1      nothing TODO
  2:        +1/-1      nothing index.html
  3:    unchanged        +5/-1 lib/simplegit.rb

储藏与清理

当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态,而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash 命令。

储藏会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上
1.储藏工作

//对项目执行了修改,
$ git status
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    modified:   index.html
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
    modified:   lib/simplegit.rb

//想要切换分支,但是还不想提交之前的工作,所以储藏修改。将新的储藏推送到栈上,运行git stash
$ git stash
Saved working directory and index state \
  "WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file
(To restore them type "git stash apply")
//查看储藏的东西
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
//将刚刚存储的工作重新应用:git stash apply     
//如果想应用其中一个更久的储藏,可以通过名字指定
git stash apply stash@{2}

签署工作

搜索

无论仓库里的代码量有多少,你经常需要查找一个函数是在哪里调用或者定义的,或者一个方法的变更历史。 Git 提供了两个有用的工具来快速地从它的数据库中浏览代码和提交。

//从提交历史或者工作目录中查找一个字符串或者正则表达式
// -n 参数来输出 Git 所找到的匹配行行号
$ git grep -n gmtime_r
compat/gmtime.c:3:#undef gmtime_r
compat/gmtime.c:8:      return git_gmtime_r(timep, &result);
compat/gmtime.c:11:struct tm *git_gmtime_r(const time_t *timep, struct tm *result)
compat/gmtime.c:16:     ret = gmtime_r(timep, result);
compat/mingw.c:606:struct tm *gmtime_r(const time_t *timep, struct tm *result)
compat/mingw.h:162:struct tm *gmtime_r(const time_t *timep, struct tm *result);
date.c:429:             if (gmtime_r(&now, &now_tm))
date.c:492:             if (gmtime_r(&time, tm)) {
git-compat-util.h:721:struct tm *git_gmtime_r(const time_t *, struct tm *);
git-compat-util.h:723:#define gmtime_r git_gmtime_r
//--count 选项来使 Git 输出概述的信息,仅仅包括哪些文件包含匹配以及每个文件包含了多少个匹配。
//想看匹配的行是属于哪一个方法或者函数,你可以传入 -p 选项
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容