6:Git高层命令

基本操作流程

  1. 创建工作目录
    对工作目录进行修改
  2. git add ./(或者文件路径,./意思就是将工作目录的所有文件都加载进去)
    这个高级命令相当于执行了n次两个底层命令
    ①:git hash-object -w 文件路径
    ②:git update-index --add --cacheinfo 100644 githash值 文件名
    注意:这里的 git add命令只是加入到暂存区,没有生成tree对象
  3. git commit -m “写上注释内容”
    这个高级命令相当于执行了n次两个底层命令
    ①:git write-tree
    ②:git commit-tree
    注意这个基本流程,表面上我们的工作内容好像是
    从工作区–>暂存区–>版本库,但是这样理解是错误的
    实际的流程是这样的
    我们在工作目录里面修改,然后就会生成git对象放在版本库里面,
    然后从版本库里面拿去到暂存区,然后从暂存区里面生成树对象放在
    版本库里面,然后在从版本库里面拿出来进行封装生成提交对象再放回版本库
    所以说git是很安全的,就算你工作目录交到暂存区了,但是你没有提交,git一样是帮你管理,记录的.

高层命令

  1. 初始化新仓库 :git init
    要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:git init 作用:初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要 的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。
  2. 记录每次更新到仓库的状态
    工作目录下面的所有文件有两种状态:已跟踪未跟踪
    已跟踪的文件有三种状态:已提交已修改或者已暂存
    已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它 们的记录,就是通过了git add这条命令操作过的文件
    所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在 当前的暂存区域,就只是在工作目录的文件,没有通过git add命令操作过
  3. 检查当前文件状态 : git status
    ①:未跟踪文件
    如果创建一个新文件janev1.txt,保存退出后运行 git status 会看到该文件出现 在未跟踪文件列表中,如下图:
    在这里插入图片描述
    在状态报告中可以看到新建的 jane v1.txt文件出现在“Untracked files”下 面。未跟踪的文件意味着 Git 在之前的快照(提交)中没有这些文件;Git 不 会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因 而不用担心把临时文件什么的也归入版本管理。

②:跟踪文件的已暂存状态
如果这个文件被git add执行过,就从未跟踪文件变成跟踪文件的暂存状态,如下图:
在这里插入图片描述
只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。在 git add 后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归 跟踪该目录下的所有文件。(译注:其实 git add 的潜台词就是把目标文件快 照放入暂存区域,也就是 add file into staged area,同时未曾跟踪过的文件标 记为已跟踪。)
③:跟踪文件的已修改状态
这个janev1.txt已经是已暂存的状态,若是这时我们将这个文件的内容修改一下,再看它的状态,就会:
在这里插入图片描述
janev1.txt文件出现了两次!一次算已修改,一次算已暂存,实际上 Git 只不过暂存了你运行 git add 命令时的版本,如果现在提交,那 么提交的是添加注释前的版本,而非当前工作目录中的版本。所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来.

**查看已暂存和未暂存的更新 **
git status 的显示比较简单,仅仅是列出了修改过的文件,
如果要 查看具体修改了什么地方,可以用 git diff 命令.
这个命令它已经能解决我们 两个问题了:
当前做的哪些更新还没有暂存?
有哪些更新已经暂存起来准备 好了下次提交?

  1. 当前做的哪些更新还没有暂存?,
    命令:git diff(不加参数直接输入 git diff)
    在这里插入图片描述
  2. 有哪些更新已经暂存起来准备好了下次提交?
    命令: git diff --cached 或者 git diff --staged(1.6.1 以上)
    在这里插入图片描述
    ④:跟踪文件的已提交状态
    命令:git commit
    注意:
    这种方式会启动文本编辑器以便输入本次提交的说明 默认的提交消息包含最后一次运行 git status 的输出,放在注释行里, 另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行, 不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。
    另外也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新:
    命令:git commit –m “message xxx”

提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态, 可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照, 以后可以回到这个状态,或者进行比较

**跳过使用暂存区域 **
尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁 琐。Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交, 从而跳过 git add 步骤
git commit -a //vim文本编写器写注释
git commit -a -m “注释” //在后面写注释

删除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中注册删除(确切地说, 是在暂存区域注册删除),然后提交.

  1. 就是在工作目录里面删除文件,可以手动删除,也可以使用命令行rm 文件名 进行删除
  2. 此时如果运行git status就会显示
    在这里插入图片描述
    显示的是jane.txt文件进行了已修改还没进行暂存,若我们将它进行暂存
    在这里插入图片描述
    现在发现就是暂存区里面本来有一个jane.txt的,现在没有了,其实就是删除了暂存区里面的东西,但是我们将这个暂存区进行一次提交的话,就会向版本库里面增加一个没有jane.txt的tree对象和没有jane.txt的提交对象,对于删除文件,版本库是增加内容的,之前保存的jane.txt的git对象是不会被删除的

上面也可以简化成一个命令:git rm 文件名
在这里插入图片描述

文件改名
在这里插入图片描述
文件改名也是相当于删了原本的文件,加入新名字的文件
注意:上图的git add ./ 然后你不是写这个将全部提交的代码,就要改写成要加入两个东西进入暂存区
分别是:git add jane.txt 和git add janejing.txt

也可以一步写成:
在这里插入图片描述
其实,运行 git mv 就相当于运行了下面三条命令:

mv 1.txt 2.txt 
git rm 1.txt 
git add 2.txt

查看历史记录

git log //将所有的提交对象进行显示,有提交人,时间,提交对象hash值
参数
git log --pretty=oneline //这样子好看很多
git log --oneline //这样子更加清晰

发布了133 篇原创文章 · 获赞 37 · 访问量 4746

猜你喜欢

转载自blog.csdn.net/qq_43416157/article/details/104197397