上车前只熟悉了add, commit,然后就碰上了 一不小心玩坏了。。。mark一下
1. git reflog 查看之前的所有记录,git log不能查看已删除的commit
3146d6f (HEAD -> master) HEAD@{0}: reset: moving to 3146d6f17082abcadb2e254616f603ef4ecdc4d7
fd7d8a5 (origin/master, origin/HEAD) HEAD@{1}: commit: test2
3146d6f (HEAD -> master) HEAD@{2}: commit: test1
1) 删除commit2的test后,git reflog仍可查看记录,并通过 git reset --hard fd7d8a5 回退
2) rebase造成提交丢失,可reflog找到commit,在该节点创建分支
2. detached HEAD
git reset 到某次的提交时,HEAD指向了未知的分支
detached状态下的提交,没有分支指针指向
3. 回退代码 git reset / git revert
- reset 修改本地分支HEAD的位置,再push远端,HEAD指针后退(如果和老的分支merge时,删掉的commit还会再出现)
- revert 产生一次新的commit将上一commit内容回滚,HEAD指针依然前移
4. git stash
git stash save -a/-u, -a 所有文件,包含所有文件,.gitignore忽略的文件;建议-u
pop 会从stash 列表删除该内容
apply 不会删除
git stash show