Git--代码托管/协同开发
Git--代码托管
我爱写代码,公司写,家里写,如果每天来回带一个U盘拷贝着实麻烦,Git有没有类似于云盘似得东西可以进行数据同步呢?答案肯定是有。
GitHub,一个基于Git实现的代码托管的平台,可以将内容以及版本记录在远程也保存一份,这样就不用U盘咯(类似于云盘)。PS: 类似GitHub的产品还有许多,如:GitLab、Bitbucket、码云等。

基于GitHub实现代码托管,需要一下步骤:
- 注册GitHub

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

- git可以是用该URL进行向远程推送版本信息或获取版本信息

学会使用Git和GitHub之后,就可以基于GitHub进行代码远程托管。
在家里,开发完毕部分功能将代码推送到GitHub。
MacBook-Pro-:pondo gaoshengyue$ git remote add origin https://github.com/Ggaoshengyue/pondo.git # 为地址起一个别名origin
MacBook-Pro-:pondo gaoshengyue$ git push origin master # 将本地master分支内容以及版本信息推送到GitHub
Username for 'https://github.com': # 输入GitHub用户名
Password for 'https://gaoshengyue@github.com': # 输入GitHub密码
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
remote: Resolving deltas: % (/), completed with local object.
To https://github.com/Gaoshengyue/pondo.git
634aac4..274f1e4 master -> master
MacBook-Pro-:pondo gaoshengyue$ git push origin dev # 将本地dev分支内容以及版本信息推送到GitHub
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
remote: Resolving deltas: % (/), completed with local object.
To https://github.com/Gaoshengyue/pondo.git
274f1e4..50e2169 dev -> dev
在公司,新电脑第一次使用,需要将代码从GitHub中获取并继续开发,开发完事下班就下班回家。
MacBook-Pro-:github gaoshengyue$ git clone https://github.com/Gaoshengyue/pondo.git # 将项目从GitHub中获取
Cloning into 'pondo'...
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta ), pack-reused
Unpacking objects: % (/), done.
MacBook-Pro-:github gaoshengyue$ cd pondo/
MacBook-Pro-:pondo gaoshengyue$ git Branch # 默认获取到得只有master分支
* master
MacBook-Pro-:pondo gaoshengyue$ git branch dev origin/dev # 创建dev分支且和远程dev分支同步
Branch dev set up to track remote branch dev from origin.
MacBook-Pro-:pondo gaoshengyue$ git checkout dev # 切换到dev分支
Switched to branch 'dev' MacBook-Pro-:pondo gaoshengyue$ vim app01/views.py # 继续开发新功能 MacBook-Pro-:pondo gaoshengyue$ git add . # 添加文件到版本库的暂存状态
MacBook-Pro-:pondo gaoshengyue$ git commit -m '公司开发功能1' # 提交新功能到版本库的分支
[dev ] 公司开发功能1
file changed, insertion(+), deletion(-)
MacBook-Pro-:pondo gaoshengyue$ git push origin dev # 提交dev分支内容到远程GitHub托管仓库的dev分支
Username for 'https://github.com':
Password for 'https://gaoshengyue@github.com':
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
remote: Resolving deltas: % (/), completed with local objects.
To https://github.com/Gaoshengyue/pondo.git
50e2169.. dev -> dev
在家里,由于白天在公司已经开发一部分功能并提交到GitHub,家里电脑的代码还是昨晚的版本,所以需要从GitHub拉去最新代码,然后继续开发。
MacBook-Pro-:pondo gaoshengyue$ git checkout dev # 切换到dev分支
Already on 'dev'
MacBook-Pro-:pondo gaoshengyue$ git pull origin dev # 从远程GitHub仓库获取dev分支最新内容,并合并到本地
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta ), pack-reused
Unpacking objects: % (/), done.
From https://github.com/Gaoshengyue/pondo
* branch dev -> FETCH_HEAD
50e2169.. dev -> origin/dev
Updating 50e2169..
Fast-forward
app01/views.py | +-
file changed, insertion(+), deletion(-)
MacBook-Pro-:pondo gaoshengyue$ vim app01/views.py # 继续开发新功能
MacBook-Pro-:pondo gaoshengyue$ git add . # 添加文件到版本库的暂存状态
MacBook-Pro-:pondo gaoshengyue$ git commit -m '家里开发功能1' # 提交新功能到版本库的分支
在公司,由于昨天晚上在家已经开发了一部分功能,在公司需要先把昨晚开发的功能从GitHub中拉取,并继续开发。
MacBook-Pro-:pondo gaoshengyue$ git checkout dev # 切换到dev分支
MacBook-Pro-:pondo gaoshengyue$ git fetch origin dev # 从GitHub仓库获取dev分支最新内容到版本库的分支
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta ), pack-reused
Unpacking objects: % (/), done.
From https://github.com/Gaoshengyue/pondo
* branch dev -> FETCH_HEAD
150d891..65b6604 dev -> origin/dev
MacBook-Pro-:pondo gaoshengyue$ git merge origin/dev # 将版本库的分支内容合并到工作区
Updating 150d891..65b6604
Fast-forward
readme | ++++-
file changed, insertions(+), deletion(-)
MacBook-Pro-:pondo gaoshengyue$ vim app01/views.py # 继续开发新功能
MacBook-Pro-:pondo gaoshengyue$ git add . # 添加文件到版本库的暂存状态
MacBook-Pro-:pondo gaoshengyue$ git commit -m 'xxxxxxxxxxx' # 提交新功能到版本库的分支
Git--协同开发
公司或者项目的发展前景越来越好,我们需要其他工程师来协同开发,这时候我们也要利用github和git来进行协同开发。
GitHub中多人协同开发和单人开发还是有点差别,协同开发一般有两种方式:
- 合作者,将其他用户添加到仓库合作者中之后,该用户就具有向当前仓库提交代码。

