1.git 命令
git clone
git commit
git push
git pull

2.提交四部曲
本地修改文件 工作区      本地
Add增加文件到暂存区       本地
Commit提交修改文件到本地版本库 本地
push提交本地库的差异到远程库   远程

3.分支原理:

4.实战

基于develop创建myfeature分支
git checkout -b myfeature develop

合并一个功能到develop分支
git checkout develop
git merge --no-ff myfeature

删除myfeature分支
git branch -d myfeature

把开发分支推到主分支
git push origin develop

Release 分支

Release分支可能从develop分支分离而来,但是一定要合并到develop和master分支上,它的习惯命名方式为:release-*。

git checkout master

git merge --no-ff release-1.2

git tag -a 1.2

git branch -d release-1.2


一、初始化
 1.组长A已经在github上创建了一个项目;
 2.组员B在github上创建fork私有库(规范:系统名称+"-"+工号,例如arusa-56104);
 3.组员B将代码copy到本地库;
二、开发代码
 4.组员B在fork私有库中创建topic功能分支myfeature(规范:topic+"/"+版本号,例如:topic/v1.0);
 5.组员B在本地切换到topic功能分支myfeature;
 6.组员B修改代码,提交四部曲(edit、add、commit、push);
 7.组员B把fork库修改的opic分支提交到集中库master分支,Pull Reques操作,maybe冲突
三、转测试
 8.组长A在集中库创建release分支,集中库release分支自动同步到fork库release分支
四、修改bug
 9.组员B在本地切换到release分支
 10.组员B修改bug,提交四部曲(edit、add、commit、push);
 11.组员B把fork库release分支提交到集中库release分支,Pull Request操作,maybe冲突
五、提交入基线
 12.组长A把集中库release分支提交到集中库production分支,Pull Request操作,maybe冲突
六、回家
 13.组长A把集中库release分支提交到集中库master分支
七、应急预案:
 14.组长A创建hotfix热处理分支,应对特殊情况,集中库会自动同步到fork私有库;
 15.组员B本地切换到hotfix分支;
 16.组员B处理应急需求,修改代码,提交四部曲(edit、add、commit、push);
 17.组员B把fork库hotfix分支提交到集中库hotfix分支,Pull Request操作,maybe冲突
 18.组长A把集中库hotfix分支提交到集中库production分支,Pull Request操作,maybe冲突
 19.组长A把集中库hotfix分支提交到集中库master分支,Pull Request操作,maybe冲突
注意:当完成一些功能开发的工作后,需要清除不用的分支,比如在步骤7后会将myfeature删除


正常版本开发
初始化:
 4.1 创建FORK私有库(规范:系统名称+"-"+工号,例如arusa-56104)
 4.2 clone创建本地库
研发:
 4.3 fork库中创建topick分支(规范:topic+"/"+版本号,例如:topic/v1.0)
 4.4 本地切换到topic分支
 4.5 提交四部曲(edit、add、commit、push)
 4.6 PR(fork库topic分支→集中库master分支)
转测:
 4.7 本地创建release分支
改BUG:
 4.8 本地切换到release分支
 4.9 提交四部曲
 4.10 PR(fork库release分支→集中库release分支)
提交入基线:
 4.11 PR(集中库release分支→集中库production分支)
回家:
 4.12 PR(集中库release分支→集中库master分支)
 4.13 创建hotfix分支
    4.14 本地切换到hotfix分支
 4.15 提交四部曲
 4.16 PR(fork库hotfix分支→集中库hotfix分支)
    4.17 PR(集中库hotfix分支→集中库production分支)
 4.18 PR(集中库hotfix分支→集中库master分支)

5.冲突解决

发生冲突的场景: 
 在进行Pull Request操作时,组员B将fork库的功能分支topic分支提交到集中库的master分支时,可能会发生冲突。

发生冲突的原因:
 组员B对某文件进行了某项操作,可能组员C已经对该文件进行了操作,并且提交到了master上,而组员B本地的还是组员C未修改之前的文件。

解决冲突的基本原则:
 1.检查更新到本地;
   将远程Pull Request目标分支发布到fork私有库冲突所在的分支

 2.编辑冲突;
 3.提交到服务器