更新日志
- 2018-06-04 git log
- 2018-06-03 git add + git commit
- 2018-05-31 git status
- 2018-05-24 git init
- 2018-05-23 git config
- 2018-05-15 初稿
关于
实话说 git 是笔者用过的并觉得最好的版本控制系统,相较于 Microsoft 的 TFS 以及 SVN,git 都要优雅许多。然而接触它这么久,还是不敢说已经完全掌握并理解它,但这并不妨碍我对它的热爱。以前也记录过使用的一些总结,后来由于某种原因丢失了,所以想温故而知新。
注意:本文的关注点在于如何使用 git 所提供的命令上,诸如环境安装,配置此类问题均不在范畴。
git init
git-init - 用于创建空的 Git 仓库或者重新初始化一个已存在的 Git 仓库。
以下均假设未设置 Git 相关参数环境变量,如GIT_DIR
,GIT_TEMPLATE_DIR
etc.
1 | # 新建git仓库 |
git clone
1 | # 克隆仓库到当前目录下 |
git config
1 | # 查看所有配置 |
git status
git status
用于查看当前工作区文件状态。
1 | # 查看工作区当前状态 |
git add
add 命令用于将工作区变化放入暂存区。
1 | # 特定文件 |
交互模式
进入交互模式后默认输出 status 子命令的结果,并且处于交互命令循环中。此时光标以一个>
结尾,可以通过键入选项数字或者类似s
,sta
等使选择唯一的字母。
主命令循环有 6 个子命令:
status
用于显示暂存区和版本库及工作区的变化
- staged - 显示暂存区版本库当前版本的变化,即将会提交的变化。
- unstaged - 显示工作区与暂存区的变化,即可以暂存的变化。
1 | staged unstaged path |
update
用于暂存选择的变化。
1 | *** Commands *** |
注意此时已经在 update 子命令下>>
,你可以通过如下方式选择你需要暂存的变化:
1,2
以,
分隔多个选择1-3
或1-
进行范围选择-2
取消选中
选择完之后,已选中的变化会以*
高亮显示。空行回车
即可暂存所选中的变化。
1 | Update>> 3 |
revert
类似 update 命令,用于将选中的已暂存变化回退至版本库中的当前版本。如果是新路径,即将新追踪的文件回退至未追踪状态。
add untracked
类似 update 和 revert,用于追踪新文件。
patch
类似 update 但是更细致化,当你选择需要暂存的变化后,会将暂存区与工作区的差异(即将要放入暂存区的变化)依次显示并询问你的动作。这实际上相当于更加细粒度的暂存
你选择的那些变化。
可用的动作:
- y - stage this hunk(暂存当前变化块)
- n - do not stage this hunk(不暂存)
- q - quit; do not stage this hunk or any of the remaining ones(退出 patch)
- a - stage this hunk and all later hunks in the file(暂存所有)
- d - do not stage this hunk or any of the later hunks in the file(不暂存当前文件的此处及之后的变化块)
- g - select a hunk to go to(跳转至其它变化块)
- / - search for a hunk matching the given regex(搜索指定的变化块)
- j - leave this hunk undecided, see next undecided hunk(跳过当前变化块,跳至
下一个未决定
的变化块) - J - leave this hunk undecided, see next hunk(跳过当前变化块,跳至
下一个
变化块) - k - leave this hunk undecided, see previous undecided hunk(跳过当前变化块,跳至
前一个未决定
的变化块) - K - leave this hunk undecided, see previous hunk(跳过当前变化块,跳至
前一个
的变化块) - s - split the current hunk into smaller hunks(将当前变化块分割成更小的变化块,
细粒度
) - e - manually edit the current hunk(手动编辑当前变化块+ -操作)
- ? - print h
diff
用于查看将要提交的内容(暂存区与版本库当前版本)。
git commit
用于将暂存区的变化更新到版本库中,在新的提交中储存暂存区的当前内容,以及来自用户描述更改的日志消息。
1 | # 自动暂存所有被修改或删除的已追踪文件并提交 |
git log
用于查看历史提交日志。
1 | # 查看最近2次提交并显示内容差异 |
git log --pretty=format
常用的选项:
1 | %H 提交对象(commit)的完整哈希字串 |
作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。(分布式 Git)
1 | # 显示从2018/6/1开始到1分钟之前这段时间内由'suchenxiaoyu'对文件'readme.md'的非合并提交 |