之前的文章主要讲述了如何追踪文件,以及文件的状态、文件所在区域的流转。现在是最终的对文件进行版本控制了。
之前新建或修改后的文件,我们都add进了暂存区,文件还没有提交到版本仓库。现在我们就进行正式的版本控制吧。
一、提交版本
1. 提交版本命令 git commit -m <message>
message是对本次提交的备注信息,是必填项。
在提交之前,必须确认还有什么已修改或新建的文件还没有 git add 过, 否则提交的时候不会记录这些尚未暂存的变化。
这些已修改但未暂存的文件保留在本地磁盘。 所以每次准备提交前,先用 git status 命令看下,你所需要的文件是不是都已暂存起来了。
提交版本,是将暂存区的文件,提交进入仓库。
执行命令提交我们在工作区中的两个已暂存文件
$ git commit -m 初次提交
[master (root-commit) 337070e] 初次提交
2 files changed, 1 insertion(+)
create mode 100644 .gitignore
create mode 100644 hello.txt
hello.txt的内容为 hello ,.gitignore文件的内容为空。
现在你已经成功的创建了项目的第一个版本。
注意:提交时的文件是放在暂存区域的。 任何还未暂存的文件仍然保持已修改状态,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次版本,以后可以回到这个版本,或者进行比较。
2. 跳过使用暂存区域
命令 git commit -a -m <message>
给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。
注意是针对已追踪的文件,如果是新建文件,还是执行 add 操作的。
实例:
此时 hello.txt 是已追踪的,我们修改内容为 hello,并新建一个 world.txt 文件。
执行 git commit -a -m 第二次提交跳过暂存区。
先查看状态,再提交后查看状态:
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: hello.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
world.txt
$ git commit -a -m 第二次提交跳过暂存区
[master 84e27d4] 第二次提交跳过暂存区
1 file changed, 1 insertion(+), 1 deletion(-)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
world.txt
nothing added to commit but untracked files present (use "git add" to track)
新建的 world.txt 未追踪,在工作区。hello.txt 是已追踪文件。 执行提交后,只有暂存区的文件进入仓库了。
3.移除文件(删除文件)
git rm 命令
所谓的移除文件或删除文件,是指从暂存区或工作区中删除。
执行 git rm 命令,会从暂存区,并连带从工作区中删除文件,这样以后就不会出现在未跟踪文件清单中了。删除完后需要提交版本。记住所有提交了版本的代码都是可以恢复的。
这个命令删除暂存区和工作区中的文件,即已经追踪的文件。
实践:
执行前:
git status :
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
world.txt
nothing added to commit but untracked files present (use "git add" to track)
此时我们的 hello.txt 已经追踪了,执行删除命令。
执行后:
$ git rm hello.txt
rm 'hello.txt'
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: hello.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
world.txt
此时 hello.txt 已经删除了。工作区中也没有该文件了。并产生了一个待提交事项(Changes to be committed)。
我们提交删除,并查看状态:
$ git commit -m 删除hello文件
[master 1e3d8be] 删除hello文件
1 file changed, 1 deletion(-)
delete mode 100644 hello.txt
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
world.txt
nothing added to commit but untracked files present (use "git add" to track)
现在只剩下我们未追踪的 world.txt 了,hello.txt已经被删除了。
3. 暂存区中移除文件
git rm --cached <filename> 命令
另外一种情况是,我们想把文件从暂存区域移除,但仍然希望保留在当前工作目录中。
即让文件保留在工作区,但是并不想让 Git 继续跟踪。
当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。
git rm --cached <filename> 是 git add <filename> 的反向操作命令。
4. 重命名文件
命令 git mv file_from file_to
该命令将重新命名文件。文件必须是已追踪的文件。
实践:
我们追踪 world.txt 并将其重命名为 world2.txt
$ git add world.txt
$ git mv world.txt world2.txt
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: world2.txt
其实,运行 git mv 就相当于运行了下面三条命令:
$ mv README.md README $ git rm README.md $ git add README
转载自:知优码 https://www.javaidea.cn/topic/1238.html