git工作流
2016-04-15 17:36
141 查看
日常使用git,一般只需掌握add、commit、checkout、reset、branch、merge、push几个基本操作即可。
这里有一个git教程,廖雪峰的git教程,写得非常通俗易懂,我就不再画蛇添足另开git系列,仅记录个人在使用过程中遇到的问题与积累的经验。
要开始一个多人协作项目,我们首先需要在代码托管平台注册一个帐号,我们以github为例,在线新建一个git仓库:
然后会进到如下界面:
一般都都回初始化一个README文件和一个license。
在任意文件夹中,使用如下命令克隆仓库:
克隆仓库分为两种方式——
一种是https方式,它的仓库地址类似于
而另外一种就是ssh的方式,它的地址类似于:
使用这种方式不会要求输入帐号密码,但是需要配置好ssh公钥:
SSH公钥的配置有如下流程:
会得到如下反应:
直接点击回车即可,一对密钥会保存在~/.ssh文件夹下。
然后进入刚刚存放公钥的目录
这样,你就拥有了你的账户的所有的读写权限,可以将你本地的修改直接使用git命令行推送到本项目的在线仓库。
完成后在命令行测试:
首次建立链接会要求信任主机,输入yes点回车即可。
这样,就可以在本地编写代码,然后将本地仓库的更改同步到在线仓库中。
克隆仓库后,git会自动将远程仓库命名为origin。
尝试进行一次提交:
上述命令会将本地的所有更改提交到远程仓库,同时会将本地的master分支和远程的master分支关联起来。
假设要向项目里添加一个新特性,一般的流程是这样的:
从master新建一个分支(假设叫feature)
在feature分支上进行新特性的开发
新特性开发完成
将feature分支合并到master分支上
删除feature分支
这样子,本地的项目就成功添加了一个新特性,然后再将本地的修改推送到远程仓库即可。
bug的修改也遵循同样的流程,新建分支——修改bug——合并到master。
现将各阶段的操作说明如下:
然后切换到新分支工作:
也可以使用一条命令完成以上两个任务:
然后将feature分支合并到master:
通常情况下,master分支的内容会被设定为与feature分支一模一样。
但如果在feature分支开发的同时master分支也有了新的更改,就需要手动解决冲突:参考[解决冲突]。
可能会出现推送失败的情况:
这是因为远程仓库发生了更改,即其他的小伙伴提交了一些你没有克隆到的修改。
使用pull命令将小伙伴的更改拉取到本地即可:
pull的时候仍需要解决冲突,比如你和你的小伙伴修改了同一个文件的时候,这时候仍需要手动解决冲突:[解决冲突]。
然后再使用push命令推送更改:
至此,完成了线上仓库的一次小版本更新。
这里有一个git教程,廖雪峰的git教程,写得非常通俗易懂,我就不再画蛇添足另开git系列,仅记录个人在使用过程中遇到的问题与积累的经验。
要开始一个多人协作项目,我们首先需要在代码托管平台注册一个帐号,我们以github为例,在线新建一个git仓库:
一、新建git仓库
如图点击新建仓库链接:然后会进到如下界面:
一般都都回初始化一个README文件和一个license。
二、克隆仓库到本地
在线创建好仓库后,就可以把仓库克隆到本地进行工作了。在任意文件夹中,使用如下命令克隆仓库:
git clone 仓库地址
克隆仓库分为两种方式——
一种是https方式,它的仓库地址类似于
https://github.com/zyour_username/project_name.git,使用此种类型的地址克隆到本地,向在线仓库推送更改的时候需要每次输入用户名和密码。
而另外一种就是ssh的方式,它的地址类似于:
git@github.com:your_username/project_name.git
使用这种方式不会要求输入帐号密码,但是需要配置好ssh公钥:
三、ssh公钥配置
账户 SSH 公钥是跟用户账户关联的公钥,一旦设置,就拥有账户下所有项目仓库的读写权限。SSH公钥的配置有如下流程:
1、生成公钥
bash下使用如下命令生成一对rsa密钥:ssh-keygen -t rsa -b 4096 -C "your_email@example.com(注册的邮箱)"
会得到如下反应:
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分支关联起来。
四、开发流程
在将仓库克隆到本地后,就可以在本地进行开发工作。假设要向项目里添加一个新特性,一般的流程是这样的:
从master新建一个分支(假设叫feature)
在feature分支上进行新特性的开发
新特性开发完成
将feature分支合并到master分支上
删除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
至此,完成了线上仓库的一次小版本更新。
相关文章推荐
- 一小时搞定DIV+CSS布局-固定页面开度布局
- C++作业2-2
- 2. 快速入门-跟着例子走
- Project facet Java version 1.8 is not supported.错误提示解决方法
- DecimalFormat类——Java中字符串类型的数字加减报错和精度缺失的解决办法
- 思考
- 系统镜像盘ISO的制作--基于tinycorelinux
- java memcache应用
- SVN外网访问内网的操作步骤
- iOS使用自定义字体
- 多进程并发编程----进程间传递文件描述符案例
- git 切换分支时的 git checkout
- checkbox和后面文字无法居中对齐的解决方案
- 改造间隙扯淡3:民用机器人产品
- java反射代理学习
- Hibernate —— 原生SQL的实例
- [css] css3 中的新特性加强记忆
- Java中的多线程(五)之死锁演示
- leetcode 101:Symmetric Tree
- 高并发分布式事务解决之道-Actor模型(附Akka与Reactor比较)