Git文件操作

在本教程中,你将学习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 statusrenamed就会出现了,

$ 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操作,只是目的地文件夹不同。