学习的过程中记录一些东西是很好的习惯,在学习 git 的过程中,把常用的命令记录下来,以供参考。需要的时候打开这个页面,Ctrl+F,哈哈。
写作是一件很奇妙的事情,要把学会的东西输出需要对所学知识进行再一次的思考与加工,可能在加工的过程中发现了很多之前学习的时候没有发现的盲点,这时就要多花些时间去把盲点补上,这个过程中,自己对这些知识会有一个更加深入的理解。
在整理和记录这些常用命令的时候,基本已经把这些命令折腾得烂熟于心了。
====================上面是几句想说的话=====================
========================下面是正文========================
git status
- 用于查看哪些文件处于什么状态
- git status -s 简短的状态报告
- M 代表修改过的文件,在左边表示文件被修改并暂存,放在右边代表修改但没暂存
- MM 代表修改并暂存后又再次修改
- A 新添加到暂存区的文件
- ?? 新添加的未跟踪文件
git add
- 开始跟踪一个文件或目录,若为路径则递归地跟踪该目录下的所有文件
- 可以用于开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态。可以理解为:“添加内容到下一次提交中”
- 注意,有个坑!:运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来。否则运行 commit 时提交的是最后一次执行 git add 命令时的版本!
git diff
- 当前做的哪些更新还没有暂存?
- 有哪些更新已经暂存起来准备好了下次提交?
- git diff 此命令比较工作目录中当前文件和暂存区快照之间的差异
- git diff --staged 比较暂存区的内容跟暂存之前的快照之间的差异
- 将通过文件补丁的格式显示具体哪些行发生了改变
git difftool
- 调用图形化界面的插件展示文件差异
git commit
- 提交暂存区域的文件,直接提交会打开默认的文本编辑器输入本次提交的说明
- git commit -m ‘本次提交的说明’
- git commit -a 跳过 git add,把所有已跟踪过的文件暂存起来一并提交
git rm
- 移除某个文件,连带从工作目录中删除指定的文件
- git rm -f 如果删除之前修改过且已暂存,则需要 -f 才能删除
- git rm --cached filename 把文件从暂存区域移除,但仍然保留当前工作目录中的文件
- git rm 还可以使用glob模式,即shell简化版的正则表达式
- git rm log/\*.log 移除log目录下所有.log文件
- git rm \*~ 移除以 ~ 结尾的所有文件
- git mv file_from file_to 文件重命名
git log
- 不用任何参数则显示所有提交历史,最新的排在最上面
- git log -p -2 显示最近两次提交的内容差异
- git log --stat 查看每次提交的简略的统计信息
- git log --pretty=oneline 指定使用不同的方式展示提交历史,支持的选项有:oneline, short, full, fuller, format
- git log --preey=format 使用指定的格式输出
- git log --pretty=oneline --graph 使用ASCII字符串来形象展示历史
git commit --amend
- 此次提交与上次提交的内容合并成一次提交。如果上次提交以来你还未做任何修改,那么快照会保持不变,你仍可以修改提交信息。
- 使用场景:commit之后发现有几个文件没add或者提交信息写错了,这时可以使用这个命令。
例如:
# 将修改后要提交的文件暂存 git add README.md # 本意是想提交README.md和first.txt的提交,但是只暂存了README.md git commit -m "更新README.md文件和first.txt" # 这时发现了问题,于是把first.txt添加进来 git add first.txt # 再次提交,执行后会自动打开默认编辑器,里面是上次的提交信息,可以直接修改。 git commit --amend
git reset HEAD file
- 将暂存区的文件取消暂存
git checkout -- file
- 撤消对文件的修改,相当于svn中的revert
- 文件会回滚到上次 commit 后的状态