上車前只熟悉了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