git work flow

内部文档,仅供参考!谢绝转载!


git日常开发及BugFix基础流程(测试)


一。准备工作
1. 权限
使用linux的同事,请在shell中,使用windows的同事,请在cygwin模拟的shell执行
ssh-keygen -t rsa
这会在用户的.ssh目录下生成默认的密钥对,把公钥id_rsa.pub改成你在shell中的全名,一般是:
[email protected]
的形式,发给git库维护者。

2. 复制远程库
git clone git@服务器IP:项目.git

例:
git clone [email protected]:test.git

3. 配置git
用户信息
git config --global user.name yourmail
git config --global user.email yourmail

push配置,只push当前tracking分支。
熟悉push命令后,如果嫌--global影响太大,可以去掉此参数,只为clone出来的项目配置此选项,或手工加参数push指定分支
git config --global push.default tracking
(1.6.3以后才有此选项,版本若低于此,只能用git push+参数的形式)

4. 选定基础分支
git branch -r查看当前远程分支
git branch查看本地分支
一般新clone的库本地只有master分支,这个分支我们不使用。首先需要根据所以开发的基础远程分支,创建一本地分支。
a. 查看所要开发分支的远程分支
b. 根据远程分支创建本地分支,tracking远程分支

例:
a. git branch -r 查看当前远程分支
  origin/HEAD -> origin/master
  origin/linux
  origin/master
  origin/windows
b. 选择你需要在其基础上开发的远程分支,并创建本地分支,假设这里是origin/linux
执行: git branch --tracking linux origin/linux
linux是本地分支名,origin/linux是远程分支名,本地名字一般跟远程名后面一样

ab两步,建立了origin/linux-->linux的分支关系。

二。开发
方式A:
5. 创建个人开发临时分支
因为需要用到git的rebase特性,所以一般都开一临时分支来做实际的开发工作。主要为了做一备份,以便rebase出现问题时方便恢复。
临时分支基于前面创建的本地分支,tracking此本地分支。

例:
git branch --tracking linux_working_audiodriver linux
这样就建立好了origin/linux-->linux-->linux_working_audiodriver的分支关系。

6. 临时分支上修改及提交
本地修改和提交,都在临时分支上完成。之后将其push回tracking的本地分支。
a. checkout临时分支
b. 本地的所有修改,以及提交,都在临时分支完成

例:
a. git checkout linux_working_audiodriver
b. change sth & git add . & git commit等

7. push临时分支到本地分支
push临时分支的改动到本地分支(临时分支的tracking分支). 因为本地分支上没有任何修改,这里的push是直接能完成的(fast-forward)。

例:
git push . linux_working_audiodriver:linux
.表示本地库,后面的格式是 临时分支:本地分支
push前执行git branch确认当前确实在临时分支
如果安装1.6.3并配置了push.default,直接用git push即可。

方式B:
直接在本地分支上执行步骤6,也就是所有的改动和提交,都在本地分支上直接完成。

注意:
无论采用哪种方式,至此,一次开发或BugFix任务完成。方式B完成开发后,也可以用步骤5的方法做一临时分支备份。

三。更新及合并
8. 更新远程代码
执行git fetch,远程代码会被更新至远程分支。

9. 合并远程代码
远程代码的合并,暂时都采用rebase所tracking的远程分支的方式。并根据实际情况,解决好冲突。

例:
git rebase origin/linux(执行前请git branch确认当前确实在本地分支)

10. 清除临时分支
如果合并远程代码到本地分支成功,临时分支作为备份就失去作用了。用以下命令清除。
git branch -D [branch_name]
注意-D是强制删除,因为本地分支rebase以后,和临时分支之间失去了fast-forward特性,所以必须-D强删。开始新的开发任务的话,新建临时分支是更容易的事情。

例:
git branch -D linux_working_audiodriver

注意:
如果步骤9没有合并好,可以git reset本地分支到步骤7之前的状态。重新执行步骤7。

四。提交改动
这里的提交是从本地向远程库提交。
11. 提交
本地分支合并等处理好了的话,提交是非常简单的。直接在本地分支上push对应分支即可。如果被远程库reject,多半是远程库又有了更新。需要重新执行步骤三。

例:
git push origin linux:refs/heads/linux
origin是远程库,后面的格式是 本地分支:远程服务器分支引用, push前执行git branch确认当前确实在本地分支.
千万注意这里用远程服务器分支引用,而不是origin/linux这样的远程分支名,否则会提交到错误的分支上去。
如果安装1.6.3并配置了push.default,直接用git push即可。

你可能感兴趣的:(linux,shell,服务器,git,任务,branch)