学习搭建Git服务器和多人协作开发

一,搭建Git服务器>>>>>>>>>>>>>>>>>
环境基于Ubuntu-12.04
项目服务器管理员:
             用户添加及ssh RSA登录(免密登录)
            1.新建一个工程用户,作为该项目的ssh登录用户   也是git代码的存放目录
               #su root
               #adduser gittest(快捷创建用户)

            2.添加所有项目成员的ssh公钥
                切换到新的账号
                #su gittest
                新建.ssh目录,/home/gittest/.ssh/
                #mkdir /home/gittest/.ssh
                在该目录新建 authorized_keys文件
                #touch    authorized_keys
         拷贝项目成员ssh公钥到此目录
   ( 注意是ssh-rsa打头的!!!,检查是否出错)
        
        验证ssh是否能免密登录:(默认端口22,这里修改服务器ssh端口号,具体使用和服务器管理员确认)
      项目成员在自己的系统下
                         ssh -p 2222 [email protected](注意-p后面跟服务器sshd的端口号,gittest是ssh的用户名,222.20.20.20是服务器的ip
              能登录则说明免密成功,接下来才能做git的相关工作
3.建立好git代码的仓库目录,这个只作为存储代码的,不能执行git的一般操作。
             git --bare init /home/gittest/Test.git
            ( git目录下;而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件)
项目成员:
            1.生成ssh RSA公钥
            # ssh-keygen –t rsa -C "[email protected]"
        生成的默认路径是~/.ssh/id_rsa.pub (公钥),这个公钥是要给项目服务器管理员的。
      2.待项目主管push到服务器之后
        #git clone gittest@qiyangserver:/home/gittest/Test2.git
                 (qiyangserver
                    cat>~/.ssh/config
                    # 映射一个别名
                    host qiyangserver
                    hostname 282.20.20.20
                    port 2222
                 )
               #cd 到新建的代码目录
              #git branch -a
              同步开发者分支或其他你需要的工作分支到本地
              #git  git checkout -b develop origin/develop
      3. git commit -a -m "你的提交说明"
                                 (这个可以不要,默认origin已经添加) 4.git remote add origin gittest@qiyangserver:/home/gittest/Test2.git
          4.也许remote已经有更新,如果你的代码没有给其他人共享,可以使用git pull --rebase或者 git fetch (这样不会做归并操作,也可以同步最新的分支)
                另外两个相关的命令是: git pull和 git pull --rebase。 
                这两个的区别在于前者是git fetch + git merge,后者是git fetch + git rebase。
          5.git push origin develop 上传分支。
     

项目主管:
            1.做出项目原型
                #git init
                #git add -A
                #git commit  -m "项目说明"
                创建开发分支
                #git checkout -b develop
            2.添加远程源
                #git remote add origin gittest@qiyangserver:/home/gittest/Test2.git
                 (注意是否有同名remote!!! )
                (qiyangserver
                    cat>~/.ssh/config
                    # 映射一个别名
                    host qiyangserver
                    hostname 282.20.20.20
                    port 2222
                 )
            
            3.推送至项目服务器
                # git push origin master
            4.推送develop分支到项目服务器
                #git push origin develop
            5.指定本地分支和远程分支的关系,否则git pull不下来 (但是能git push上去) 。  git branch --all 可以查看local和remote的对应关系
                #git branch --set-upstream-to=origin/develop develop
             6.项目主管做自己的事
                提交前先统一一下版本
                #git pull --rebase  (rebase作用详解指令详解)
            7.git push origin develop 提交到develop分支

这里简单解释一下rebase
git pull --rebase 重整是线性的。如Ubuntu-file3之前的几次
学习搭建Git服务器和多人协作开发_第1张图片


二,多人协作开发>>>>>>>>>>>>>>>>>>>
                 关键是分支的建立(master, develop, feature, hot-fix) 和理解 详解 http://nvie.com/posts/a-successful-git-branching-model/ A successful Git branching model 
学习搭建Git服务器和多人协作开发_第2张图片

  feature分支
                从develop分支发出,最终归并到develop分支
                  #git checkout -b  newfeture develop
                 #git push origin  newfeture 
                关联分支
                #git branch --set-upstream-to=origin/newfeture newfeture 
                
                分支完成时,切到develop分支,merge该newfeture分支
                #git checkout develop
                归并newfeature分支,使用--no-ff属性,能够知道这是一个feature递交版本过程,容易追溯,如下图的newfeature提交
                #git merge --no-ff newfeature 
学习搭建Git服务器和多人协作开发_第3张图片
release分支
               当新的feature足够多,准备发布新的版本号版本。 同样从develop出发,最终用于更新到master分支.该版本不新增新的feature或大的改动
                # git checkout -b release-1.0 develop
      #git push   origin release-1.0
                #git branch --set-upstream-to=origin/ release-1.0   release-1.0        
                通过测试,没有明显bug,发布到master
              # git checkout master
              #git merge --no-ff release-1.0
              # git tag -a v1.0 (tag就是一个只读的branch,一般为每一个可发布的里程碑版本打一个tag. 里程碑标记。 也可以被checkout)
              #git push origin master
              切到develop分支,也归并发布版的改动
              #git checkout develop
              #git merge --no-ff release-1.0 
              删除release分支
              # git branch -d release-1.0
            
hot-fix分支
       类似于release分支,只不过该分支是处理bug的,从master分支出来
              #git checkout -b hotfix-1.1.1 master
      同上需要归并到master和develop
     # git tag -a 1.2.1
             删除hotfix分支
              # git branch -d hotfix-1.1.1

你可能感兴趣的:(多人协作开发,版本管理)