Git 教程 - 文件操作
Jinku Hu
2023年1月30日
在本教程中,你将学习 git 中的文件操作比如如删除、移动和重命名文件。
Git 删除文件
最简单的将文件从跟踪中删除并最终从存储库中删除的方法是 git rm
。
$ git rm tes2.txt
rm 'test2.txt'
运行该命令后,test2.txt
将从工作文件夹中删除该文件,并且此删除信息已添加到暂存区。
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: test2.txt
Git 重命名文件
如果直接在工作区中重命名文件,Git 将此操作视为两个操作,第一是删除旧文件,第二是将新命名的文件添加到工作区中。
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test1.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
test1_rename.txt
no changes added to commit (use "git add" and/or "git commit -a")
这种操作的缺点是它会破坏文件的版本历史记录,此后你无法查看此重命名之前的历史修改记录,这在版本控制中是不可取的。
Git 有一个重命名命令来解决这个历史修订记录链接断开的问题 - mv
,
$ git mv test1.txt test1_rename.txt
mv
的意思就是 move
,在这里,重命名文件也就意味着 test1.txt
文件被移动重命名为 test1_rename.txt
如果你现在检查 git status
,renamed
就会出现了,
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: test1.txt -> test1_rename.txt
Git 移动文件
与重命名文件类似,在 git 中移动文件也使用 git mv
命令,只是目标文件夹与被移动文件原本的文件夹不同。
$ git mv test1_rename.txt move/test1.txt
这里,文件夹 move
是目标文件夹,test1.txt
是文件 test1_rename.txt
移动后的新文件名。
我们来看看 git status
,
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: test1_rename.txt -> move/test1.txt
你可以看到,它也是一个 renamed
操作,只是目的地文件夹不同。