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 分支合并导致冲突