Git 文件管理

来源:互联网 发布:python读html文件 编辑:程序博客网 时间:2024/05/16 08:23

一、git add
git add 将暂存一个文件。就 Git 文件分类而言,如果一个文件时未追踪的,那么 git add 就会将文件的状态转化为已追踪的。如果 git add 作用于一个目录名,那么该目录下的文件和子目录都会递归暂存起来。
在任何情况下,最重要的事是要记住工作目录下的文件版本和索引中暂存的文件版本是有可能不同步的。当提交的时候,Git 会使用索引中的版本。

二、git commit
git commit 的 -a 或者 -all 选项将会导致执行提交之前自动暂存所有未暂存的和未追踪的文件变化,包括从工作副本中删除已追踪的文件。
如果不通过命令直接提供日志消息,Git 会启动编译器,并提示你写一个。

三、git rm
git rm 命令会在版本库和工作目录中同时删除文件。另外,要将一个文件由已暂存的转化为未暂存的,可以使用 git rm –cached 命令。git rm –cached 会删除索引中的文件并把它保留在工作目录中。
Git 可以从索引或者同时从索引和工作目录中删除一个文件。Git 不会只从工作目录中删除一个文件,普通的 rm 命令可以用于这一目的。
从工作目录和索引中删除一个文件并不会删除该文件在版本库中的历史记录。文件的任何版本,只要提交到版本库的历史记录的一部分,就会在对象库里并保存历史记录。
如果想保留那个不小心删除的文件,只要再把它添加回来就行了。Git 把工作目录下的文件也删除了,不过不用担心,版本控制系统擅长回复文件的旧版本。

$ git rm datarm 'data'$ git add datafatal: pathspec 'data' did not match any files$ git checkout HEAD -- data$ cat datanew dataand some more data now$ git statusOn branch masternothing to commit, working tree clean

四、git mv
假设你需要移动或者重命名文件。可以对旧文件使用 git rv 命令,然后用 git add 添加新文件,或者可以直接使用 git mv 命令。如:

$ mv stuff newstuff$ git rm stuff$ git add newstuff

$ git rm stuff newstuff

在示例版本中找回了 data 这个文件,下面重命名它,然后提交变更。

$ git mv data mydata$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD <file>..." to unstage)    renamed:    data -> mydata$ git commit[master eac5baa] moved data to mydata 1 file changed, 2 insertions(+) create mode 100644 mydata

若果你检查这个文件的历史记录,你可能会不安地看到 Git 丢失了原始 data 文件的历史记录,只记得它从 data 重命名为当前文件名。

$ git log mydatacommit eac5baa1040a823a19d62c485566d692595bd1e5Author: Jon Loeliger <jdl@spcial-project.example.org>Date:   Sat Aug 5 10:30:20 2017 +0800moved data to mydata

Git 其实是记得全部历史记录的,但是显示要限制于在命令中指定的文件名。–follow 选项会让 Git 在日志中回溯并找到内容相关联的整个历史记录。

$ git log --follow mydatacommit eac5baa1040a823a19d62c485566d692595bd1e5Author: Jon Loeliger <jdl@spcial-project.example.org>Date:   Sat Aug 5 10:30:20 2017 +0800moved data to mydatacommit c3a57604564c366015f09f48ca9cd53b968e4bc7Author: Jon Loeliger <jdl@spcial-project.example.org>Date:   Sat Aug 5 10:13:55 2017 +0800add some file
原创粉丝点击