GIT高级篇(方便查找)

==1、选择性合并cherry-pick==

比如本地有两个分支:master 和 dev

然后在dev中进行了多次对修改和提交,最终要取中间的一次提交合并到master上

先在dev中使用git log查到对应提交的commit id,然后再到master分支上进行合并
`git cherry-pick 481ca5706cd4679b3fa321b13e07e2996b40553f`
# 注意:这种合并,只会对合并的过来的这个commit里面修改的文件生效

==2、版本回退reset(删除)==

没有--hard参数

# 已经add,但是没有commit
1、`git reset HEAD`             取消add操作,回退到add操作之前到状态
2、`git checkout --`      取消文件中的本次修改
                                以上两步即可恢复到初始状态
                              
# 已经commit或已经多次commit
1、`git reset HEAD^`            取消本次commit操作,回退到commit操作之前的状态
                                如果要回退到之前到某个版本,使用`git reset 版本号`
                                这种情况下,回退到的版本之后的提交都会消失(被删除了,找不回来)
2、`git checkout --`      取消文件中的本次修改      
                                以上两步即可恢复到初始状态

有--hard参数

# 在有--hard参数的情况下,不区分add 和 commit,都可以直接回退
`git reset --hard HEAD`
或者 
`git reset --hard 版本号`

# 这种情况下都是直接回退干净,工作区都直接清理了,慎用

如果是对历史的某个版本进行的回退,那么会导致本地版本比远程版本落后,

所以再次提交的时候需要强制提交,以达到覆盖的目的。

`git push -f orgin master`

==3、版本回退revert(反作)==

git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
1、`git revert -n 版本二的commit ID`     这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。
2、`git commit -m "revert xxx"`

你可能感兴趣的:(GIT高级篇(方便查找))