git reset (不写使用默认参数mixed)
-
--hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
-
--soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
-
--mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
git rebase
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
总结:不管当前分支是否只有自己在使用,在rebase之后,需要强制推送到远端分支时,使用 git push --force-with-lease origin feature 参数来保证分支安全
git checkout [HEAD^, commitId]
移动HEAD指针到指定的提交版本。
HEAD
是指当前的快照,这个命令主要配合reset
的--hard
,--mixed
和--solf
三个参数对对本次的修改进行处理HEAD~1
指回退一个快照,可以简写为HEAD~
HEAD~2
指回退两个快照