- 组织,创建一个组织,然后再该组织下可以创建多个项目,组内成员可以向组内所有项目提交代码。PS:也可以对某个项目指定合作者

协同开发命令和以上步骤类似,此处就不再重新写代码,而是使用文件描述三人协同开发整个过程。
- 创建程序
- 用户A创建程序,提交到GitHub
- 用户B克隆项目
- 用户C克隆项目
- 开发功能
- 用户A开发功能1
- 用户B开发功能2
- 用户C开发功能3
- 提交
- 用户A提交功能1,并push(A用户手速快,先提交。)
- 用户B提交功能2,无法push,因为GitHub上已经有其他人提交的新代码。
解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能2。 - 用户C提交功能3,无法push,无法提交,因为GitHub上已经有其他人提交的新代码。
解决方法:从GitHub上获取最新代码并合并到本地,提交自己开发的功能3。 - 获取最新代码
- 用户A获取最新代码
- 用户B获取最新代码
- 用户C获取最新代码
在上面红色标注的解决方法位置可以有三种方式操作,三者都可以完成合并并提交新功能,但是日志记录会有差异,如:前两者版本记录中会出现合并,而第三种可以保证版本记录干净整洁。
- 先 git pull origin master 然后 git push origin master
- 先 git fetch origin master 然后 git merge origin/master 再 git push origin master
12345678910111213141516
用户A:touch4.pygit add .git commit -m'功能4'git push origin master用户B:touch5.pygit add .git commit -m'功能5'git push origin master# 报错,因为GitHub中已经有人提交新代码git pull origin mastergit push origin master
- 先 git fetch origin master 然后 git rebase origin/master 再 git push origin master
123456789101112131415161718
用户A:touch4.pygit add .git commit -m'功能4'git push origin master用户B:touch5.pygit add .git commit -m'功能5'git push origin master# 报错,因为GitHub中已经有人提交新代码git fetch origin mastergit rebase origin/mastergit push origin master
Git--代码托管/协同开发的更多相关文章
- Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码
前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...
- 国内2大Git代码托管网站
可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS社区.GitHub真正迷人的是它的创新能力与Geek精神,这些都是无法模仿的. ...
- oschina(开源中国)的Git代码托管平台使用教程
oschina(开源中国)的Git代码托管平台使用教程 第一章 平台介绍 一. Git@OSC简介 开源中国的Git@OSC一个账号最多可以创建1000个项目,包含公有和私有,开源中国代码托管地址:h ...
- 程序员必须知道的几个Git代码托管平台
上一篇博客中2015继续任性——不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平 ...
- 程序员必须知道的几个Git代码托管平台(转)
上一篇博客中2015继续任性——不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平 ...
- 【转】程序员必须知道的几个Git代码托管平台
一.VS2013中克隆远程Git仓库和SSH的配置 1.VS2013中克隆远程项目 首先感谢园友的评论和补充,今日又仔细看了一下,VS2013中是可以克隆项目的,只是我一直用的GitHub来克隆的 ...
- 程序员Git代码托管平台
程序员Git代码托管平台 说到Git代码托管平台,首先推荐的是GitHub,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有 仓库要收费,如果你做的是一个开源项目,可 ...
- git 代码托管使用方法
Git代码托管 1 准备材料 在coding,github这些代码托管网站上申请一个账户. Linux平台什么需要一个git,如ubuntu 需要 $ sudo apt-get install git ...
- Visual Studio C# 利用git和github协同开发时产生冲突的解决办
Visual Studio C# 利用git和Github协同开发时产生冲突的解决办法 前言:在前两天的助教作业中,发现了自己没有办法解决在用vs开发C#的窗体项目的过程中产生的冲突问题,在查阅了资料 ...
随机推荐
- 手机估值计算的jquery代码
<script type="text/javascript"> $('#inquiry').click(function(){ var total=0; var cou ...
- (32)C#文件读写
一.File 类 这是一个静态类,提供用于创建.复制.删除.移动和打开单一文件的静态方法,并协助创建 FileStream 对象 using System.IO; 没有构造函数和属性 写入数据 1. ...
- 利用MAP动态创建C++类对象
MFC的CRuntimeClass利用链表实现了C++类的动态创建.但是如果项目中对动态创建的要求比较低,我们完全可以利用map实现简单的动态创建. http://blog.csdn.net/yeji ...
- Xamarin XAML语言教程通过ProgressTo方法对进度条设置
Xamarin XAML语言教程通过ProgressTo方法对进度条设置 在ProgressBar中定义了一个ProgressTo方法,此方法也可以用来对进度条当前的进行进行设置,ProgressTo ...
- SQL Server查看Sql语句执行的耗时和IO消耗
原文:SQL Server查看Sql语句执行的耗时和IO消耗 在做系统过程中,经常需要针对某些场景进行性能优化,那么如何判定性能优化的效果呢?肯定需要知道优化之前Sql语句的耗时和优化之后Sql语句的 ...
- java随机打乱集合顺序
public static void main(String[] args) { List <Integer> intList = new ArrayList<Integer> ...
- 【Linux】CentOS7上安装JDK 和卸载 JDK 【rpm命令的使用】
之前有过一篇在CentOS7上安装JDK的文章:http://www.cnblogs.com/sxdcgaq8080/p/7492426.html 在这里又说一次,是要使用rpm命令安装JDK的rpm ...
- jqGrid怎么设置初始化页面时不加载数据(不向服务器请求数据)
最近做一些表格一直用到jqGrid,今天遇到一个问题: 1.就是页面加载的时候数据不显示,点击搜索才根据请求从服务器返回并显示内容. 2.默认不从服务器请求数据(不然在开发者工具下会显示请求不到数据的 ...
- 配置php扩展memcache
配置php扩展memcache 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 nginx-1.12.2 php-5.5.38 ...
- 理解支持向量机(四)LibSVM工具包的使用
LibSVM是一款简单易用的支持向量机工具包.包括了C和Java的开发源代码.大家能够訪问其官网进行了解和下载相关文件. 这里以其官网的第一个数据集a1a 为例.练习使用多项式核和径向基核来对数据集进 ...