git中的repository和branch有什么区别?
熟悉git的人可以帮助我理解回购和分支之间的区别。我最近被介绍给git,并且有点难以理解它们。我被告知将一个远程回购(例如foo)克隆到我的本地盒子。然后创建一个本地分支。在分支上工作(更新/创建/删除文件)并添加/提交/推送到远程服务器(例如bitbucket)。第二组眼睛检查分支后,说好。然后它被合并到开发或主分支。git中的repository和branch有什么区别?
那么存储库在这张图片中扮演什么角色?对我来说,我运行的所有操作都是针对分支的...
A 存储库是您在计算机上克隆的整个项目(目录和文件)。 A 分支是您的存储库的版本。
存储库包含多个分支(=存在多个版本的存储库,并行开发了多个功能)。毕竟,对代码进行版本控制的目的是可以同时处理项目的多个方面 - 每个方案都在不同的分支中发展。 Git在“分支”旁边使用表达式“working tree”(表示工作台)。充满意象,不是吗?
相关:如果你想知道differences between local and remote branches。
关于你处理分支的方式:
克隆远程回购(例如FOO)到我的本地框。然后创建一个本地分支。在分支上工作(更新/创建/删除文件),并添加/提交/推送到远程服务器
这是一个很好,干净的方式来使用git。我建议你总是这样进行:
----A---B---C-- (REMOTE, master)
|
| (Pull to local : `git pull origin master`)
v
----A---B---C-- (LOCAL, master)
然后从本地主机(git checkout -b branch1
)创建一个分支,它的工作,提交更改,并推送到远程:
----A---B---C------ (REMOTE, master)
----A---B---C---D-- (REMOTE, branch1)
^
|
| (Push to remote : `git push origin branch1`)
----A---B---C------ (LOCAL, master)
\
D---- (LOCAL, branch1)
然后,当对你的功能/修复/无论什么感到满意,你可以合并branch1
到master
。
存储库包含有关项目的所有信息,包括所有更改的历史记录。每个更改都以“提交”的形式输入到存储库中。
为了显示分支机构和存储库之间的差异,我将描述您提到的过程,并指出正在使用的分支机构和存储库的方式。这不是一个git教程,只是一个例子,所以我们可以谈论分支和回购。
通常存在一个远程存储库,用户可以获取其副本并向其提交更改。没有实际的开发工作直接在远程仓库中完成。
用户通过克隆它来获取远程存储库的第一个副本。这将在用户机器上创建一个本地存储库。本地回购是远程回购的完整副本。
分支只是指向存储库中某个提交的指针。 在最简单的情况下,有一个名为“master”的默认分支,master指向最近的提交。 每个提交都由一个数字标识,这是当时回购的哈希。例如,在这种情况下,master可能指向提交:
2d2cd6cf6f634e88ad19fa454fdcd2e1c26009c7
开发人员可以克隆远程回购和结账分支主控。 然后创建并签出开发分支(例如featureX-dev)。
git checkout -b featureX-Dev
此时,两个分支(master和featureX-Dev)指向相同的提交。 更改您的文件。 将更改提交到分支featureX-dev的本地副本。 现在,在您的本地资源库中,分支featureX-Dev指向比master更新的提交。 将分支featueX-dev推送到远程回购,以便它可以被审查。
git push -u origin featureX-dev
-u用于第一次将分支推送到远程,告诉git你想跟踪这个分支。
其他开发人员(已经克隆了远程回购)可以通过执行拉动从远程存储库获取分支featureX-dev。
当他们检查并告诉你没关系的话,你可以将分支featureX-dev和你的本地副本中的主副本合并,并推送主副本。
但是等等!如果其他开发人员已将其更改推送到远程主服务器,该怎么办?
在当地的回购您结账主
git checkout master
然后拉主从远程
git pull origin master
你必须自己最后一次提交的新变化,别人做,和硕士点。 现在,如果没有人已经改变了,您可以合并您的Dev分支到主
git merge featureX-dev
的本地副本高手有没有做过伤害。合并只会将您的提交添加到主分支。 解决冲突(如果有),然后将主机推回到远程。
Randy Leberknight,感谢您花时间回复我。您的详细回复肯定会巩固对我学习过程的理解。祝福有一天! – DaeYoung
回购包含多个分支 - 正如你所说,你*添加*分支 –
不是我downvote。您可以将回购看作是远程分支机构居住的地方。本地分支是您完成所有工作的地方,本地分支与远程分支同步。 –