git下的团队合作模型及git基础知识汇集
https://www.atlassian.com/git/tutorials/syncing/git-fetch
Syncing
svn使用单个中央库来作为开发者之间沟通的桥梁,而协同合作是通过在开发者和中央库之间传递changeset来实现的。这种情况对于GIT的协同模型是有区别的,在git下每一个开发者都拥有他们自己的整库copy。取而代之于从working copy来提交变更集到一个中央库中,git允许你在不同的repo之间分享整个分支。
下面的命令允许你管理你和其他repo之间的连接,通过push 一个分支到其他的repo你实现发布本地history,通过pull一个branch到你自己的repo来获取他人的contribution.
Git remote
git remote命令允许你来create,view和delete和其他repo的connections. Remote connections可以这样来理解: 他们更像是bookmarks,而不是其他repo的直接连接。
例如,下面的图显示两个remote connections,一个是从你的repo到central repo,而另一个则是你和John的repo的连接

常用命令: git remote -v/git remote add <name> <url>/git remote rm <name>/git remote rename <old-name> <new-name>
注意:
git设计的目标是它会给每一个开发者一个完全独立的开发环境。这意味着信息并不会自动地在repo之间自动流转。相反地,开发人员需要手工的pull upstream commits来获取到local repo中,或者手工地push local commits到central repo.这个git remote命令实际上仅仅是一种传递URL的方便方法到这些sharing目的的commands.
Origin Remote
当你通过git clone来clone一个repo时,git会自动地创建一个被称为origin的remote connection指向到被cloned的repo.这对于开发者创建central repo的一份拷贝是非常方便的,因为这为开发者提供一种便捷pull upstream changes或者publish local commits的方法。这种行为也是为什么大多数git-based项目称他们的中央库为origin的原因。
Repository URLs
Git提供很多种方法去引用一个remote repo.两种最简单的方式是HTTP或者SSH.
HTTP方法是一种非常简单的允许匿名只读访问repo的方式,比如
http://host/path/to/repo.git
但是,通常是不允许push commit到一个http地址url上面的。需要读写一个repo,你必须使用ssh方式:
ssh://user@host/path/to/repo.git
你必须要有一个在host machine上的合法ssh帐号。
除了origin,创建一个连接到你的同事的repo上去的连接也是非常必要和方便的。比如,如果你的搭档John,维护了一个可以公开访问的repo在dev.example.com/john.git这个url的话,你可以通过过下面的命令增加一个connection
git remote add john http://dev.example.com/john.git
有了上面这种访问其他开发者的repo的简单方式后,这就允许人们绕开central repo来私下协同。这种模式对于小团队做大项目时是非常有用和高效的!!
git fetch
git fetch这个命令从一个remote repo来向你的local repo导入commits。这些commits导入后的结果是他们被保存在一个remote branch,而不是local branch上。这种模式就让你在集成remote commit之前来评审这些变更有了机会!
git fetch <remote> <branch>
Fetching这个动作完成的是当你希望查看其他人的工作时需要做的工作。既然被fetched的content是以一个remote branch来呈现的,那么这个动作对于你的local dev是没有任何影响的。这也就是说fetching是一个在外部变更落地前来review评审的安全的方法。
Remote branch
Remote branch和local branch是类似的,不过remote branch是代表着是来自于其他人的repo的commit。你可以像checkout一个local branch一样来checkout一个remote branch,但是这样做你将被置入detached HEAD state(就像checkout一个old commit一样的效果)。你可以把他们想象成一个read-only的分支。要想查看有哪些remote branches,只需要git branch -r命令参数即可。remote branch总是冠之以remote connection name,所以你永远不会和本地branch搞混淆。比如,下面的代码片段展示了remote branch的情况:
git branch -r
# origin/master
# origin/develop
# origin/some-feature
你可以通过git checkout origin/develop;git log来查看这些remote分支上有了哪些commit改动。如果你确认这些commit可以进到你的local branch上的话,你只需要git merge即可。
所以,对于git来说,你需要本地和远程的remo同步的话,你需要有两步:1.fetch,2.merge
而git pull则一步完成了上面的两个工作。
git下的团队合作模型及git基础知识汇集的更多相关文章
- 使用git 高效多人合作
复习一下... 附加学习链接: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/) ...
- vs推送git失败,修改git下config的Log
一开始写完程序套推送到Git中,然后就来了一下,下面的异常: 异常1 发布到远程存储库时遇到错误: Git failed with a fatal error. fatal: HttpRequestE ...
- GIT团队合作探讨之四--不同工作流优缺辨析
由于git非常强大,它可以支持非常多的协作模式,而可能正因为选择太多反而有时候对于我们如何开始开展团队协作无从下手.本文试图阐述企业团队中应用最为广泛的git 工作流,为大家理清思路,最大限度发挥gi ...
- GIT团队合作探讨之二--Pull Request
pull request是github/bitbucket给开发人员实现便利合作提供的一个feature.他们提供一个用户友好的web界面在进代码之前来讨论这些变更. 简单说,pull request ...
- GIT团队合作探讨之一-保持工作同步的概念和实践
感谢英文原文作者,这是我看到的关于git协同工作写的最清晰简洁的文章了: https://www.atlassian.com/git/tutorials/syncing/git-push SVN使用一 ...
- GIT团队合作探讨之三--使用分支
这篇文章是一个作为对git branch的综合介绍.首先,我们会看看创建branch,这有点像是请求一个新的项目历史.然后,我们看看git checkout是如何能够被用来选择一个branch,最后看 ...
- 版本管理·玩转git(团队合作)
如果你想让一位叫"伙夫"的程序员,和你一起开发,首先你得在你的代码仓库把伙夫添加到此项目中来,让其成为开发者. 具体步骤: 项目->管理->项目成员管理->开发者 ...
- 如何使用Git提高研发团队工作效率?
为什么使用Git 随着互联网时代的来临与发展,尤其分布式开发的大力引入,对于开发工程师来说,代码管理变成了头等难题.10多个人或者更多的成员的研发团队如何管理同一份代码,异地办公如何跟同事有效的维护同 ...
- git flow开发分支管理模型
Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化 ...
随机推荐
- element-ui日期组件DatePicker选择日期范围赋值编辑问题
最近在项目中使用element-UI的日期范围组件时遇到一个问题,相信很多人也做过这种场景,一个录入页面也同时是编辑页面,编辑的时候就需要先赋值.但是我给date组件赋值后,确无法操作了,change ...
- centos安装postgresql-rpm
rpm -ivh pgdg-centos93-9.3-3.noarch.rpm确认,回车,
- es中的date类型
JSON中没有date类型,es中的date可以由下面3种方式表示: ①格式化的date字符串,例如"2018-01-01"或者"2018-01-01 12:00:00& ...
- 《C++ Primer(第五版)》知识巩固
运行平台:ubuntu 12.04/GCC 4.8.0 第二章:基本内置类型 1.decltype类型指示符 当我们从表达式的类型来推断要定义的类型时,可以使用decltype()来解析:declty ...
- Zookeeper概念学习系列之分布式事务
不多说,直接上干货! 初学者来说,肯定会有这么一个疑问.为什么会在zookeeper里牵扯到分布式事务? zookeeper到底是什么? zookeeper实际上是yahoo开发的,用于分布式中一致性 ...
- Nginx的Permission denied错误
Nginx的Permission denied错误 环境: CentOS7 问题描述 今天搭建了nginx+uwsgi+django的环境,之后通过浏览器访问遇到下面问题: 2017/03/31 19 ...
- Atom编辑器汉化
Atom编辑器汉化成中文版 其他分享 7个月前 (04-04) 426浏览 0评论 Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器.小松今天看到了这个编辑器,而且感觉不错,推荐一下 ...
- 以前折腾的7zip图标
7z.dll替换文件 http://files.cnblogs.com/colben/7zDll.7z
- Beta阶段个人总结
Beta阶段个人总结 这一次的项目在提出项目时有很大的信心能做好,但最后结果却不尽人意.由于这次的项目一开始目标是利用Android studio构建客户端然后电脑上连接数据库,在初期还未发现什么问题 ...
- viewport其实没那么难理解
在学习移动端布局的时候,你肯定听说过"viewport"这个词,然后去问度娘或谷歌.你会惊奇的发现,这个viewport不简单,居然有那么多兄弟——layout viewport. ...