Git代码托管服务
Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
- gitHub( 地址:https://github.com/ )
是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub - 码云(地址: https://gitee.com/ )
是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快 - GitLab (地址: https://about.gitlab.com/ )
是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
Github简介
- github是一个git项目托管网站,主要提供基于git的版本托管服务
- github是一个基于git的代码托管平台, Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。
主要步骤:
1. 创建本地项目
创建一个 Git 目录,执行git bash here。
进行初始化操作:执行完初始化后,会在该目录生成 .git目录。
执行以下两行代码:设置局部用户签名和邮箱,全局的需要在config后加 - - global
git config user.name "powerfulDN"
git config user.email "[email protected]"
2.提交代码到本地库
git add love.txt
git commit -m "love form zhangsanatguigu" love.txt
3. 登录账号到github,创建远程仓库
填写创建仓库信息
创建后出现仓库地址,注意:点一下HTTPS,换下地址。
4.本地项目推送到远程库 GitHub上
给网址添加别名
在 .git 中的config 文件中就会增加此网址。
然后执行 ogit push <远端代号> <本地分支名称>
- <远端代号> 是指远程链接的代号
- <本地分支> 是指要提交的分支名字,比如master
- 例如:git push origin master
这样就会提交到GitHub上去,期间会弹出GitHub用户密码登录。
5. 从GitHub上克隆一个项目
登录其他GitHub账户,搜索用户,获取仓库连接
新创建个文件夹gitFirst,在文件夹中开一个 Git Bash Here
6. 修改信息
克隆下来的工程没有账户信息,需要自己在创建一个用户,但是不需要初始化了。
创建用户,发现并不能创建,原因是你不在 .git 路径下执行,
切换到 .git目录,在创建用户和邮箱。
7. 编辑文件,保存到暂存区,在保存到本地库。
8.本地库提交到远程库,权限不够
1.注:
- clone会自动关联远端地址为origin默认名称,所以不需要git remote …
- 账户提交修改内容,访问被拒绝.权限不够.
- 以上对项目的操作方式,必须是项目的创建者或者合作伙伴。
- 合作伙伴添加方式如下图: 在项目中点击settings页签,然后点击Collaborators,然后在文本框中搜索合作伙伴的邮箱或者账号。点击添加。
在邀请的伙伴消息会发送到邮箱,点击。
这样就会跳转到GitHub页面
如下说明合作成功。
这样提交修改权限就OK了。
查看GitHub 修改结果。
9. 更新本地文件
查看文件内容。
协作冲突
在上传或同步代码时,由于你和他人都改了同一文件的同一位置的代码,版本管理软件无法判断究竟以谁为准,就会报告冲突,需要程序员手工解决。
首先,两个用户有用相同的版本工程,第一用户修改了工程并提交。
代码如下:
第二个用户也修改了相同的文件并提交到远程仓库。
出现错误,版本冲突问题,解决办法如下:
出现错误的用户先pull(拉下来)就会有冲突,合并冲突,再push,OK
合并冲突之后,在再本地提交到本地仓库。
注意提交到本地仓库时是提交全部文件 git commit -m “提交说明” ,不能提交单独的文件了。如下所示:
提交结果如下:
而冲突解决完后,主用户只需要执行 git pull 工程路径 分支名称 即可
例如:git pull origin master
跨团队协作
1.Fork
- 概念:
现在的情景是,用叉子把别人的东西(copy no cut)叉到你的碗里~
就是把别人的项目clone一份,但是owner变成自己,这样你就可以在遵守Open source license的前提下任意修改这个项目了。
相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,
这样原项目的作者就可以将你修改的东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在大家共同的努力下不断壮大和完善。
- 流程:(zhangsan和lisi是一个团队的人,wangwu是另一个团队的人)
第三方账号登录(wangwu),搜索某账号找到某项目(zhangsan),然后点击Fork按钮,这样就将该项目克隆一份到当前账号(wangwu)内,然后进行修改,提交pull request,告诉对方(zhangsan)已经修改了,请求合并;
当前用户登录(zhangsan)后,可以看到小铃铛中的消息提醒,查看到pull request,然后,选择合并或拒绝。
执行步骤:以zhangsan,wangwu 为例
① [wangwu]获取[zhangsan]的项目URL
②[wangwu]点击[Fork],产生分支
③[wangwu]修改项目文件.(可以pull本地后修改,也可以在github上直接进行修改.)
④[wangwu]-> [New pull request]
⑤[wangwu]->[Create pull request]->[填写pull request信息]
⑥分支已提交到主分支
⑦[zhangsan]和[lisi]都可以看到[wangwu]提交的项目内容.
⑧[zhangsan]合并项目,点击[Merge pull request]->点击[Confirm merge]
⑨[zhangsan]查看项目代码,合并完成,OK
zhangsan和lisi 都执行$ git pull origin master,就可以下载到本地仓库了。