git 四个区域及其关系

git reset
reset 是重置的意思,即重置head的指针。head默认指向最新的commit,reset可以使head指向之前提交的历史。
reset 有四个参数:

前提步骤:
- 工作区原始状态
- 工作区新增一个文件 git.test
- git add 同步到暂存区
- git commit -m “第一次提交”
- 新增内容aaaa
- git commit -m “第二次提交”
- 新增内容bbbb
- git commit -m “第3次提交”
- 新增内容cccccc
- git commit -m “第四次提交”

选择reset到第一次提交的位置


soft
将后面的提交都放在暂存区和工作区

mixed
将之前提交的内容都放在工作区。此时暂存区是没有的。由于第一次后面的操作没有add操作,所以效果和soft一样。
若reset到第一次提交之前的一次提交,则出现

需要重新add 和commit
hard
清空之后的提交,暂存区和工作区都没有。
keep
不常用
git revert
撤销某次提交,撤销也是一种提交。之后和之前的提交不受影响。可以撤销 某次撤销操作。
git rebase
rebase 即变基。
rebase会把当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像从公共分支又重新拉出来这个分支一样。
举例: 如果从 master(A-B) 拉个feature分支出来,然后提交了几个 commit(A-B-C-D),这个时候刚好有人把他开发的东西合并到 master(A-B-E) ,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面(A-B-E-C2-D2)。
注意:C不等于C2 D不等于D2。提交历史简洁
高级用法
pick-更改提交顺序 或者删除某次
record使用该commit并编辑(提交内容不变)
edit-修改某次提交 或者在多次提交之前插入一次提交
squash合并提交
git merge
merge 合并。
merge 会把a分支最新的提交和b分支最新的提交合并成一个新的提交。‘
之前的提交历史也在。
2736

被折叠的 条评论
为什么被折叠?



