GIT 版本控制命令学习
一 基本命令
1.$ git init
要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:
2.$ git status
检查当前文件状态
3.git add命令
功能1:可以用它开始跟踪新文件
功能2:或者把已跟踪的文件放到暂存区
功能3:还能用于合并时把有冲突的文件标记为已解决状态等
4.$ cat .gitignore(文件内定义规则)
忽略某些文件
我们再看一个 .gitignore 文件的例子:
# 此为注释 – 将被 Git 忽略 *.a # 忽略所有 .a 结尾的文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
5.git diff 查看当前工作目录和暂存区域的文件差异
git diff --cached 查看当前暂存区域和上一次提交的文件差异
6.git commit 提交暂存区域文件到版本库
git commit -a 跳过暂存区域,直接将以跟踪的文件变化提交
7.git rm 移除版本库中的跟踪列表,同时删除目录文件
git rm -f 强制删除,功能同上
git rm --cached 在跟踪列表中删除文件,目录中保留
$ git rm log/\*.log
注意到星号*之前的反斜杠 \,因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮 忙展开(译注:实际上不加反斜杠也可以运行,只不过按照 shell 扩展的话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子本来就指定了目录,所以效果等同,但下面的例子就会用递归方式匹配,所以必须加反斜杠。)。此命令删除所有log/目录下扩展名为.log的文件
8.$ git mv file_from file_to
它会恰如预期般正常工作。实际上,即便此时查看状态信息,也会明白无误地看到关于重命名操作的说明:
$ git mv README.txt README $ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # renamed: README.txt -> README #
其实,运行
git mv
就相当于运行了下面三条命令:
$ mv README.txt README $ git rm README.txt $ git add README
9.git log 查看记录
git log -p -2 查看最近2次的记录(-p 展开内容差异 -2 两次更新)
git log --stat 显示统计数据