第四章:远程仓库

远程仓库

一 介绍

​ 到目前位置我们的版块库都是创建在本地的个人电脑里,如果公司有一台电脑,家里也有一台电脑,白天我们在公司开发完后,晚上回家也想继续开发,需要借助一个u盘来回拷贝,而每天来回带一个U盘拷贝着实麻烦,Git有没有类似于云盘似得东西可以进行数据同步呢?答案肯定是有。

GitHub,一个基于Git实现的代码托管的平台,可以将内容以及版本记录在远程也保存一份,这样就不用U盘咯(类似于云盘)。PS: 类似GitHub的产品还有许多,如:GitLab、Bitbucket、码云等。

二 GitHub

基于GitHub实现代码托管,需要的步骤:

  • 1、注册GitHub

  • 2、创建仓库

微软收购 GitHub 后,官方宣布了一项重大更新:免费开放私有代码库,即 GitHub 用户现在可以免费创建无限量的私有存储库。同时还有另一项更新——GitHub Enterprise,结合了企业云(原GitHub Business Cloud)和企业服务器(原GitHub Enterprise),对企业和组织来说更简单统一。

之前每个月最少需要支付7美元,现在 GitHub 开发者可以免费创建无限量的私人储存库,但要主要的是,每个代码库最多有三名协作者。如果想要添加更多的协作者,就需要付费...
https://www.jianshu.com/p/d3530cc3cb9b

创建仓库,创建完仓库后会有一个URL代指该仓库,如:

三 push与pull

一:准备就绪,家里和公司各一份代码

  • 1、在家里,我们开发完毕部分功能将代码推送到GitHub。

    #1、为远程仓库地址起一个别名origin
    $ git remote add origin https://github.com/lhf4573/pro.git 
    $ git remote -v # 查看远程仓库地址
    
    #2、将本地master分支内容以及版本信息推送到GitHub
    $ git push origin master
    Username for 'https://github.com': lhf4573 # 输入GitHub用户名
    Password for 'https://lhf4573@github.com': # 输入GitHub密码
    Counting objects: 23, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (15/15), done.
    Writing objects: 100% (23/23), 1.87 KiB | 1.87 MiB/s, done.
    Total 23 (delta 3), reused 0 (delta 0)
    remote: Resolving deltas: 100% (3/3), done.
    To https://github.com/lhf4573/pro.git
    * [new branch]      master -> master
    
    #2、将本地dev分支内容以及版本信息推送到GitHub
    $ git push origin dev
  • 2、初次在公司,新电脑第一次使用,需要将代码从GitHub中获取并继续开发,开发完事就提交一个版本,下班就可以回家。

    $ git clone https://github.com/lhf4573/pro.git # 克隆远程代码
    $ cd pro/
    $ git branch  # 默认获取到得只有master分支
    * master
    $ git checkout dev # 可以创建dev分支且和远程dev分支同步git branch dev origin/dev,也可以直接切换到dev分支
    $ git merge master # 可以把master分支合并到dev,保证dev代码是最新的,仅做一次即可
    
    #==========开发功能、修改代码,巴拉巴拉==========
    $ echo "新功能" >> a.txt # 
    #============================================
    
    $ git add .
    $ git commit -m "公司开发的新功能1" # 提交
    $ git push origin dev  # 提交dev分支内容到远程GitHub托管仓库的dev分支

二:往返于家里与公司,开发dev分支

  • 3、下班回到家里,由于白天在公司已经开发一部分功能并提交到GitHub,家里电脑的代码还是昨晚的版本,所以需要从GitHub拉去最新代码,然后继续开发

    $ git checkout dev       # 切换到dev分支
    $ git pull origin dev   # 从远程GitHub仓库获取dev分支最新内容,并合并到本地
    
    #==========开发功能、修改代码,巴拉巴拉==========
    $ echo 家里开发的新功能 >> a.txt
    #============================================
    
    $ git add .
    $ git commit -m "家里开发的新功能1"
    $ git push origin dev   # 提交dev分支内容到远程GitHub托管仓库的dev分支           
  • 4、上班去公司,由于昨天晚上在家已经开发了一部分功能,在公司需要先把昨晚开发的功能从GitHub中拉取,并继续开发

    $ git checkout dev       # 切换到dev分支
    $ git pull origin dev   # 拉最新的代码,只需要在初次时clone,之后都是通过pull获取最新代码即可,
    
    #==========开发功能、修改代码,巴拉巴拉==========
    $ echo 公司继续开发了的新功能 >> a.txt
    #============================================
    
    $ git add .
    $ git commit -m "公司开发的新功能2"
    $ git push origin dev   # 提交dev分支内容到远程GitHub托管仓库的dev分支   

    长此以往、循环往复,将Git和GitHub结合使用做到避免电脑损坏造成数据丢失以及多地开发的问题,上文执行过程中执行 【git pull origin 分支】命令等同于【git fetch origin 分支】+ 【git merge origin/分支】,并且在执行过程中可能会出现冲突,原因是由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。

三:开发完毕,准备上线,在公司or在家里都可以,通常在公司,把开发好的dev分支合并到master

  #1、将dev分支合并到master,然后进行上线
  git checkout master
  git merge dev
  git push origin master

  #2、将dev分支也推送到远程
  git checkout dev
  git merge master
  git push origin dev

有一问题:

如果某一天你在公司忘记了提交代码,如何解决???

白天在公司:

$ git checkout dev    
$ git pull origin dev 

#==========开发功能、修改代码,巴拉巴拉==========
$ echo 公司开发的新功能,忘记推送到远程仓库 >> a.txt
#============================================

$ git add .
$ git commit -m "公司开发的新功能,忘记推送到远程仓库"

$ 忘记push了!!!

回到家里,

$ git checkout dev    
$ git pull origin dev # 无法获取白天在公司写的新功能,那就继续沿着原内容写下去吧,到时候再解决冲突即可

#==========继续开发其他功能、修改代码,巴拉巴拉==========
$ echo 家里写的功能 >> a.txt
#============================================

$ git add .
$ git commit -m "xxx"
$ git push origin dev   # 这次算是记住push了,哈哈 

去公司上班,

$ git checkout dev    
$ git pull origin dev  # 把昨晚上在家里写的代码拉到本地(有合并,可能有冲突,解决即可)

$ 继续开发其他功能

$ git add .
$ git commit -m "xxx"
$ git push origin dev   # 这次算是记住push了,哈哈 

四 命令总结

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术