1. 协同开发
# 多人合作开发一个项目---》多人公用一个远程仓库
1. 创建工作区 git init
2. 设置忽略文件.gitignore .idea .DS_Store /script /logs/*.log __pycache__
3. git add . # 把工作区发生变化的提交到暂存区
4. git commit -m '第一次提交,写完了首页功能' # 把暂存区所有的数据提交到版本库
5. 远程新建一个远程仓库(空) 创建一个origin git remote add origin 远程仓库地址 6. 把本地仓库代码推送到远程仓库 # -u表示缓存,以后只需要敲 git push 代指git push origin master git push origin master 已经配了ssh,不需要任何认证 ---------------以上操作可能是领导做好了----------------- 如果我是项目的拥有者,把新来的人加成项目的协同开发者。 如果是开发者: 1. 克隆代码 git clone 仓库地址 2. 开发新功能 -s1.py # 在pycharm中新建文件,点击add后,以后只要是新建,就直接提到暂存区了,显示为绿色 -git add . -git commit -m '新增了s1.py' # 推送远端: -git push origin master # 1 输入用户名密码(走https协议时) 2 对仓库有写权限(如果没有让领导给打开) -(推之前注意!!) # 在提交之前一定要先拉一下代码,保证本地版本库跟远程保持一致,是最新的 -git pull origin master(以后只要提交代码,都要拉一下,没事就拉一下,保证出现冲突概率小) -git push origin master
2. 线上bug分支解决方案
# 主功能以上线,现在服务器运行版本是v1.1 # 开发着新功能--》dev分支开发 # 忽然发现有bug---》新建一个bug分支(基于master分支建立bug分支) -改bug -把变更提交到bug分支---》测试---》合并到master--》v1.1.1 # 新功能开发完了---》要合并到master分支---》v1.2 # dev分支和master分支合并,可能会有冲突,也可能没有
2.1 解决bug,开发新功能,不出冲突的情况
git branch dev # 创建dev分支 git checkout dev # 本地建立dev分支后,切换到了dev分支--远程没有 # 可以远程建立分支,同步到本地 # 本地建分支,同步到远程 git push origin dev # 把本地dev分支推到远程 # 开发新功能 vi ss1.py git add . git commit -m 'dev开发了用户功能' git push origin dev # 把本地dev的更改提交到远程dev # 继续开发新功能 vi ss1.py # 加入了一行 git add . git commit -m 'dev开发了订单' git push origin dev # 把本地dev的更改提交到远程dev # 测试发现线上系统有bug,去修复bug # 基于master建一个bug分支 git checkout master # 切换到master分支 git branch bug # 创建bug分支 git checkout bug # 切换到bug分支 vi ss2.py # 写点代码 git add . git commit -m 'bug分支修复了' # 本地bug合并到master git checkout master git merge bug # 合并分支,把本地bug合并到本地master。不会出冲突 git push origin master # 把本地master推送到远程master,最新v1.11版本发布 # 切回到dev继续开发 git checkout dev # 又增加了代码 ... # 把dev合并到master git checkout master # 切换到master分支 git merge dev # 合并分支,把本地dev合并到本地master。不会冲突 git push origin master # 把本地master推送到远程master,不会冲突,最新v1.2版本发布
2.2 解决bug,开发新功能,出冲突的情况
# 把所有分支都删除 git branch -d dev # 删掉本地dev分支(远端的dev没有删) git branch -d bug # 删掉本地bug分支(远端的bug没有删) # 创建dev分支 git branch dev git checkout dev vi common.py # 建一个common.py文件,写入代码后保存 git add . git commit -m 'dev增加了common.py' # 线上出bug,创建bug分支 git checkout master # 要先切到master分支 git branch bug git checkout bug vi common.py # 建一个common.py文件,写入代码后保存 git add . git commit -m 'bug分支增加了common.py' # 把bug更改合并到master上 git checkout master # 先切到master再合并 git merge bug # 合并分支。不会冲突。合并后master分支上就有了一个common # 把dev分支合并到master(冲突) git merge dev # 现在出冲突。 # 出冲突后,就解决冲突 (该删删,该留留) 因为master上有了一个common,现在dev又有一个common, 合上去的时候,如果不是同一个功能,
就把<<<<<<<、=======、>>>>>>>删除,把代码都留着。要是写的是同一个功能,就看删掉谁的代码。
# 提交到本地 git add . git commit -m '解决冲突' # 把本地master推到远程 git push origin master
3. 冲突解决
3.1 多人在同一分支协同开发导致冲突
# 1 多人在同一分支协同开发导致冲突 -张三在s1.py第二行增加了一句 -print('hello world') -提交到远程仓库 -李四在本地,没有拉代码,在s1.py第二行增加了一句 -print('hello world') -从远程仓库拉取代码,就会出现冲突 <<<<<<< HEAD # 开始,下面是你的代码 print('aaasdasd') ======= # 你的代码结束,下面是别人代码 print('666') >>>>>>> 2e8da99c75814f197f7909d1cf7816adfc4ccd81 # 别人代码结束,版本号 -如果冲突是同一个功能,跟同事商量,保留某一个人的 -如果冲突不是同一个功能,保留俩人代码 -git add . -git commit -m '解决冲突' -git pull origin master #正常来讲不会有冲突(但也有存在冲突问题) -git push origin master # 注意不要没解决冲突就提交!
3.2 分支合并导致冲突
# 操作就是2.2的操作标签:协同,dev,git,master,冲突,bug,分支 From: https://www.cnblogs.com/tully/p/16908797.html