不太有条理,踩坑过程随时记录
使用笔记
workflow可以参看1
文件结构如图
git reset
和git revert
和git checkout
的区别
功能描述2
Command Scope Common use cases git reset Commit-level Discard commits in a private branch or throw away uncommited changes git reset File-level Unstage a file git checkout Commit-level Switch between branches or inspect old snapshots git checkout File-level Discard changes in the working directory git revert Commit-level Undo commits in a public branch git revert File-level (N/A) commit级别改动3
head | index | work dir | wd safe | |
---|---|---|---|---|
reset –soft | REF | NO | NO | YES |
reset | REF | YES | NO | YES |
reset –hard | REF | YES | YES | NO |
checkout | HEAD | YES | YES | YES |
- file Level级别改动3
head | index | work dir | wd safe | |
---|---|---|---|---|
reset | NO | YES | NO | YES |
checkout | NO | YES | YES | NO |
“head”一列中的“REF”表示该命令移动了HEAD指向的分支引用,而“HEAD”则表示只移动了HEAD自身。 特别注意 “wd safe” 一列,YES表示不会动你在work dir的修改,NO代表会动你在work dir的修改
- 关于
git rebase
[^5]- 用来合并多个commit为一个完整commit,保持整洁
- 用来将某一段commit粘贴到另一个分支上
- 注意:团队合作的话,不要rebase任何已经提交到公共仓库中的commit
Tips
- 实现一个功能,或者写完一个函数就提交一个commit,方便描述和管理
- 不要做任何备份(stash),你会在本地仓库建立几何倍数的本地仓库,直到自己无法维护为止4
- 善用
.gitignore
,眼不见心不烦
VS Code插件
Git History
可视化查看版本历史,方便比较和回退