1、Git远程仓库

  (Gitgub网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已)


需要准备的东西:

  1、准备Git源代码仓库https://github.com/

  2、准备李顺涛的文件F:/gitTest/lishuntao/

  3、准备经理的文件F:/gitTest/manager/

创建远程仓库

  1、登录注册Github

  2、创建仓库入口

3、编辑仓库信息

4、仓库创建完成

5、查看仓库地址

  远程仓库地址:https://github.com/lishuntao123/test1.git

2、配置SSH

  如果某台电脑需要与Github上的仓库交互,那么就要把这台电脑的SSH公钥添加到这个Github账户上。

1、配置SSH公钥入口

2、修改电脑git配置

  配置Github注册邮箱和用户名

 vi .git/config
 [user]
email = 1259553287@qq.com #github注册邮箱
name = lishuntao123 #github注册用户名

3、生成SSH公钥

 ssh-keygen -t rsa -C "1259553287@qq.com"

 备注:删除旧密钥

删除~/.ssh目录,这里存储了旧密钥

rm -r .ssh

3、克隆项目

  准备项目经理的文件F:/gitTest/manager/

  准备我的的文件F:/gitTest/lishuntao

经理的工作:

  建立项目:克隆远程仓库+配置身份信息+创建项目+推送项目到远程仓库

1、克隆远程仓库的命令

cd F:

cd gitTest

cd manager

git clone git@github.com:lishuntao123/test1.git

2、解决可能出现的密钥错误

提示错误信息:

  • sign_and_send_pubkey: signing failed: agent refused operation

错误原因:在ssh账户中没有加入新生成的密钥

解决:将密码加入ssh账户

eval "$(ssh-agent -s)"
ssh-add

3、克隆到本地

4、查看经理文件

5、配置经理信息

cd manager

cd test1

git config user.name "经理"
git config user.email "manager@qq.com"

6、创建项目

7、推送项目到远程仓库

#工作区添加到暂存区
git add . #暂存区提交到仓库区
git commit -m "建立项目" #推送到远程仓库
git push

我的工作:

  获取项目:克隆项目到本地、配置身份信息

1、克隆项目到本地

cd lishuntao

git clone git@github.com:lishuntao123/test1.git

2、配置我的身份信息

  cd test1
git config user.name '李顺涛'
git config user.email '1259553287@qq.com'

我的信息配置成功后,可以和项目经理协同开发同一个项目。

4、多人协同开发

  1、代码编辑界面介绍:linux使用gedit做演示

  2、模拟本人先编辑login.py文件代码

3、模拟经理编辑login.py文件代码

4、模拟自己同步服务器代码

  本次可以把count=2同步到自己的本地服务器

接下来重复上面的代码,实现基本的协同开发

6、总结:

要使用git命令操作仓库,需要进入到仓库内部
要同步服务器代码到本地代码就执行:git pull
本地仓库记录版本就执行:git commit -am '版本描述'
推送代码到服务器就执行:git push
编辑代码前要先pull,编辑完再commit,最后推送是push

5、代码冲突

  多个人协同开发的时候,避免不了会出现代码冲突的情况。因为多个人同时修改了同一个文件,危害会影响正常的开发进度。一旦出现了代码冲突,必须先解决在做后续开发,否则做苦力。

  冲突的由来:共同编辑文件,一个推送到远程仓库,所在行已经被占位。所以后提交的会提示要先git pull才能够同步到本地仓库才可以进行编辑,

解决冲突:

  原则:谁冲突谁解决,并且一定要协商解决

  方案:保留所有代码 或者 保留一人代码

  解决完冲突后,仍需要add、commit、push

补充:

  • 容易冲突的操作方式

    • 多个人同时操作了同一个文件
    • 一个人一直写不提交
    • 修改之前不更新最新代码
    • 提交之前不更新最新代码
    • 擅自修改同事代码
  • 减少冲突的操作方式

    • 养成良好的操作习惯,先pull在修改,修改完立即commitpush
    • 一定要确保自己正在修改的文件是最新版本的
    • 各自开发各自的模块
    • 如果要修改公共文件,一定要先确认有没有人正在修改
    • 下班前一定要提交代码,上班第一件事拉取最新代码
    • 一定不要擅自修改同事的代码

6、标签

  当一个大版本完成之后,需要打一个标签。标签的作用就是记录大版本,备份大版本代码。

模拟项目经理打标签:

1、进入到经理的本地仓库test1

2、项目经理在本地打标签

 git tag -a 标签名 -m '标签描述'

例子: git tag -a v1.0 -m 'version 1.0'

3、经理推送标签到远程仓库

 git push origin 标签名

例子: git push origin v1.0

4、查看打标签结果

备注:删除本地和远程标签

  # 删除本地标签
git tag -d 标签名
# 删除远程仓库标签
git push origin --delete tag 标签名

7、分支

  • 作用:

    • 研究新的功能或者攻关难题
    • 解决线上bug
  • 特点:
    • 分支使每个员工开发期的代码互不干扰
    • 项目开发中公用分支包括master、dev
    • 分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支
    • 分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支
    • 项目中每个项目成员都可以单独建立分支用于的代码开发,实现不交叉

模拟项目经理分支操作

1、查看当前分支

没有创建其他的分支,因此只有master分支

2、项目经理创建并切换到dev分支

 git checkout -b dev

3、项目经理在dev分支编辑代码

5、管理dev分支源代码:add、commit、push

