Git 除了 add, commit, push, 其实还有好多有用有意思的方法
你应该用过 git log, 但是 log 支持很多有用的参数也许你不知道,下面列出一些比较有用的
这些参数组合起来挺有用的,比如
git log --author="jack" --after="1 week ago" -- oneline
git log --no-merges masters..
先看另一个分支的某个文件,其实可以不用切换到那个分支,执行下面的命令就可以直接查看
git show some-branch:somefile.js
如果你想和某个分支上的版本进行对比
git diff some-branch some-file.js
Rebase其实比较复杂,单独写一篇文章都未必讲的清楚明白, 当时有一个很实用的技巧不得不提
`git pull --rebase`
这是什么?
当你在本地改完,想要把代码push上去,如果主分支上已经有改动,这时候push失败,而且会提示你使用git pull
来获取最新的代码, 和本地的代码合并,产生log
> Merge remote-tracking branch 'origin/master'
这时rebase就是更好的选择,git pull --rebase
, git 会先从remote获取最新的代码,然后在push本地的改动,不会有merge产生.
发现刚刚提交的Commit有一个Typo或者其它很小的改动,Well,当然可以提交个新的Commit, 然后log写上 “fix typo”.
当时其实应该这么做,
git commit --amend
这会把这一次的改动提交到上一个Commit中git add
git add
, 当时没有执行 git commit
git commit
用 git status
可以查看处在1, 2状态的文件
git reset --head {{some-commit-hash}}
返回到某一个Commit, 所有这个commit之后的改动都丢弃git reset {{some-commit-hash}}
返回到某一个commit,所有这个commit之后的改动都归到状态1, 没有staged,git reset --soft {{some-commit-hash}}
返回到某一个commit, 这个commit之后的改动都归到状态2最常用的一个可能是第一个, 放弃本地所有的改动
git reset --hard HEAD
git revert -n
取消之前的Commit
git l = git log --online --grath
等等等等