3

看完了前面几篇博客,也许你就能够掌握一些基本的git操作。不过显然在实际开发中,情况并不是这么简单。

一般说来,实际开发中,我们会有三个不同场景的代码。你的本地代码,测试服务器的代码,以及正式服务器的代码。当我们在本地开发好代码,还需要上传到测试服务器进行测试,确保没有问题了,然后才会将代码部署到正式服务器。
除此之外,我们的开发团队,还有另外一个需求,那就是多人协作开发。同一个项目,不同的人都会参与进来,完成各自负责的部分。
为了应对上述的需求,git提供给我们的解决方案大致为,找到一个git服务器,这里将会保存我们的代码。当我们在本地将代码开发完成,push到这个git服务器,然后在测试和正式服务器中,只需执行pull操作,就可以将代码部署到测试/正式服务器。是的,通常大家所说的上线,只是执行了一个pull操作。那么实际步骤该如何操作呢?

关系图

第一步 寻找一个适合自己的git服务器

我们可以自己动手搭建一个git服务器,参考这里,相信你很快就能掌握搭建自己git服务器的技巧。
最最出名的github,就是我们十分常用的git服务器,不过想要创建私有项目要给钱。因此,如果你的项目代码公开没有什么问题,又或者你不缺钱的话,github将是不错的选择。

如果你又不想花钱,又想要自己能够创建私有项目,那么你可以去了解一下gitlab
而我这里选择了git.oschina.net,至于为什么选择他,主要还是因为他是中文的吧,便于阅读,而且用户很多,有自己成熟的社区,而且帮助文档都是中文的,对于英语阅读能力欠佳的我来说,用起来还是挺舒服的。

第二步 配置个人信息,确保你能够从git@osc上正常推送和拉取代码
  • 使用常用邮箱或者工作邮箱在git.oschina.net上注册一个账号

  • 在本地电脑安装好git:在mac中,可直接使用终端进行git的操作,在windows中,利用cmd在git安装目录下运行git-bash.exe,会弹出专门用于git操作的命令行工具。

  • 使用注册账号的邮箱配置ssh key ,假设我的注册邮箱为yb_837@163.com

    • 首先,输入以下指令查看本地是否已经存在ssh key

$ cat ~/.ssh/id_rsa.pub

如果返回结果类似如下,说明你的电脑本地已经有了一个ssh key,可直接使用

ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQDhVyIw23cuQ5yJVVqi51l
0xPlcaBy1oFug/D7ELCYwi0qNUmpUsMUg2E81vfHabJrmCKQ/6nb
39jJE8SjwKmtPKr380CWJ0mJpdngK6S+I/Iv41nJQTRNKsZj0Rw4YU
/lXCJfJ7bjIzWJpi+HA6co92TGXkTWOh2NdE6/dSNlXZcMsEbjNHn1d
s6jbrp168W8tExSSLUqPVdGsXmouQ1CmWwmp6sgq7b7ag+gJQA
knzPlP4HaGURSyMPuS6dkd8iu23geDwJwoYdV+xYFuBKfgzPL1usV
qGnMfB3+zH87s+XUKlZ2c5ciClnlyr886UBCVQuiIOeuaPidLAKHBpjKd yb_837@163.com

如果没有,或者你想使用另外一个邮箱生成新的ssh key,则需要输入以下指令重新生成。

$ ssh-keygen -t rsa -C "yb_837@163.com"

然后可能会出现以下提示:

Enter file in which to save the key (/c/Users/yangbo/.ssh/id_rsa): 

输入id_rsa点击enter,后面的提示可以直接输入enter跳过,就ok了。
然后再查看生成的ssh key

$ cat ~/.ssh/id_rsa.pub

一般来说,ssh-key都保存在 ~/.ssh/目录下的id_rsa.pub文件里,如果你在操作过程中发现本地没有.ssh目录,只需要在~目录下手动创建即可

$ mkdir .ssh
  • 然后登陆git@osc,点击右上角的个人资料图标

个人资料图标

  • 点击左侧的ssh公钥

ssh公钥

  • 将你本地文件~/.ssh/id_rsa.pub中的内容复制到下图所示的公钥框中,标题会自动填充为邮箱,然后点击确认,ssh-key就已经添加成功了

