在Github上进行合作开发

概述

之前Github支持开源,建立私有仓库需要付费,因此一般都是在服务器上搭建自己的Git或者SVN。最近又有建私有仓库的需求,于是在Github上搜寻了一下,发现Github现在对免费用户也开放了建立私有仓库的功能,故在此纪录下所有步骤,供大家学习交流。需要注意的是,虽然Github开放了建立私有仓库的功能,但是实测免费用户最多只能够添加三位collaborators,如果是一个更大的团队进行合作开发,建议另辟蹊径,搭建自己的版本控制器,或者选择Github的付费服务。

准备工作

本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要在本机通过如下指令创建本地密钥("Email@163.com"需要修改为注册GitHub时所用的邮箱):

ssh-keygen -t rsa -C "Email@163.com"    //创建密钥

上述指令不是DOS指令,所以需要使用Git Bash进行操作。该指令会在用户目录下(C:\Users\)生成公钥和私钥,将公钥复制到Github上的SSH keys中(如下图),进行用户身份认证。只有经过身份验证,本地仓库才能获得对远程仓库的push权限,接下来就可以愉快地搞事情啦!

创建项目并初始化本地仓库

我们首先在本地创建了一个名叫iss-parent的项目,并在该工程下创建了iss-bigdata模块。

此时本地的Git仓库还未创建,我们需要在项目路径下打开Git Bash,执行以下命令,初始化本地的Git仓库:

git init

显示成功初始化一个空的本地仓库,可以看到项目目录看到.git文件夹(该文件夹是隐藏文件夹,需要设置查看隐藏文件夹才能看到)。

创建Github私有仓库

在Github repositories界面的偏右位置,点击一个显眼的绿色“New”的按钮,进入如下界面,选择private:

我们选择添加上README文件以备不时执行,并且加上gitignore,这个文件对于强迫症患者来说还是很有用的,因为.idea文件夹、编译后的文件夹、jar包之类的会一直变化,但是一般来说我们并不想把这些也push到仓库,那么此时就可以使用gitignore文件把一些不想要push的文件过滤掉。需要注意一点,如果你不慎在创建.gitignore文件之前就push了项目,那么即使在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理,所以创建仓库的同时加上gitignore文件很重要!创建成功后会跳转到如下界面:

关联远程仓库

之前已经成功创建了本地仓库,现在需要使用以下指令把本地仓库与Github上的仓库关联起来:

git remote add origin git@github.com:LookElvis/iss-parent.git

最后的参数可以在Github当前项目主界面的Clone or download获得,可以选择SSH方式或者HTTPS方式,本机之前配置了SSH,所以我们选择SSH的方式,可以直接通过身份认证。

将本地仓库推送至远程仓库

为了保证本地仓库和远程仓库的一致性,我们需要先将远程仓库的文件pull下来,使本地仓库的版本不高于远程仓库,然后再把当前项目创建的文件提交到本地仓库。

git pull origin master  #拉取远程仓库
git add .  #添加到本地仓库
git commit -m "first commit"   #提交到本地仓库

此时本地仓库已经结合了远程仓库的文件,此时可以将本地仓库的所有内容推送到远程仓库,由于远程仓库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,直接使用git push即可。

git push -u origin master

查看效果

本地效果图:

Github效果图:

此后,项目的本地文件更新后都可以通过以下命令提交到远程仓库:

git add .
git commit -m "update"
git push

例如在本地项目中添加了test.java文件后,经过以上操作,结果如图:

添加合作开发者

因为该项目在Github上还是私有仓库,所以其它人并不能看到,我们可以在Github上当前项目的Setting->Collaborators中进行设置。

以下是添加了一个合作开发者的截图,最多可添加三个合作开发者。

添加合作者后,该合作者会收到邮件进行确认,确认后该项目就对合作者可见了,最后的最后,合作开发者就可以在git clone后愉快地对项目进行push和pull了~

合作者Github仓库同步

合作开发者的git clone分为两种情况:

1、git clone源仓库;

2、fork源仓库后git clone自己的仓库。

对于git clone源仓库而言,大家都可以对仓库内容进行随意地更改修正,很方便但是不够安全。

对于fork源仓库后git clone自己的仓库而言,是开发中较为常见的一种方式,但是正常的push和pull只能对合作者自己的远程仓库进行操作,fork并不能将合作者仓库和源仓库绑定在一起,无法感知源仓库的更新,也不能将更新提交到原仓库。需要通过以下操作将开发者仓库和源仓库进行同步:

Github仓库和源码仓库同步

首先要先确定一下是否建立了主repo的远程源:

git remote -v

如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源:

git remote add upstream URL
git remote -v

然后就能看到upstream了。如果想同步原主仓库的更新,可以做如下操作将原仓库代码拉取下来并与本地代码进行合并:

git fetch upstream 
git merge upstream/master

然后需要在本地创建一个分支,不要在master上做操作:

 git checkout -b branchName

在分支下进行更新,更新完成后先进行commit,再推送到远程仓库的'branchName'分支:

git add . 
git commit -m 'anything ...'
git push origin branchName

最后,需要在Github主页点击pull request按钮,提交给项目作者,请求merge。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值