Git 进阶(三):Git 文件操作

本文主要介绍Git的文件操作,包含文件四种状态的之间的转换以及一些常用的提交、删除等操作,并在文末附有常用的Git操作命令图。博客原文: http://www.dustyblog.cn/311.html

一、Git 操作

1、Git 日常使用的六个命令

Git 进阶(三):

2、Git 文件操作

版本控制就是对文件的版本控制:首先要知道文件当前在什么状态,然后才能对文件进行修改、提交等操作,不然可能会提交了现在还不想提交的文件。

2.1、文件的四种状态

  1. Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到 Git 库, 不参与版本控制.通过 git add 状态变为 Staged;
  2. Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为 Modified. 如果使用 git rm 移出版本库, 则成为 Untracked 文件;
  3. Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处,通过 git add 可进入暂存 staged 状态, 使用 git checkout 则丢弃修改过, 返回到 unmodify 状态, 这个 git checkout 即从库中取出文件, 覆盖当前修改;
  4. Staged: 暂存状态.执行 git commit 则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为 Unmodify 状态. 执行 git reset HEAD filename 取消暂存, 文件状态为 Modified.

Git 进阶(三)

2.2、查看文件状态

git status 查看所有文件的状态

git status (filename) 查看指定文件的状态

案例

foo.htm 文件的状态为 untracked(未跟踪),右下角提示:git add 暂存。Git 进阶(三)

[s][p]

Git 这点做得很好:在输出每个文件状态的同时还说明了怎么操作,像上图就有怎么暂存、怎么跟踪文件、怎么取消暂存的说明。

[/p]

扫描二维码关注公众号,回复: 1254119 查看本文章

2.3、添加文件与目录

工作区(Working Directory)就是你在电脑里能看到的目录。

版本库(Repository)工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD。

将 untracked 状态的文件添加到暂存区:

git add . #添加当前目录的所有文件到暂存区(注意:最后面有个“.”);

git add (file) (file) #添加指定文件到暂存区;

git add (dir) #添加当前目录的所有文件到暂存区。

案例

如图:新建的 aoo.htm 通过git add添加到暂存区

2.4、移除文件与目录(撤销 add)

Git 进阶(三)

git rm --cached #直接从暂存区删除文件,工作区不做出改变

案例

通过移除操作,aoo.htm 文件恢复到 untracked 状态:

git checkout . #用赞寻去全部或指定文件替换工作区的文件,这个操作很危险,会清楚工作区中未添加到暂存区的改动。

git clean #一般会加上参数 -df,-d 表示包含目录,-f 表示强制清除;

案例

新建 test.txt 文件并查看状态移除前:强行移除,test.txt 文件消失

2.5、查看文件修改后的差异

git status 只能查看对哪些文件做了改动,如果要看改动了什么,可以用:

git diff (files) #查看文件修改后的差异

案例

Git 进阶(三)---a 表示修改前的文件,+++b 表示修改后的文件,可以发现,a 对应的文件是红色的‘Hello Word!’,b 对应的是蓝色的‘Hello Git!’;

此外,还有以下两个常用命令:

 
  1. git diff --cached #比较暂存区的文件与之前已经提交过的文件
  2. git diff HEAD~n #比较 repo 与工作空间中的文件差异

2.6、签出

2.6.1、使用情景

该文件已经存在仓库中,工作区已经对其进行修改过了,如果想撤销修改,可以使用 checkout。

检出命令git checkout 是 git 最常用的命令之一,同时也是一个很危险的命令,因为折腾命令会重写工作区。

2.6.2、语法
  1. git checkout [-q][][--]
  2. git checkout [-q][]
  3. git checkout [-m][[-b]--[orphan]][]

太杂,晚些时候再整理

2.7、提交

通过add 只是将文件或者目录添加到 index 暂存区,使用commit可以实现将暂存区的文件提交到本地仓库。

git commit -m [message] #提交暂存区到仓库区

git commit [file1] [file2] ... -m [message] #提交暂存区的指定文件到仓库区

git commit -a#提交工作区自上次 commit 之后的变化,直接到仓库区,跳过了 add,对新文件无效

git commit -v #提交时显示所有 diff 信息

#使用一次新的 commit,替代上一次提交

案例

提交前状态Git 进阶(三)提交 aoo.htm 文件,并查看提交后的状态Git 进阶(三)从上图可以看出,提交后,暂存区 aoo.htm 没有了。

2.8、撤销更新

2.8.1、撤销暂存区更新

git reset HEAD [filename] #将暂存区指定文件移出到工作区

2.8.2、撤销本地仓库 更新
撤销提交

放弃工作区和 index 的改动,同时 HEAD 指针指向前一个 comit 对象:Git 进阶(三)git log #查看提交日志,git reset --hard HELD~1撤销了上一次的提交,这里的上一次提交日志就不存在了。

cat [filename] #查看文件内内容

git revert #把指定的提交修改回滚,并同时生成一个新的提交

2.9、日志与历史

 
  1. git log #查看所有提交日志;
  2. git log [filename] #查看某文件提交日志;
  3. history #查看在 bash 下输入过的指令;
  4. git reflog #查看仓库中所有分支的所有更新记录,包括已经撤销的更新。

2.10、查看文件列表

git ls-files #查看所有的缓存文件,也可查看指定状态的文件列表

2.11、删除文件

2.11.1、删除未跟踪文件

直接用 bash 中的rm即可删除。

2.11.2、删除已提交文件

-f强制删除,同时删除工作区和暂存区中的文件;

git reset HEAD [filename] #撤销删除到工作区。

2.11.3、删除暂存区的文件,不删除工作区的文件

可通过上一步的操作完成。

最后,附上简介版的常用 Git 操作命令


猜你喜欢

转载自blog.csdn.net/qq_41690817/article/details/80509814