rebase 解决冲突流程及git项目使用总结
git项目使用流程
一、基本流程
拉取最新代码——创建分支——提交分支至云端——分支代码完成后查看状态——将代码添加至暂存区——本地提交代码——推送至云端——切换为主分支——合并子分支代码——推送至云端——删除分支
二、执行命令
-
在主分支拉取最新代码:
git pull
-
基于主分支创建并且切换到新的子分支(没有这个分支就会新建):
git checkout -b 分支名
-
先把新的子分支推送到云端仓库,因为此时云端没有这个分支。如果有则忽略此步骤:
git push -u origin 分支名
-
然后创建对应文件,开始写代码
-
将修改过的文件全部添加到暂存区:
git add .
-
将代码保存到本地仓库:
git commit -m “完成了分类功能开发”
-
将本地代码推送到云端:
git push
-
切换到主分支:
git checkout master
-
拉取最新代码:
git pull
-
如果上一步骤存在更新,则进行变基操作即处理冲突(第四步),如果没有,则进行下一步
-
切换到主分支,合并代码:
git merge 分支名
-
把主分支推送到云端:
git push
-
删除本地的分支:
git branch -d 分支名
-
删除云端的分支:
git push origin --delete 分支名
三、常用git命令
初始化一个git仓库: git init
查看状态: git status
添加所有修改: git add -A
提交修改: git commit -m '提交说明'
查看提交历史,按字母 q(uit)退出: git log
查看没add的不同: git diff(erence)
查看本地分支: git branch
查看所有分支: git branch -a
删除未合并代码分支: git branch -D 分支名
拉取本地不存在的远程分支: git checkout -b 本地分支名 origin/远程分支名
与远程厂库关联: git remote add origin 地址
四、解决冲突
pre-1: 在基准分支(主分支)上接取最新的代码 git pull
pre-2: 切换到自己的分支上 git checkout 分支名
git rebase dev
- 解决冲突(需要和团队之间商量)
git add -A
git rebase --continue
- 重复2,3,4
- 至到reabase完成,会出现applying字样
- 有可能本地自己的分支和远程分支还有冲突,这时候需要
git pull origin qh/home
之后,解决冲突再push即可
五、git的语义化commit
chore: add Oyster build script(其他修改, 比如构建流程, 依赖管理)
docs: explain hat wobble(更改文档)
feat: add beta sequence(新增了一个功能)
fix: remove broken confirmation message(修复了一个 bug)
refactor: share logic between 4d3d3d3 and flarhgunnstow(代码重构,既不修复错误也不添加功能)
style: convert tabs to spaces(不影响代码含义的变化(空白、格式化、缺少分号等,注意不是 css 修改))
test: ensure Tayne retains clothing(测试用例修改)
六、 git merge和git rebase的区别
merge
- marge 特点:⾃动创建⼀个新的commit 如果合并的时候遇到冲突,仅需要修改后重新
- commit 优点:记录了真实的commit情况,包括每个分⽀的详情
- 缺点:因为每次merge会⾃动产⽣⼀个merge commit,所以在使⽤⼀些git 的GUI tools,特别是commit⽐较频繁 时,看到分⽀很杂乱。
rebase
- rebase 特点:会合并之前的commit历史
- 优点:得到更简洁的项⽬历史,去掉了merge commit
- 缺点:如果合并出现代码问题不容易定位,因为re-write了history
总结: 因此,当需要保留详细的合并信息的时候建议使⽤git merge,特别是需要将分⽀合并进⼊master分⽀时;当发现⾃⼰修 改某个功能时,频繁进⾏了git commit提交时,发现其实过多的提交信息没有必要时,可以尝试git rebase.