Git常用操作
1.未push到远端的需要撤销本地commit
a.先reset head
这个操作可以回滚你最近一次的提交;
Reset Type 有三种:
Mixed 默认方式,只保留源码,回退 commit 和 index 信息
Soft 回退到某个版本,只回退了 commit 的信息,之前写的代码还是保留的,不会
恢复到 index file 一级。如果还要提交,直接 commit
Hard 彻底回退,本地源码也会变成上一个版本内容,不保留之前 commit 的代码
To Commit 是回滚到哪个版本,例如,HEAD 为当前版本,HEAD^ 为上一个版本;
使用 git reset 回滚一般使用默认的 mixed 或者粗暴的 hard 方式;
注意:或者删除本地分支,那么之前代码都没有了
2.已经push到远端需要撤销刚刚的push
a. 选择到需要回退的分支,然后点 reset current branch to here 选择hard模式
--hard
删除工作空间的改动代码,撤销commit且撤销add
这个操作可以使本地分支回滚到当前圈住的commit,之前红框之前的操作(包含
commit,merge)都会被回滚
b.进入项目的工作空间,使用命令将当前项目push到远端
git push --force origin 分支名
3.合并代码
1.如果是A分支的代码要合到B分支
a.先从B分支拉出一个新分支C,然后将A新增的部分功能cherry pick到C
b.如果有多次提交,那么 需要从功能的初次提交一直cherry pick到功能的结束;
中间如果有吃冲突,那么解决冲突。
c.功能合并完成,需要将C分支的代码再合并到B,此时先将B分支的代码merge
into current C(B合到C),再将C merge into current B(C合到B);
4.cherry pick 与merge into区别:
cherry pick:只是将选中的那次提交中的文件(类)带过来
merge into:(常用于基于同一分支的操作):
比如主分支是dev,最新版本是01。然后小明基于此,搞了个feature 分支A
然后在上面多次提交,完成功能迭代开发,如A1 ---> A2 ---> A3
之后 merge A branch into dev,最后 dev 分支的历史log就变成: Dev01 ---> A1 ---> A2 ---> A3
5.stash作用:
一般A分支正在写代码,需要去B分支解决问题,但此时A切到B会把新代码带过
去,所以先将A分支的代码暂存起来,可以创建一个stash,等B分支的问题解决,
我们再回到A分支unstash一下,再把之前新写的代码还原了