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. 如何计算Data Guard环境中Redo所需的网络带宽传输 (Doc ID 736755.1)

    How To Calculate The Required Network Bandwidth Transfer Of Redo In Data Guard Environments (Doc ID ...

  2. SpringBoot 日志系统

    日志框架 开发一个大型系统的简易步骤: system.out.println("..") 将关键的数据在控制台输出 框架记录系统的一些运行时的信息,---日志框架. 牛逼的功能-- ...

  3. 误区以为父组件render一次,子组件会重新初始化

    初学react的时候我有一个误区,以为父组件render的一次,会将子组件先卸载,再将子组件重新初始化,事实证明不是. 这是对react生命周期函数不太清楚. 父子组件都初始化后,父组件再render ...

  4. IDEA中写MyBatis的xml配置文件编译报错的坑

    IDEA中写MyBatis的xml配置文件编译报错的坑 说明:用IDEA编译工具在项目中使用Mybatis框架,编写mybatis-config.xml和Mapper.xml配置文件时,编译项目出现错 ...

  5. 07. Go 语言接口

    Go 语言接口 接口本身是调用方和实现方均需要遵守的一种协议,大家按照统一的方法命名参数类型和数量来协调逻辑处理的过程. Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具 ...

  6. 修改Docker容器的时间和宿主时间一致

    在查看容器的日志的,发现时间有和宿主主机时间相差有8个小时,而且宿主主机使用的是CST时间,容器容器使用的是UTC时间 主机时间 [root@hz-d-crm01 ~]$ date Thu May 2 ...

  7. angularjs link compile与controller的区别详解,了解angular生命周期

     壹 ❀ 引 我在 angularjs 一篇文章看懂自定义指令directive 一文中简单提及了自定义指令中的link链接函数与compile编译函数,并说到两者具有互斥特性,即同时存在link与c ...

  8. 利用百度文字识别API识别图像中的文字

      本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...

  9. 母版页 treeview控件 SiteMapPath控件 treeview数据库绑定模式

     母版页就是网站中一样的部分母版页的后缀名是.Master可以把母版页当成一个页面  想让哪里是别的内容就可以  通过如下: <asp:ContentPlaceHolder ID="C ...

  10. spring的简易实现(一)

    [练习]spring的简易实现(一) 在第一部分我们实现读取xml的配置,然后实例化xml中的bean 首先定义一个xml和相关的class类 <?xml version="1.0&q ...