git工作流

日常使用git,一般只需掌握add、commit、checkout、reset、branch、merge、push几个基本操作即可。

这里有一个git教程,廖雪峰的git教程,写得非常通俗易懂,我就不再画蛇添足另开git系列,仅记录个人在使用过程中遇到的问题与积累的经验。

要开始一个多人协作项目,我们首先需要在代码托管平台注册一个帐号,我们以github为例,在线新建一个git仓库:

一、新建git仓库

如图点击新建仓库链接:
git工作流_第1张图片
然后会进到如下界面:
git工作流_第2张图片
一般都都回初始化一个README文件和一个license。

二、克隆仓库到本地

在线创建好仓库后,就可以把仓库克隆到本地进行工作了。

在任意文件夹中,使用如下命令克隆仓库:

git clone 仓库地址

克隆仓库分为两种方式——

一种是https方式,它的仓库地址类似于https://github.com/zyour_username/project_name.git,使用此种类型的地址克隆到本地,向在线仓库推送更改的时候需要每次输入用户名和密码。

而另外一种就是ssh的方式,它的地址类似于:[email protected]:your_username/project_name.git

使用这种方式不会要求输入帐号密码,但是需要配置好ssh公钥:

三、ssh公钥配置

账户 SSH 公钥是跟用户账户关联的公钥,一旦设置,就拥有账户下所有项目仓库的读写权限。

SSH公钥的配置有如下流程:

1、生成公钥

bash下使用如下命令生成一对rsa密钥:

ssh-keygen -t rsa -b 4096 -C "[email protected](注册的邮箱)"  

会得到如下反应:

Generating public/private rsa key pair.  
Enter file in which to save the key (/home/zeta/.ssh/id_rsa): 

直接点击回车即可,一对密钥会保存在~/.ssh文件夹下。

2、添加公钥

登陆github,在右上角的头像点击setting,然后选择SSH and GPG keys设置项,点击New SSH key

然后进入刚刚存放公钥的目录~/.ssh,打开id_rsa.pub,把里面全部的内容复制到输入框里点击确定。

这样,你就拥有了你的账户的所有的读写权限,可以将你本地的修改直接使用git命令行推送到本项目的在线仓库。

完成后在命令行测试:

ssh -T git@github.com

首次建立链接会要求信任主机,输入yes点回车即可。

这样,就可以在本地编写代码,然后将本地仓库的更改同步到在线仓库中。
克隆仓库后,git会自动将远程仓库命名为origin。

尝试进行一次提交:

git push -u origin master

上述命令会将本地的所有更改提交到远程仓库,同时会将本地的master分支和远程的master分支关联起来。

四、开发流程

在将仓库克隆到本地后,就可以在本地进行开发工作。

假设要向项目里添加一个新特性,一般的流程是这样的:

  1. 从master新建一个分支(假设叫feature)
  2. 在feature分支上进行新特性的开发
  3. 新特性开发完成
  4. 将feature分支合并到master分支上
  5. 删除feature分支

这样子,本地的项目就成功添加了一个新特性,然后再将本地的修改推送到远程仓库即可。

bug的修改也遵循同样的流程,新建分支——修改bug——合并到master。

现将各阶段的操作说明如下:

1、新建并切换到新分支

在项目文件夹下,使用如下命令新建一个名叫feature的分支:

git branch feature

然后切换到新分支工作:

git checkout feature

也可以使用一条命令完成以上两个任务:

git checkout -b feature

2、在新分支上开发新特性

写代码然后commit即可。

3、合并分支到master

首先切换到master分支:

git checkout master

然后将feature分支合并到master:

git merge feature master

通常情况下,master分支的内容会被设定为与feature分支一模一样。

但如果在feature分支开发的同时master分支也有了新的更改,就需要手动解决冲突:参考[解决冲突]。

4、推送更改到远程仓库

使用刚才提到的push命令将master上做出的的所有更改推送到远程仓库:

git push orgin master

可能会出现推送失败的情况:

xxxxxx
hint: Updates were rejected because the remote contains work that you do  
hint: not have locally. This is usually caused by another repository pushing  
hint: to the same ref. You may want to first integrate the remote changes  
hint: (e.g., 'git pull ...') before pushing again.  
hint: See the 'Note about fast-forwards' in 'git push --help' for details.  

这是因为远程仓库发生了更改,即其他的小伙伴提交了一些你没有克隆到的修改。

使用pull命令将小伙伴的更改拉取到本地即可:

git pull

pull的时候仍需要解决冲突,比如你和你的小伙伴修改了同一个文件的时候,这时候仍需要手动解决冲突:[解决冲突]。

然后再使用push命令推送更改:

git push orgin master

至此,完成了线上仓库的一次小版本更新。

你可能感兴趣的:(git)