Git常规使用

  • Git怎么使用?
  • 使用 git commit 进行提交操作时,Git都做了什么?

Git怎么使用?

下载、安装Git

下载Git安装文件,教程链接

获取Git仓库

  • 在现有目录中初始化仓库。
    在本地磁盘现有目录里运行 git init 命令,会在该目录下创建 .git 子文件夹,这个子文件夹含有你初始化的 Git 仓库中所有的必须文件。此时,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。git init 会默认创建 master 分支!!!
git init
  • 克隆现有的仓库
    使用 git clone [远程地址] 从远程仓库克隆。Git 克隆的是远程仓库上的几乎所有数据。
git clone https://gitee.com/**/git_learn_test.git

检查当前文件状态、跟踪文件变动

使用 git status [-s] 检查当前文件状态

git status
工作目录无可跟踪文件
# 在工作目录创建README文件
echo '' >> README
git status

发现未跟踪的文件README

在工作目录中新建的文件都处于未跟踪状态。**

# 使用 git add 命令跟踪文件变动(文件新增、修改、删除都属于变动)
git add README
git status

文件暂存

可使用 git rm --cached <file> 命令将文件移出暂存区,使文件处于未跟踪状态。

git rm --cached README
git status
将文件移出暂存区

提交文件

使用 git commit 命令将暂存区的文件提交到Git仓库。每次提交需要填写提交说明

git commit -m "提交README文件"
文件提交.png

忽略文件

如果文件不需要纳入Git的管理,可以创建名为 .gitignore 的文件,在文件中列出要忽略的文件模式。

# 忽略当前目录左右的已.log为后缀的文件
echo '*.log' >> .gitignore

文件 .gitignore 的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
glob模式又是个啥?

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号() 表示匹配任意中间目录,比如 a/*/z 可以匹配 a/z , a/b/z 或 a/b/c/z 等。

# 忽略所有.a结尾的文件
*.a

# 不忽略lib.a,即跟踪lib.a文件
!lib.a

# 仅忽略当前文件下的TODO文件
/TODO

# 忽略build文件夹下的所有文件
build/

# 忽略doc文件(不含子文件夹)下的所有txt文件,忽略doc/a.txt,不忽略doc/t/b.txt
doc/*.txt

# 忽略doc文件夹及子文件夹下的所有pdf文件
doc/**/*.pdf

查看已暂存和未暂存的修改

如果想知道具体修改了什么地方,可以使用git diff命令。

  • 注意: git diff只能查看本地工作目录修改未暂存的数据;git diff --cachedgit diff --staged(Git 1.6.1+版本支持)只能查看本地暂存区修改的数据!!未被跟踪(新追加)的数据不会被查看。
# 修改README文件,追加123456
echo '123456' >> README
git diff
查看工作目录中被修改的变化
# 将README文件加入暂存区
git add README
# 当工作目录中没有被修改的文件后使用git diff不会输出任何内容
git diff --staged # or git diff --cached
查看暂存区被修改的变化

移除文件

从工作目录直接删除
  • 在本地磁盘直接删除文件
git status
image.png
  • 使用 git rm [文件],该命令会将文件从工作目录和Git仓库移除。
git rm README
git status

image.png

git commit后该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。

从Git仓库中删除,在工作目录中保留
git rm --cached README
git status
image.png

使用 git commit 进行提交操作时,Git都做了什么?

当使用 git commit 进行提交操作时,Git 会先计算每一个子目录的校验和,然后在 Git 仓库中这些校验和保存为树对象。 随后,Git 便会创建一个提交对象,它除了包含上面提到的那些信息外,还包含指向这个树对象(项目根目录)的指针。如此一来,Git 就可以在需要的时候重现此次保存的快照。
现在,Git 仓库中有五个对象:三个 blob 对象(保存着文件快照)、一个树对象(记录着目录结构和 blob 对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。

# 创建git仓库
git init
# 创建README1 README2 README3
touch README{1..3}
# 跟踪新文件
git add README1 README2 README3
# 提交
git commit -m '提交新文件'
提交对象及其树结构(图片来自网络)

做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。

提交对象及其父对象(图片来自网络)

可以使用git log --pretty=oneline查看提交记录,历史记录按提交时间倒序排**

git log --pretty=oneline
查看提交历史

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

推荐阅读更多精彩内容

  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,408评论 0 3
  • 参考网址:https://git-scm.com/book/zh/v2 初次远行Git前的配置: Git 自带一个...
    逗留阅读 912评论 0 1
  • 2. Git 基础 写在前面:这一部分内容真的是好多好多好多ε(┬┬﹏┬┬)3,不过也是使用 Git 最有用的啦,...
    sylvia_yue阅读 317评论 0 2
  • Git学习笔记 Git 与 Github对接: cd到当前文档 git init初始化git git add -A...
    Aimerwhy阅读 326评论 0 0
  • 今天下午上完课后在课室写了下语文试卷回去的时候要路过隔壁班,隔壁班在上日语课,本来是准备很正常的走过去的,结果突然...
    快乐小屁屁孩阅读 291评论 2 6