美文网首页
Pro Git 学习笔记 (二, 提交)

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

作者: 冯斯特罗 | 来源:发表于2017-03-07 11:00 被阅读11次

lifecycle

lifecycle.png

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

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

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

相关文章

网友评论

      本文标题:Pro Git 学习笔记 (二, 提交)

      本文链接:https://www.haomeiwen.com/subject/tahugttx.html