我的Git笔记第二篇—文件管理

荒凉一梦 提交于 2020-01-30 09:44:20

目  录

2.1  文件添加及提交

2.2  文件删除

2.3 文件重命名

2.4 忽略指定格式的文件

2.5 撤销修改

2.6 差异比较

2.7 压缩仓库


2.1  文件添加及提交

文件添加

添加某个文件:git add file.c

添加所有文件:git add .

作用:

    1)已经追踪的文件:将修改从工作区保存到暂存区

    2)未追踪的文件:加入git追踪范围

文件提交

将暂存区的所有内容提交到版本库

— 单步提交:git commit -m "commit info"

— 一次性提交:git commit -a

— 修改最后一次提交:git commit --amend #该提交会生成一个新的commit对象,替换先前的commit对象

注意:如果修改没有保存到暂存区,是不会提交到版本库的。

 

2.2  文件删除

1)从工作目录和暂存区中删除

方式一:

    首先从工作目录中删除,使用 rm -rf file.c

    然后使用 git add file.c

    最后进行提交 git commit -m "delete file.c"

方式二:

    首先使用 git rm -f file.c

    再进行提交 git commit -m "delete file.c"

避免文件出现在未跟踪清单中

删除并提交后,该文件就不再被版本库追踪,但是版本库仍然有这些文件的快照

2)从暂存区中删除,工作目录保留

使用命令:git rm --cached file.c

包括:库文件、可执行文件、日志、临时文件

3)从版本库中删除:版本回退到错误提交之前的版本

撤销提交到暂存区:git reset --soft SHA-1(例如回退到上一个版本时SHA-1=HEAD^)

撤销提交到工作区:git reset --mixed SHA-1

将工作区、暂存区和版本库恢复到指定版本(不建议使用):git reset --hard SHA-1

注意:删除也被认为是修改,可以从版本库中还原。

 

2.3 文件重命名

文件重命名:git mv old_file new_file,然后进行提交

重命名实际操作

文件移动:mv old_file new_file

删除旧文件:git rm old_file

添加新文件:git add new_file

 

2.4 忽略指定格式的文件

有些文件不必提交到版本库中

— 可执行文件、日志文件、临时文件、库文件

忽略文件模式:glob模式匹配

— 忽略以#开始的行

— 忽略某种格式结尾文件:*.[ao]

— 某个库文件除外,不忽略:!clib.a

— 忽略临时文件:*~

— 忽略根目录下的某个文件:/text

— 忽略某个目录下的所有文件:libs/、libs/*.a

手动创建.gitignore文件

 

2.5 撤销修改

撤销工作区的提交

git checkout file.c

让文件回到最近一次commit或add的状态

若文件还没添加到暂存区:撤销后和版本库一样

若文件已添加到暂存区且做了修改:回到暂存区状态

撤销暂存区的内容

git reset HEAD file.c

将暂存区的修改撤销掉,重新放回工作区

撤销版本库的提交

git reset --hard SHA-1(HEAD^)

回退版本,并刷新到工作区中,彻底丢弃先前修改的内容

先前的提交对象还在版本库中孤独地存在着(可以压缩版本库,释放占用空间)

 

2.6 差异比较

比较工作区和暂存区差异

git diff #查看尚未暂存文件有哪些新的修改

比较暂存区和版本库差异

git diff --cached [HEAD]

git diff --staged SHA-1

查看已暂存文件和上次提交的快照之间的差异

比较工作区和版本库差异

git diff HEAD(SHA-1) #查看尚未暂存文件和最新提交文件快照的区别

比较两个版本之间差异

git diff 一个版本的SHA-1 另一个版本的SHA-1 #查看不同版本之间的差异

 

2.7 压缩仓库

压缩版本库

在日常运行中,git快照会占用磁盘空间

git会在增量存储单元中存储修改

通过git gc命令压缩增量存储单元,节省磁盘空间

快照的存储

对于修改的内容:做快照处理并保存

对于未修改的文件:做引用处理

查看git占用磁盘空间大小:du -sh

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!