1. git diff
显示工作区、暂存区、历史区之间的不同之处
git diff 分支名 //工作区和历史区比较
git diff --cached //暂存区和历史区比较
git diff //工作区和暂存区比较(不带任何选项的情况下,
//就是显示暂存区与工作区之间的不同之处)
git diff master //工作区和历史区去比
2. 撤销
没有提交到暂存区的时候
git checkout . //从暂存区中将工作区内容覆盖掉
git checkout 文件名 //覆盖某个文件
cat 1.txt //查看
如果提交到暂存区,那只能在暂存区里往上回滚一次,(只能往上回滚一次),然后 用git checkout . , 将工作区内容覆盖。
git add .
git reset HEAD 文件名 //在暂存区,往上回滚一次。也就是把这一次的提交移除暂存区
git checkout . //覆盖工作区所有文件
history > 2.txt //将提交记录写到2.txt里面
已经被提交到历史区了,只能在历史区里,往上找其他版本,先回滚到其他版本(靠的是版本号),并且还能回来。
git commit -m 'third' //文件需要提交过一次,版本号"22b3cb5"
git reset --hard e1ecf986 //--hard是坚决回滚。 现在是回滚到"e1ecf986"这个版本
git reflog //可以打印所有的日志(里面可以知道所有版本号)
git reset --hard 22b3cb5 //又切回来了
git reset --hard 版本号 //回滚历史版本
git reset --hard HEAD^ //往上走一次
3. 分支
假如有甲乙两人,甲一直在master主干上写代码,乙写的代码,也需要合并到master主干上去。
git branch // 查看目前有几个分支,*代表当前就在这个分支上
git branch dev // 创建dev分支
git checkout dev // 切到dev分支上
git checkout master // 再回到master分支上
git branch -D dev // 删除dev分支,
// -D是delete,删除分支时当前用户不能在当前要删除的分支上
在dev分支下提交
git checkout dev
git add .
git reset HEAD . // 在暂存区回到上一级
git commit -m 'add 1.js' // 和master就没关系了。 只有dev分支上有 1.js
怎么合并
git checkout master
git merge dev // 把dev分支合并到master
git merge 分支名 // 要合谁,就写哪个分支名
总结:先创建主干,在主干的基础上添加一个分支,在分支上进行提交,切换到主干合并分支。
4. 暂存(不常用)
如果,分支有更改不能直接切换,可以提交更改或者暂存更改,
git stash // 暂存文件
git stash pop // 还原暂存的内容