前提:大巴车分支为merge多个人分支的总和。
背景:大巴车发布的时候发生冲突,需要解决冲突,自己分支merge了大巴车的分支(埋下隐患),然后push remote自己分支。
隐患:如果他人对自己分支代码进行删除,重新push 大巴车分支依旧无修改 因为大巴车这段多余的代码是由我的分支进行提交的。
插曲:在merge完大巴车分支之后,我重新commi了一个包修改的提交。经过组内大哥们的题型才发现上面的隐患。
解决:自己分支reset 到merge之前的代码。使用cherry-pick将包修改提交拉取。大巴车分支重新merge。(为什么大巴车重新merge而不是reset,是因为我 push-f 将大巴车之前的merge都覆盖了)
规范:大巴车解决分支冲突步骤 1. git chekout bus/xxxx 2.git merge yourBranch 3 .git push remote
工具:
推荐一款mac上的beyondCompare,kaleidoscope。
Kaleidoscope是一款Mac上非常强大的文件图片和文本比较工具,支持任意文本文档和图像文件,能够非常快速和准确的查找出不同之处和合并不同的文档或图片,其强大的合并和解决冲突功能非常好用,并且支持和Subversion、Git、Mercurial等版本管理工具的整合。
跟git的结合需要一些简单的配置。
- 安装完kaleidoscope后
- 然后安装ksdiff命令行
- 安装完后选择git选项框,然后将kaleidoscope设置为默认的git diff和merge工具
安装完成。 之后在命令行用git difftool 代替git diff。比如要跟本地master进行diff,请使用git difftool master。然后你会发现再也不是枯燥的命令行里的+++ ---了,仿佛从二次元到了三次元~~。
常用的命令
- 代码推拉:git pull/push/fetch [remote] [branch]
- 代码比对:git diff commit1 commit2 [-- stat]
- 日志查找:git log [-p] [--author=xxx] [filename]
- 分支合并:git merge branch [--squash]
- 代码提交:git commit -m [-n] [--author=other]
- 代码重置:git reset hash [--hard]
- 代码搜索:git grep [-l] keyword [filename]
常用的tag:
type用于说明 commit 的类别,只允许使用下面7个标识。
- feat: 新功能(feature)
- fix:bug修复
- merge: 合并分支
- docs:文档修改
- style:缩紧,空格,换行,大小写等调整(不影响代码运行的变动)
- refactor:代码重构(代码结构调整,不影响功能)
- perf:性能优化(improve performance)
- test:增加测试
- chore:系统构建,打包
其他的一些技巧
git stash :多分支开发
git stash list:查看stash
git stash pop:弹出第一个
git stash drop stash@{0} :移除stash
git stash save "xxx" 带名字
git stash show -p xxx:查看diff不同
cherry-pick:reset配合使用或者拉取别人提交的某个commit
git cherry-pick 拉取别人的commit
www.ruanyifeng.com/blog/2020/0…
idea reset 之前可以记录下分支的hash reset之后 可以cherry pick 之前的提交 gitkraken 好处是图形化界面
缩写快捷键:(zsh命令)
g :git 其他命令还是敲一下算了
恢复代码:
只要能拿到hash就能进行恢复
git reflog
强制删除 分支之后可以通过 git reset hash --hard进行恢复
git stash clear 也可以进行恢复