创建远程仓库
以下操作为演示在Github网站上创建远程仓库
1.登陆注册Github
2.创建仓库入口
3.编辑仓库信息
4.仓库创建完成
5.查看仓库地址
远程仓库地址
git@github.com:zhangxiaochuZXC/test007.git
配置SSH
如果某台电脑需要与
Github
上的仓库交互,那么就要把这台电脑的SSH公钥添加到这个Github
账户上1.配置SSH公钥入口
2.修改电脑git配置
配置Github注册邮箱和用户名
vi .gitconfig
[user] email = zhangjiesharp@163.com name = zhangxiaochuZXC
3.生成SSH公钥
ssh-keygen -t rsa -C "zhangjiesharp@163.com"
4.配置SSH公钥
补充:删除旧的秘钥
删除
~/.ssh
目录,这里存储了旧的密钥rm -r .ssh
克隆项目
- 准备经理的文件
Desktop/manager/
- 准备张三的文件
Desktop/zhangsan/
经理的工作
立项:克隆远程仓库+配置身份信息+创建项目+推送项目到远程仓库
1.克隆远程仓库的命令
cd Desktop/manager/ git clone git@github.com:zhangxiaochuZXC/test007.git
2.解决可能出现的密钥错误
- 提示错误信息如下:
sign_and_send_pubkey: signing failed: agent refused operation
- 错误原因:在ssh账户中没有加入新生成的密钥
- 解决:将密码加入ssh账户
逐条运行如下命令
eval "$(ssh-agent -s)" ssh-add
- 提示错误信息如下:
3.克隆远程仓库到本地
4.克隆成功后查看经理的文件
5.配置经理身份信息
cd Desktop/manager/test007/ git config user.name '经理' git config user.email 'manager@163.com'
6.创建项目
7.推送项目到远程仓库
# 工作区添加到暂存区 git add . # 暂存区提交到仓库区 git commit -m '立项' # 推送到远程仓库 git push
张三的工作
获取项目:克隆项目到本地、配置身份信息
1.克隆项目到本地
cd Desktop/zhangsan/ git clone git@github.com:zhangxiaochuZXC/test007.git
2.克隆成功后查看张三的文件
3.配置张三身份信息
cd Desktop/zhangsan/test007/ git config user.name '张三' git config user.email 'zhangsan@163.com'
张三身份信息配置成功后即可跟经理协同开发同一个项目
分支
- 作用:
- 研究新的功能或者攻关难题
- 解决线上bug
- 特点:
- 分支使每个员工开发期的代码互不干扰
- 项目开发中公用分支包括master、dev
- 分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支
- 分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支
- 项目中每个项目成员都可以单独建立分支用于的代码开发,实现不交叉
模拟经理分支操作
对比:操作分支前的代码
1.进入到经理的本地仓库
test007
cd Desktop/manager/test007/
2.查看当前分支
git branch
没有创建其他分支时,只有
master
分支
3.经理创建并切换到dev分支
git checkout -b dev
4.经理在dev分支编辑代码
5.管理dev分支源代码:
add
、commit
、push
6.dev分支合并到master分支
- 提示:只有当dev分支合并到master分支成功,张三才能获取到
num4
6.1 先切换到master分支
git checkout master
6.2 dev分支合并到master分支
git merge dev
6.3 经理推送合并分支操作到远程仓库
合并分支默认在本地完成,合并后直接推送即可
git push
- 提示:只有当dev分支合并到master分支成功,张三才能获取到
7.张三同步经理合并后的
num4
只有当张三同步代码成功,分支合并才算成功
cd Desktop/zhangsan/test007/ git pull
BUG分支:重中之重
- 有时当我们正在开发新功能时,出现了线上BUG。此时,必须暂停正在开发的功能,新建临时分支先解决线上BUG。
以下代码为模拟张三解决线上BUG:v1.0版本出错
1.张三切换到dev分支
2.张三在dev分支上编辑代码
3.线上
v1.0
版本突然发现bug- 张三暂停手中的工作,解决线上
v1.0
版本bug 记录未提交的修改:保留现场
git stash
- 张三暂停手中的工作,解决线上
4.张三解决线上
v1.0
版本bug4.1 张三切换到
master
分支4.2 新建
fixbug
分支,并下载v1.0
版本的代码到fixbug
分支git checkout -b fixbug v1.0
4.3 修复线上
v1.0
版本bug4.4 管理
fixbug
分支代码add
、commit
、push
4.5 合并
fixbug
分支到master
分支,并推送到远程仓库# 切换到master分支 git checkout master # 合并fixbug分支到master分支 git merge fixbug # 推送合并到远程仓库 git push
4.6 经理打标签
v1.1
,发布v1.1
版本git tag -a v1.1 -m 'version 1.1' git push origin v1.1
4.7 张三恢复dev分支未提交的修改
- 恢复到发现线上bug的那个节点
v2.0开发中...
git stash list git stash pop
4.8 张三将
fixbug
分支合并到dev
分支- 当把未提交的修改提交后,即可将
fixbug
合并到dev
保证张三现在开发的版本不会有
v1.0
版本遗留问题# 切换到dev分支 git checkout dev # 合并fixbug分支到dev分支 git merge fixbug # 推送 git push
- 当把未提交的修改提交后,即可将
4.9 张三将
dev
分支合并到master
分支,并推送到目前为止:
v1.0
版本bug解决了,v2.0
也开发完成了
合并分支禁用
Fast Forward
模式- 在合并分支时,默认采用
Fast Forward
模式 - 该模式没有分支合并的版本记录
如果需要在合并分支时记录版本需要禁用
Fast Forward
模式git merge --no-ff -m '合并描述' 分支名
- 准备经理的文件