Git使用备忘录

1. Intro

  1. 每个Git Project包含两部分:1)我们创建和修改的文件和文件夹 2)Git记录的关于整个Project的历史
    这两部分一起称为Repository
  2. Git记录的东西存在Repository的根目录下的.git文件夹中。不要随便的删除和移动它。
  3. git status 上次保存后哪些文件被修改了:哪些文件在staging area中;哪些文件更改了但没有放在里面。
  4. Git有一个中间区域(staging area)用于存放你修改后又没有保存的文件。可以将staging area看成一个箱子;commit add相当于将文件放入这个箱子;commit push相当于将箱子放入mail并寄出。
    箱子可以取出和放入;但mail就不能再修改了。
    _1541647769_1045108767.png

1.1. git diff filename 查看文件当前和上次saved的区别

git diff 库中所有修改文件
git diff directory 某目录下的修改文件

1.2. diff 输出结果

diff --git a/report.txt b/report.txt
index e713b17..4c0742a 100644
--- a/report.txt
+++ b/report.txt
@@ -1,4 +1,4 @@
-# Seasonal Dental Surgeries 2017-18
+# Seasonal Dental Surgeries (2017) 2017-18

 TODO: write executive summary.
  1. 命令: a为“first version”,b为“second version”
  2. index line:showing keys into Git's internal database of changes.
      • -:removed lines 用 -
    • +:added lines 用 +
  1. @@:修改的地方。start line,number of lines (从line 1开始的4列被删除,然后换成新的4列)
    减号 表示 前者相对于后者 要 删除几列
    加号 表示 后者相对与前者 要增加几列
  2. 具体修改的内容。没有被修改的背景内容有时也会显示,前面没有-或者+
  1. 向staging area中加入修改的文件
  2. commit staging area中的所有文件

1.3. git add

1.git diff -r HEAD 和最近commit的一次版本进行比较
git diff -r HEAD path/to/file 特定的某个文件

1.4. git commit

  1. 该命令将box中的多个changed files作为一个整体保存。后面如果要回溯,也是以这个为单位回溯。
  2. git commit -m "Program appears to have become self-aware."
  3. git commit --amend - m "new message" 修改log信息

1.5. git log

  1. 记录整个库的commit log 信息。最新的在最前面。
  2. code
commit 0430705487381195993bac9c21512ccfb511056d
Author: Rep Loop <repl@datacamp.com>
Date:   Wed Sep 20 13:42:26 2017 +0000

    Added year to report title.

3.commit line: 该commit的hash ID(unique)
Authoor
Data
Log信息

  1. git log path 查看特定目录或特定文件的log历史
    如果是目录,仅显示增加或删除的文件;如果是文件,显示文件的修改内容
  2. git commit 打开文本编辑器 录入log信息,井号开头的会被忽略

1.6. git 存储的信息

  1. commit hash,最新的在最后
    tree: 库中修改的文件
    blob:文件压缩的内容展示;没变的文件使用上一个commit的
  1. git show hash前几位 查看某个commit的详细信息 ; hash相当于绝对路径
    git show 0da2f7
  1. HEAD指代最近一次commit。HEAD1指代再前一次,HEAD2指代再前一次。
  2. git annotate file
04307054        (  Rep Loop     2017-09-20 13:42:26 +0000       1)# Seasonal Dental Surgeries (2017) 2017-18
5e6f92b6        (  Rep Loop     2017-09-20 13:42:26 +0000       2)
5e6f92b6        (  Rep Loop     2017-09-20 13:42:26 +0000       3)TODO: write executive summary.

5项内容,部分在括号中
The first eight digits of the hash, 04307054.
The author, Rep Loop.
The time of the commit, 2017-09-20 13:42:26 +0000.
The line number, 1.
The contents of the line, # Seasonal Dental Surgeries (2017) 2017-18.

  1. git show commitID
  2. git diff ID1..ID2 两个commit间的差别
    git diff HEAD1..HEAD3

1.7. add files

  1. git add 使用之前,git不会注意任何一个文件的修改。
    用git status来查看没有被tracked的文件

1.8. gitignore

  1. 有些中间文件不希望被git track,可以使用wildcard patterns记录在.gitignore中
build
*.mpl

git会忽略叫build的文件和文件夹(内的所有文件);结尾是.mpl的文件

1.9. git clean

  1. git clean -n 显示git没有track的file list
  2. git clean -f 删除上面的文件

1.10. git config

  1. git config --list with one of three additional options:
    --system: settings for every user on this computer.
    --global: settings for every one of your projects.
    --local: settings for one specific project.
    后面的优先级更高
  2. 设定配置信息(新的电脑需要设定user name和email)
    git config --global setting.name setting.value
    (user.name 和 user.email)

1.11. 取消修改

  1. 如果stage错了(即加入commit的),用 git reset HEAD取消前一次git add。
  2. git add之后 如果有新的改动,需要再次git add。
  3. git checkout -- filename 取消没有被staged的修改
_1541735226_1844481055.png

两个csv文件都被staged,之后northern.csv又有一些修改。取消这些修改。

  1. 如果文件已经staged。先unstage,然后取消修改。
    git reset HEAD path/to/file
    git checkout -- path/to/file
    总结:stage a file:git add
_1541735592_1266646940.png

这些就是staged files(后续等待commit)
unstage a file:git reset

  1. 恢复文件的某个历史版本。将每次commit看做一次存储的历史版本。
    git checkout 2242bd report.txt 会恢复到2242bd commit的版本
    恢复不会消除历史记录,恢复也会被记录为一次commit(之后需要git commit)
    git log -3 report.txt 该文件的最后三次commit
  2. 取消所有修改
    git reset HEAD data (data目录下的)
    git checkout -- data
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,493评论 0 13
  • 写在前面 VCS中集中式与分布式的差别集中式的服务器如果挂了,那么所有人都挂了,因为完整仓库只存在服务器上 ; 而...
    小贱西风阅读 489评论 0 1
  • 因为原文太长超出字数,Lesson 3 就放在另一篇文章里 How to Use Git and GitHub 标...
    赤乐君阅读 5,169评论 1 5
  • 昨天排练的时候我老是跟不上老师的节奏老师哼,不高兴说了一句明天别再来了。听了这话我恨我自己为什么别人做到的事我就做...
    快乐_c0d8阅读 157评论 0 0
  • 佛说,因果报应,生死轮回 我更相信今生的姻缘是前世彼此的眷恋 前世我虔心求佛,想要忘断尘缘 因对你的爱恋让我凡心未...
    杜灏阅读 295评论 0 4