Pro Git 学习笔记 (二, 提交)

2017-03-07  本文已影响11人  冯斯特罗

lifecycle

lifecycle.png

文件 .gitignore 的格式规范如下:

git diff:

命令 说明
git diff 工作目录中工作区和暂存区域快照之间的差异
git diff --cached / git diff --staged(推荐) 暂存区和版本库之间的差异

移除文件

普通删除:

git rm <filename> # 本地和git均会被删除
git commit # 将删除消息推送给版本库

已经提交到暂存区之后删除,用 -f :
这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。

git rm -f <filename> # 本地删除
git commit # 将删除消息推送给版本库

只删除暂存区,工作区保留,用--cached :
当你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。
当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。

git rm --cached <filename> # 只删除缓存区,本地保留
git commit # 将删除消息推送给版本库

也可以使用 glob 模式

git rm log/\*.log

注意到星号 * 之前的反斜杠 \, 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:

git rm \*~

该命令为删除以 ~ 结尾的所有文件。

移动文件

git mv file_from file_to

它会恰如预期般正常工作。 实际上,即便此时查看状态信息,也会明白无误地看到关于重命名操作的说明:

git mv README.md README
git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README

其实,运行 git mv 就相当于运行了下面三条命令:

mv README.md README
git rm README.md
git add README
上一篇 下一篇

猜你喜欢

热点阅读