整合 git add 和 git commit
git add简介git add [参数] <路径>作用就是将我们需要提交的代码从工作区添加到暂存区,add 添加的是文件改动,而不是文件名,就是告诉 Git系统,我们要提交哪些文件,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件;把已跟踪的文件放到暂存区;还能用于合并时把有冲突的文件标记为已解决状态等)当我们 git add 添加文件到缓存区后,如果你仔细观察的话
git add
简介
git add [参数] <路径>
作用就是将我们需要提交的代码从工作区添加到暂存区,add
添加的是文件改动,而不是文件名,就是告诉 Git
系统,我们要提交哪些文件,根据目标文件的状态不同,此命令的效果也不同:
- 可以用它开始跟踪新文件;
- 把已跟踪的文件放到暂存区;
- 还能用于合并时把有冲突的文件标记为已解决状态等)
当我们 git add
添加文件到缓存区后,如果你仔细观察的话,会发现你项目下的.git
文件夹里面的 objects
文件夹都会发生变化,git
会生成一个 40 位的 hash
,前两位 hash
值作为文件夹的名字,而 hash
值后 38 位作为文件名(blob 对象),只存储文件的内容,不存储文件名,如果我们两个文件内容一样,就只要一个object
就可以了。当你第一次 git add
的话 .git
文件夹中会自动生成一个 index
文件(暂存区),之后的 git add
只会去更新 index
文件
index
文件是连接工作区和代码仓库的,在暂存区的index
主要是为了代码仓库做准备,保存了我们在提交(commit)之前的当前的状态,状态包括了文件,如果有文件夹有目录,它也会包括这个目录,以及每个文件所对应的到底是哪个状态/具体内容是什么。
git add
仅仅是将文件添加到 index
(暂存区),存储的方式是 key
为 40 位 hash
值,value
为 文件内容。
命令
$ git add .
他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改以及新文件,但不包括被删除的文件
$ git add -u
-u
他表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件(git add --update
的缩写)
$ git add -A
-A
是上面两个功能的合集(git add --all
的缩写)
$ git add -i
-i
它也是作用于版本库中已被跟踪的文件中的执行过修改与删除操作的文件
$ git add -h
-h
是查看帮助,使用 git add --help
可以查看更详细的内容
git commit
简介
git commit
主要是将暂存区里的改动给提交到本地的版本库。每次使用 git commit
命令我们都会在本地版本库生成一个 40 位的哈希值的文件,这个哈希值也叫 commit-id
,同时.git
文件夹里面的 objects
文件夹都会发生变化,他会生成一个 commit
对象和一个 tree
对象,命名都是前两位 hash
值作为文件夹的名字,而 hash
值后 38 位作为文件名.
-
commit
对象里面的内容包含了tree
、author
、parent
以及committer
,tree
指向了git commit
同时生成的tree
对象,而第一次commit
时不会有parent
,其余commit
的parent
会指向上一次commit
的commit-id
-
tree
对象里面的内容主要是这次提交的版本所对应的改动,它里面的文件的状态(里面有几个文件,它所对应的文件名和blob对象是什么)
命令
$ git commit -m <message>
-m
表示可以直接输入后面的提交信息,如果不加 -m
参数,那么是不能直接输入提交信息的,而是会调用vim
编辑器来进行编辑这个提交消息
$ git commit -a -m <message>
-a -m
主要的功能就是直接默认帮你执行 git add
和 git commit -m
这个命令
$ git commit --amend
这个命令我总结了它的两个功能:
1. 可以修改上一次的提交信息。
2. 可以将最近的修改追加到上一次的提交上
$ git commit --help
查看帮助,还有许多参数有其他效果
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)