参考 git奇迹淫巧

3 提交commit

一般命令为 git commit -m “first commit”

3.1 进入编辑器

git commit
执行后进入vim编辑器,编写commit 内容

3.2 跳过暂存,直接提交

git commit -a -m “first commit” / git commit -am “first commit”
该命令将会将工作区已跟踪的文件直接提交

3.3 修改最近一次的commit( git commit —amend)

提交完了才发现提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令修改提交

  1. $ git commit -m 'initial commit'
  2. $ git add forgotten_file
  3. $ git commit --amend

3.4 修改某一次的commit( git rebase -i baseCommit)

这是一个变基操作,所以baseCommit就是你要修改某一个commit的上一级(父级)commit。
image.png
执行 git rebase -i 59712c1
image.png
image.png
image.png
修改message信息,并:wq!
image.png
查看log
image.png
对比下面的修改前的log,发现除了message修改了,base-commit后面的所有commit id都变化了,因为这是个变基操作,id肯定会变
image.png

3.5 合并连续的commit(git rebase -i baseCommit)

有时候往master分支合并 或者 想精简美化commit记录,需要把多个commit合并成一个,这时候还是用到git reabse操作。基本操作同3.4,只是一点不同,用s选项
image.png
结果
image.png

3.6 合并不连续的commit(git rebase -i baseCommit)

image.png
image.png
这个操作可能会引起合并冲突,要小心解决,最后看结果,合并到一个commit了
image.png

4 查看提交历史log

链接
一般命令为 git log

4.1 显示每次提交的内容差异git log -p

你也可以加上 -2 来仅显示最近两次提交

4.2 git log —pretty

指定使用不同于默认格式的方式展示提交历史
oneline 将每个提交放在一行显示

  1. $ git log --pretty=oneline
  2. ca82a6dff817ec66f44342007202690a93763949 changed the version number
  3. 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test
  4. a11bef06a3f659402fe7563abf99ad00de2209e6 first commit

其他还有shortfullfuller,format等
其实直接 git log —oneline 也可以

4.3 git log —pretty —graph 查看分支合并

当 oneline 或 format 与另一个 log 选项 --graph 结合使用时尤其有用。 这个选项添加了一些ASCII字符串来形象地展示你的分支、合并历史:
git log —pretty=oneline —graph

  1. * 6804438525d006df09814b7303e2cf0fc2c01fb3 (HEAD -> dev1) Merge branch 'master' into dev1
  2. |\
  3. | * 94af1e24a7768c3b66cb430f50f8e29dd9480bfb (master) 修改 aaaa.html
  4. * | 7033f8129759879717c3618cbe62b3e372bce247 修改c.js 2
  5. * | ca25eb35960afd7f7eaa346bf8570df1e148897e 修改c.js
  6. * | abf6b40b34bded0f37c9556858b5b8046913b437 add c.js
  7. * | 5d3d0fa6e84b43a54d4779c510ec5d3403ba78e2 create branch dev1
  8. |/
  9. * 4165f47f3ace5ae75ddc24042238364e9f64e12a (origin/master, origin/HEAD, origin) add gg,html
  10. * 40b075465457f325a72cada8935ac12b524eac38 xxxxx
  11. * 0ca5b3d004284ae8d60f5ce01c2fa0d293b07df8 Update aaaaa.html
  12. * 3b409c036f62a8c268138e3450dcb7cdaff7afae Create README.md
  13. * 0e0ed4f8b2b136076e06cfafb7ec2e72d07047cb add aaaaa.html

4.4 查看最近几次提交

  1. git log -n2 // 最近两次

5 撤销

链接

5.2 取消暂存的文件 (暂存区->工作区)

git reset HEAD
git reset HEAD —file

5.3 撤消对文件的修改 (工作区)

git checkout —file

image.png