Open techiall opened 5 years ago
记录一下最近使用 Git 踩过的坑。
Git
将项目 clone 下来之后就直接在 master 分支上操作,忘记切换到 dev 分支去了,gg,还提交了几个分支。 拯救方法如下。
将项目 clone 下来之后就直接在 master 分支上操作,忘记切换到 dev 分支去了,gg,还提交了几个分支。
拯救方法如下。
git cherry-pick af2279b
git checkout dev
git cherry-pick af2279b 6a498ec
git cherry-pick
master
dev
--no-ff指的是强行关闭fast-forward方式。 fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。 总结: --no-ff:不使用fast-forward方式合并,保留分支的commit历史 --squash:使用squash方式合并,把多次分支commit历史压缩为一次 https://segmentfault.com/q/1010000002477106
--no-ff指的是强行关闭fast-forward方式。
--no-ff
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit
git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。
git merge --squash
--squash
总结: --no-ff:不使用fast-forward方式合并,保留分支的commit历史 --squash:使用squash方式合并,把多次分支commit历史压缩为一次
https://segmentfault.com/q/1010000002477106
我感觉别人已经说的很好了,就不重复造轮子了。
记录一下最近使用
Git
踩过的坑。将 commit 提交到错误分支
git cherry-pick af2279b
git checkout dev
git cherry-pick af2279b 6a498ec
git cherry-pick
后面可以带多个 commit,这样子就可以把提交到master
的错误 commit,移到dev
分支。参考链接
git merge --no-ff 和 git merge --squash 区别
我感觉别人已经说的很好了,就不重复造轮子了。