Git
- Remote repository
- local repository
- workspace
GitFlow
- branch: master & develop
- 主分支 master: 只跟踪已发布的代码
- 开发分支 develop: 包含 feature 功能分支和 release 预发分支
- 补丁分支 hotfix: 紧急修复
merge vs rebase
- merge: 自动创建一个新的 commit, 记录了真实的 commit 记录
- rebase: 会合并之前的 commit 历史, 得到更简洁的项目历史 merging vs rebasing
git reset , git revert , git checkout 有什么区别
git 仓库的三个组成部分:
- working directory, 工作区
- 在 git 管理下的正常目录都算是工作区,我们平时的编辑工作都是在工作区完成
- index/stage, 暂存区
- 临时区域。里面存放将要提交文件的快照
- history, 历史记录区
- git commit 后的记录区
working directory
-> [git add] -> stage
-> [commit] -> history
history
-> [git reset -- files] -> stage
-> [git checkout -- files] -> working directory
git reset 的三种模式
从 history 恢复历史版本代码到当前stage时, 需先对当前工作区和暂存区的文件改动进行处理, 这些改动是需要保留还是清空.
git reset --hard, 重置工作区和暂存区
git reset --soft, 保留工作区和暂存区的改动, 并把重置带来的新差异放入暂存区
git reset --mixed, 保留工作目录,并且清空暂存区. 工作目录的修改、暂存区的内容以及由 reset 所导致的新的文件差异,都会被放进工作目录。简而言之,就是「把所有差异都混合(mixed)放在工作目录中」
git cherry-pick [commitID] 将某个 commit 合并到HEAD
git stash
git stash save "save msg" //存储 , msg 方便查找
git stash list //列举出所有的存储
git stash show stash@{1} (默认是 show stash@{0}) //显示指定存储作了哪些修改
git stash show [stash@{1}] -p //默认是显示第一个存储即 stash@{0} , 相比于上面,提供更详细的修改
git stash apply [stash@{1}] //默认应用第一个存储
git stash pop [stash@{1}] //应用并将缓存堆栈中的对应stash删除
git stash drop stash@{$num} //删除对应的stash@{$num}存储,从列表中删除这个存储
git stash clear //清空存储
//增save 删pop/drop/clear 改apply 查show/show -p/list