添加公钥

公钥是git服务器确认你身份的凭证,公钥添加之后,你不仅可以从git服务器上clone代码下来,还可以将本地修改的内容push到git服务器,你可以根据下面的提示将这个过程简单演示一下。

  • 在git@osc上创建一个新的空项目

  • 在项目的页面复制项目的ssh链接

这里的clone地址一般有https与ssh2中协议,具体区别请在gitpro中了解,我们一般使用的是ssh协议,这里一定要注意区分

  • 克隆代码到本地

$ git clone git@git.oschina.net:ybobo/wxinterface.git
  • 进入到项目文件夹,对本地代码稍作修改,你可以随时使用git status查看代码的状态

  • 修改代码之后,进行提交推送操作,如下

$ git add .
$ git commit -m "initial code"
$ git push origin master

这样,修改的代码就已经提交到了git@osc上

第三步 创建项目组并添加项目成员

登陆git@osc, 在如图所示的地方,点击创建项目组

创建项目组

然后按照提示填写项目组相关信息。

进入刚才创建的项目组,点击成员

成员

添加成员

添加成员

在搜索框中输入其他用户的昵称或者邮箱,都可以找到他

添加的时候,你还可以对每个人设置不同的权限,都是很简单明了的操作。当你将所有将要参与到这个项目中的人都添加进来的之后,大家就可以对同一个项目进行操作了。

第四步 创建项目

创建项目的操作在git@osc上很简单,我就不多说,项目创建完成之后,将项目拉进你所创建的项目组里面就可以了。

在项目创建之初,只有一个master分支。很显然,当我们在实际开发应用中时,一个分支并不能满足我们所有的要求。
我们需要有一个线上的稳定版本。
我们还需要有一个随时可以修改代码的开发版本。
因此,我们至少需要2个分支。一般说来,线上的稳定版本,都是使用master分支,而我们的开发代码分支,这里我们假设取名为develop.

一般我的习惯是先在git服务器上创建一个只有一个master分支的空repository。然后拉取到本地

$ git clone git@git.oschina.net:ybobo/wxinterface.git

创建新的develop分支

$ git branch develop

切换到新分支

$ git checkout develop

推送新的分支到git服务器

$ git push origin develop

当我们开发的时候,所有人都只能操作develop分支,都不要直接往master分支上推送任何代码。否则很容易造成混乱。如果你更新了一些内容,并且确认这些内容可以发布上线,就通过develop分支向master提交pull request

首先将开发好的代码推送到develop分支

$ git pull origin develop
$ git add .
$ git commit -m "我开发的新功能"
$ git push origin develop

然后在develop分支上创建pull request

首先点击pull request按钮

创建pull request
目标分支为master分支,指派给项目lead,里程碑就是版本标签

项目成员提交pull request 给lead之后,lead只需点击接受就可以将代码合并到master分支

经过这个过程,我们要上线的功能就已经合并到master分支上了。这个时候,我们只需要在测试/正式服务器上执行pull操作,就可以将代码上线到服务器上了。

$ git pull origin master

当然,如果我们是第一次操作,我们需要在服务器clone一下

git clone git@git.oschina.net:ybobo/wxinterface.git

当然,在这之前,你必须要在代码服务器上安装git等必须的软件。具体安装方法不在本文的讨论范围,如果不会的话,大家可以去网上找找资料。

请务必要分清楚,本文所讲的几个概念。
本地电脑:你用于开发的电脑
git服务器:你用来管理代码版本的地方,这里是指git@osc
你项目的服务器:你的代码,数据等存放的地方,你的最终目的就是将代码从本地传到这里来。

如果你在按照我说的步骤操作过程中遇到什么问题,可以在评论里问我。^_^

最后

尽管搞明白我写的这些已经可以应付很多应用场景了,不过我所说的终究只是一些基础,想要进一步提高,还得细细研读git pro

另外,如果你正在使用mac开发代码的话,推荐一款git可视化工具Tower。超级棒,也很简单的工具,你值得一试。


这波能反杀
12.6k 声望2.7k 粉丝