使用场景:公司项目代码在dev分支上,然后每个人从dev上拉出自己的分支进行开发。
碰到问题:但是dev要定时的更新至最新版本,如果某个人拉出后只在自己本地add且commit,那么就因为文件冲突push不了。
解决办法:
- git branch 切换到自己工作分支
- git status 查看当前工作状态
- git stash 如果当前状态下有未完成的任务且不想提交的话,先将其压如临时栈中,保持工作区干净。
- git fetch 从远程仓库更新代码到本地
- git rebase origin/dev(在自己分支上合并,当前分支:git branch ccdev)
- git mergetool (如果有冲突的话)进行冲突合并,没有则忽略
- git rebase --continue 继续解决,直到没有冲突
- git log 查看log信息,此时应该已经将别人的log已经同步
- git push origin ccdev : ccdev 提交到远程仓库(或者git push -f origin ccdev : ccdev ),冒号后代表远程的分支,若分支名为dev,则git push origin ccdev : dev
- git stash pop 回复之前栈中文件
- gitk 查看分支信息
这样做相比merge的好处是,将每次本地提交作为一个patch打到了远程,可以清晰看到每次的提交备注和记录。
如果在本地commit一次,但是发现还有东西忘改了,如果再commit一次就会再次产生记录,而这次的修改只是上次部分小修改,想追加到上次的提交中,那么使用: git commit --amend,前提是上一次的本地提交并没有push到远程去。