协同开发、冲突的出现与解决、分支合并出现冲突、线上合并分支、pycharm操作git、git面试题
协同开发
第一步:你到公司(gitee,gitlab),注册账号
第二步:把你的公钥配置在你的gitee,gitlab账号上
第三步:把你的邮箱发给项目的管理者(你老大)
第四步:他把你账号添加为开发者---》你就可以读写项目了
第五步:你要把公司项目拉到本地
-方式一:直接下载zip
-方式二:在命令行中执行
git clone git@gitee.com:liuqingzheng/luffyapi.git
第六步:改代码,提交 (ssh,https提交)
git add .
git commit -m '注释'
在提交之前一定要拉一下代码
git pull origin master # 可能会有冲突
git push origin master
冲突出现的原因
1.分支合并
2.多人在同一分支开发
冲突解决
'''多人在同一分支开发出现冲突'''
print('lqz')
<<<<<<< HEAD
=======
print('sss')
>>>>>>> 732f1921741fa4d6153d1c4b7eb0302a509838d9
'''先把冲突的地方删除,剩下的代码分析,需要留哪些,到底是留我的代码,还是留同事的代码(删同事的,跟同事说一声),如果删自己的,不用说'''
然后进行:
git add .
git commit -m ''
git push origin master
分支合并出现冲突
git branch dev 创建分支dev
git branch bug 创建分支bug
git checkout bug 切换分支
'''修改代码(dev分支)'''
git add .
git commit -m '注释'
'''切换回主'''
git checkout master
'''合并(现在没有问题,合并成)'''
git merge dev
'''切到bug分支'''
git checkout bug
'''改同一行代码'''
git add .
git commit -m '注释'
'''切换回主'''
git checkout master
'''合并(现在有冲突)--->解决冲突 看具体是改错了 还是改重复了 留下有用的'''
git merge bug
git add .
git commit -m '注释'
线上合并分支
1)远程建立分支:gitee上点击操作
2)把远程分支拉到本地
git pull origin bug # 已经拉下来了,但是还看不到,需要切换过去
git checkout bug # 来到了本地dev分支
3)本地bug分支增加代码
4)本地bug提交到远端
5)远程分支合并:把dev合并到master
你提交pull request 的申请(pr,mr)---》跟你没关系了--->[合进去了,没有合进去]
你领导就能看到这个pr,审核通过,点合并
到此 dev分支就合并进master分支了
补充:命令git stash
有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash 命令。
贮藏(stash)会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上, 而你可以在任何时候重新应用这些改动(甚至在不同的分支上)。From Git Book。
以前未接触到stash时的做法是使用git add和git commit 来暂存,这样做的弊端是会出现很多多余的commit记录。
合并之后的效果
pycharm操作git
clone
git add
git commit
git push
git pull
git branch操作
查看git操作记录 git log
本地代码跟版本库比较
git面试题
你们公司分支方案是什么样的?
master,dev,bug 三条分支:
master主要用来发布版本,写好了某个版本的代码合并进去,不直接在master上开发
dev:开发分支,项目的开发者,都在dev分支上开发
bug:bug分支,用来修改bug,发布小版本
使用git开发,遇到过冲突吗?
遇到过
多人在dev分支开发,出现的冲突
分支合并出现的冲突
把代码拉下来,直接解决冲突,保留我的代码,保留同事的代码
你知道git 变基?
分支合并:dev分支合并到master分支
merge或rebase合并
把多次提交合并成一个
git pull 与 git fetch
pull 和 fetch都是拉取代码
fetch:拉下来后先不合并由你决定后再看是合不合并,网络上大家都说fetch更安全
pull = fetch+合并
你知道git flow吗?
git 工作流,它是一个别人提出的分支方案
我们没有用,我们用的就是master+dev+bug分支方案
使用git 的操作流程
如果是普通开发者:git clone下来
写代码,git add ., git commit, git pull, git push
什么是gitee,github:pr,gitlab:mr?
不同叫法:提交分支合并的请求