远程仓库
一 介绍
到目前位置我们的版块库都是创建在本地的个人电脑里,如果公司有一台电脑,家里也有一台电脑,白天我们在公司开发完后,晚上回家也想继续开发,需要借助一个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了,哈哈