5、dev分支合并到master分支

  git checkout master
#1、先切换到master分支 只有当dev分支合并到master分支成功,别人才能获取到num3
 git merge dev
#2 dev分支合并到master分支
git push
# 经理推送合并分支操作到远程仓库

6、别人同步经理合并后的num3(只有代码同步成功,分支合算才算成功)

BUG分支:重中之重

  • 有时当我们正在开发新功能时,出现了线上BUG。此时,必须暂停正在开发的功能,新建临时分支先解决线上BUG。

以下代码为模拟张三解决线上BUG:v1.0版本出错

  • 1.张三切换到dev分支

  • 2.张三在dev分支上编辑代码

  • 3.线上v1.0版本突然发现bug

    • 张三暂停手中的工作,解决线上v1.0版本bug
    • 记录未提交的修改:保留现场

        git stash #记录未提交的数据 也就是刚暂停手中的工作

  • 4.张三解决线上v1.0版本bug

    • 4.1 张三切换到master分支

    • 4.2 新建fixbug分支,并下载v1.0版本的代码到fixbug分支

        git checkout -b fixbug v1.0

    • 4.3 修复线上v1.0版本bug

    • 4.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分支未提交的修改(切换到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 '合并描述' 分支名
      

02-Git远程仓库Github的更多相关文章

  1. 【第十篇】- Git 远程仓库(Github)之Spring Cloud直播商城 b2b2c电子商务技术总结

    Git 远程仓库(Github) Git 并不像 SVN 那样有个中心服务器. 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据 ...

  2. Git远程仓库(github

    一.创建远程仓库(github) 首先到https://github.com注册一个账号,创建自己的Git,点击repositories,再点new 名字自定义,比如叫fansik,选择public点 ...

  3. learn git(远程仓库github)

    |由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa ...

  4. git远程仓库Github

    一.克隆项目 git clone 网址 1.配置信息 git config user.name '用户名' git config user.email '邮箱号' 2.推送项目到远程仓库 # 工作区代 ...

  5. git 远程仓库-github

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

  6. Linux下Git远程仓库的使用详解

    Git远程仓库Github 提示:Github网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已! 准备Git源代码仓库 https://github.com/ 准备经理的文件 D ...

  7. Git版本控制工具(三)----远程仓库GitHub的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. GitHub进阶之利用Git远程仓库篇

    #在上一篇文章,相信大家对GitHub已经有了一个基础的理解 接下来我们来学习一下如何利用git来远程仓库 一,git是什么 git:一个免费的开源版本控制软件 用途:利用Git管理GitHub上的代 ...

  9. Git应用详解第五讲:远程仓库Github与Git图形化界面

    前言 前情提要:Git应用详解第四讲:版本回退的三种方式与stash 这一节将会介绍本地仓库与远程仓库的一些简单互动以及几款常用的Git图形化界面,让你更加方便地使用git. 一.Git裸库 简单来说 ...

  10. git远程库GitHub

    首先,注册一个GitHub(github.com)帐号,免费获得Git远程仓库 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用 ...

随机推荐

  1. 浮点运算与boost.multiprecision

    在C++中,float占4个字节,double占8个字节,均采用 IEEE 754 浮点标准:内部都是以二进制为基础,表述实数,有些实数可以被精确表述,比如0.2,但有些不行,比如0.3.针对这一点, ...

  2. VUE中 $on, $emit, v-on三者关系

    VUE中 $on, $emit, v-on三者关系 每个vue实例都实现了事件借口 使用$on(eventName)监听事件 使用$emit(eventName)触发事件 若把vue看成家庭(相当于一 ...

  3. angularjs路由监听,uirouter感知路由变化,解决uirouter路由监听不生效的问题

     壹 ❀ 引 angularjs除了惊为天人的双向数据绑定外,路由也是出彩的一笔,通过路由配置,我们能在不发起页面跳转的情况下,对当前页内容进行整体更新,angularjs提供了ngRoute模块用于 ...

  4. Cypress 之 环境配置

    将项目添加到cypress时,cypress.json会在项目中创建一个文件,此文件用于存储projectId,以及你提供的任何配置项. { "projectId": " ...

  5. 程序员修神之路--redis做分布式锁可能不那么简单

    菜菜哥,复联四上映了,要不要一起去看看? 又想骗我电影票,对不对? 呵呵,想去看了叫我呀 看来你工作不饱和呀 哪有,这两天我刚基于redis写了一个分布式锁,很简单 不管你基于什么做分布式锁,你觉得很 ...

  6. C# 判断点是否在矩形框内

    欢迎加群交流 QQ群 830426796 用 System.Drawing.Drawing2D.GraphicsPath 和 Region 类联合起来,然后用 Region.IsVisible(poi ...

  7. zabbix监控服务

    1.模板的重要 ​ 1.手动添加监控比较麻烦,监控项 -> 图形 -> 触发器. 问题: 1.例如: 100台服务器需要检查81端口 2.例如: 100台服务器81改成82 解决: 使用模 ...

  8. 高强度学习训练第十四天总结:HashMap

    HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一. JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap ...

  9. SAP depreciation key config

    正常折旧 Configure 1.分配总帐科目 spro进入后台配置 –> Financial Accounting(New) –> Asset Accounting –> Depr ...

  10. kmeans均值聚类算法实现

    这个算法中文名为k均值聚类算法,首先我们在二维的特殊条件下讨论其实现的过程,方便大家理解. 第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给 ...