reset
reset命令把当前分支指向另一个位置,并且相应的变动工作目录和索引。如下图,执行git reset HEAD~3后,当前分支相当于回滚了3个提交点,由ed489回到了b325c:
reset有3种常用的模式:
–soft,只改变提交点,暂存区和工作目录的内容都不改变
–mixed,改变提交点,同时改变暂存区的内容。这是默认的回滚方式
–hard,暂存区、工作目录的内容都会被修改到与提交点完全一致的状态
diff
我们在commit、merge、rebase、打patch之前,通常都需要看看这次提交都干了些什么,于是diff命令派上用场了:
来比较下上图中5种不同的diff方式:
比较不同的提交点之间的异同,用git diff 提交点1 提交点2
比较当前分支与其他分支的异同,用git diff 其他分支名称
在当前分支内部进行比较,比较新提交点与当前工作目录,用git diff HEAD
在当前分支内部进行比较,比较新提交点与暂存区的内容,用git diff --cached
在当前分支内部进行比较,比较暂存区与当前工作目录,用git diff
看起来有点复杂?是的,记不住的时候看看这些图吧。