本文模拟不同开发者协同开发,分别以计算器加减乘除模块来代替
目录结构:
创建文件以及提交到仓库的命令不过多阐述,在使用教程(一)已详细说明
Step1:创建新分支
创建加法分支 git/add
git branch git/add #创建加法分支
git checkout git/add #切换到加法分支
或者,创建的时候,直接切换
git checout -b git/add
提交新的模块 add(),命令如下
创建减法分支
提交sub模块
git checkout -b git/sub #创建并切换sub分支
git add main.go calcTest/sub.go
git commit -m "this is commit by user sub" main.go calcTest/sub.go
Step2:合并分支 git merge
#1.切换到主分支
git checkout master #切换主分支
#2.合并分支 add
git merge git/add
#3.合并分支 sub
git merge git/sub
查看分支:git log
Step3 合并分支命令2 :rebase
当多个分支合并时,尽量使用rebase命令,
- 可以使得提交log按时间线排列
- 减少Merge branch “duke/multi”等log日志出现,更加简洁
操作流程:
- git rebase duke/multi
- 如果发生冲突,需要手动解决(同merge冲突)
- 如果不想提交,可以使用git rebase ----abort
- 如果想提交,解决冲突后,使用git rebase --continue即可,不需要使用git commit
创建分支和提交文件同上。创建mul分支和div分支
git checkout -b git/mul
git add main.go calcTest/mul.go
git commit -m "this is commit by user mul" main.go calcTest/mul.go
git checkout -b git/div
git add main.go calcTest/div.go
git commit -m "this is commit by uesr div" main.go calcTest/div.go
一般情况下rebase都是会有冲突的,详细查看冲突可以用命令git status然后就会显示哪个文件有冲突,然后打开有冲突的哪个文件,会发现有一些“<<<<<<<”, “=======”, “>>>>>>>” 这样的符号。
<<<<<<< #表示冲突代码开始
======= #表示test与master冲突代码分隔符
>>>>>>> #表示冲突代码的结束
Step4:暂存命令 stash
当开发过程中,还没有办法编译的时候,可能临时出现一个需要紧急处理的bug:
- 当前代码不能提交
- bug还需要创建新的分支解决。
需要,将当前分支的代码暂存起来,去解决bug,解决之后,再唤醒之前的存放代码,继续开发。
git stash命令可以帮忙解决
git stash
当前分支的所有暂存区的数据会被临时存储起来,分支就像没有修改过一样。
可以基于分支解决bug,当bug解决后使用git stash pop 唤醒暂存数据
git stash pop
git stash list #查看当前stash数据
如果确定不要的stash,可以使用clear清理掉(慎用)
git stash clear
Step5:版本回退 reset
1. git reset <哈希值>
每一个提交都会有一个哈希值,使用git log可以查看
此时会将版本回退到指定哈希版本,但是回退中间提交的代码会保留下来
2. git reset --hard <哈希值>
执行此命令,此时会直接会推到指定版本,但是中间提交的记录,会之前删除掉
3.查看该分支的所有操作 git reflog