到目前位置我们的版块库都是创建在本地的个人电脑里,如果公司有一台电脑,家里也有一台电脑,白天我们在公司开发完后,晚上回家也想继续开发,需要借助一个u盘来回拷贝,而每天来回带一个U盘拷贝着实麻烦,Git有没有类似于云盘似得东西可以进行数据同步呢?答案肯定是有。
GitHub,一个基于Git实现的代码托管的平台,可以将内容以及版本记录在远程也保存一份,这样就不用U盘咯(类似于云盘)。PS: 类似GitHub的产品还有许多,如:GitLab、Bitbucket、码云等。
基于GitHub实现代码托管,需要的步骤:
| 微软收购 GitHub 后,官方宣布了一项重大更新:免费开放私有代码库,即 GitHub 用户现在可以免费创建无限量的私有存储库。同时还有另一项更新——GitHub Enterprise,结合了企业云(原GitHub Business Cloud)和企业服务器(原GitHub Enterprise),对企业和组织来说更简单统一。 |
| |
| 之前每个月最少需要支付7美元,现在 GitHub 开发者可以免费创建无限量的私人储存库,但要主要的是,每个代码库最多有三名协作者。如果想要添加更多的协作者,就需要付费... |
| https://www.jianshu.com/p/d3530cc3cb9b |
创建仓库,创建完仓库后会有一个URL代指该仓库,如:
一:准备就绪,家里和公司各一份代码
-
1、在家里,我们开发完毕部分功能将代码推送到GitHub。
| |
| $ git remote add origin https://github.com/lhf4573/pro.git |
| $ git remote -v |
| |
| |
| $ git push origin master |
| Username for 'https://github.com': lhf4573 |
| Password for 'https://lhf4573@github.com': |
| 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 |
| |
| |
| $ git push origin dev |
-
2、初次在公司,新电脑第一次使用,需要将代码从GitHub中获取并继续开发,开发完事就提交一个版本,下班就可以回家。
| $ git clone https://github.com/lhf4573/pro.git |
| $ cd pro/ |
| $ git branch |
| * master |
| $ git checkout dev |
| $ git merge master |
| |
| |
| $ echo "新功能" >> a.txt |
| |
| |
| $ git add . |
| $ git commit -m "公司开发的新功能1" |
| $ git push origin dev |
二:往返于家里与公司,开发dev分支
-
3、下班回到家里,由于白天在公司已经开发一部分功能并提交到GitHub,家里电脑的代码还是昨晚的版本,所以需要从GitHub拉去最新代码,然后继续开发
| $ git checkout dev |
| $ git pull origin dev |
| |
| |
| $ echo 家里开发的新功能 >> a.txt |
| |
| |
| $ git add . |
| $ git commit -m "家里开发的新功能1" |
| $ git push origin dev |
-
4、上班去公司,由于昨天晚上在家已经开发了一部分功能,在公司需要先把昨晚开发的功能从GitHub中拉取,并继续开发
| $ git checkout dev |
| $ git pull origin dev |
| |
| |
| $ echo 公司继续开发了的新功能 >> a.txt |
| |
| |
| $ git add . |
| $ git commit -m "公司开发的新功能2" |
| $ git push origin dev |
长此以往、循环往复,将Git和GitHub结合使用做到避免电脑损坏造成数据丢失以及多地开发的问题,上文执行过程中执行 【git pull origin 分支】命令等同于【git fetch origin 分支】+ 【git merge origin/分支】,并且在执行过程中可能会出现冲突,原因是由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。
三:开发完毕,准备上线,在公司or在家里都可以,通常在公司,把开发好的dev分支合并到master
| |
| git checkout master |
| git merge dev |
| git push origin master |
| |
| |
| 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 |
去公司上班,
| $ git checkout dev |
| $ git pull origin dev |
| |
| $ 继续开发其他功能 |
| |
| $ git add . |
| $ git commit -m "xxx" |
| $ git push origin dev |