文章目录
- 1.前言
- 2.修改记录 log
- 3.查看 unstaged
- 4.查看 staged (--cached)
- 5.查看 staged & unstaged (HEAD)
1.前言
在 git 中, 每一次提交(commit)的修改, 都会被单独的保存起来. 也可以说 git 的中的所有文件都是一次次修改累积起来的. 文件好比楼房, 每个 commit 记录 了盖楼需添加或者拿走的材料. 整个施工过程也被记录了下来.
2.修改记录 log
之前我们以Mr Luoj 的名义对版本库进行了一次修改, 添加了一个 1.py 的文件. 接下来我们就来查看版本库的些施工的过程. 可以看到在 Author 那已经有我的名字和 email 信息了.
如果我们对1.py文件进行一次修改, 添加这行代码:
a = 1
然后我们就能在 status 中看到修改还没被提交的信息了.
$ git status
# 输出
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: 1.py # 这里显示有一个修改还没被提交
no changes added to commit (use "git add" and/or "git commit -a")
所以我们先把这次修改添加 (add) 到可被提交 (commit) 的状态, 然后再提交 (commit) 这次的修改:
$ git add 1.py
$ git commit -m "change 1"
# 输出
[master fb51216] change 1
1 file changed, 1 insertion(+) # 提示文件有一处添加
再次查看 log, 现在我们就能看到 create 1.py 和 change 1 这两条修改信息了. 而且做出这两条 commit 的 ID, 修改的 Author, 修改 Date 也被显示在上面.
$ git log
如果删除一部分代码, 也会被记录上, 比如把 a = 1 改成 a = 2, 再添加一个 b = 1.
a = 2
b = 1
3.查看 unstaged
如果想要查看这次还没 add (unstaged) 的修改部分 和上个已经 commit 的文件有何不同, 我们将使用 $ git diff:
$ git diff #对比工作区(未 git add)和暂存区(git add 之后)
4.查看 staged (–cached)
如果你已经 add 了这次修改, 文件变成了 “可提交状态” (staged), 我们可以在 diff 中添加参数 --cached 来查看修改:
$ git add . # add 全部修改文件
$ git diff --cached #对比暂存区(git add 之后)和版本库(git commit 之后)
5.查看 staged & unstaged (HEAD)
a = 2
b = 1
c = b
目前 a = 2 和 b = 1 已被 add, c = b 是新的修改, 还没被 add.
$ git diff HEAD # 对比工作区(未 git add)和版本库(git commit 之后)
$ git add .
$ git status
$ git commit -m "change 2"