小编典典

git branch、fork、fetch、merge、rebase 和 clone 有什么区别?

all

我想了解 Git 中分支、叉子和克隆之间的区别?

同样,当我做 agit fetch而不是 a时,这意味着什么git pull

rebase另外,与 相比是什么意思merge

我怎样才能将个人的承诺挤在一起?

它们是如何使用的,为什么使用它们以及它们代表什么?

GitHub 是如何出现的?


阅读 156

收藏
2022-03-11

共1个答案

小编典典

克隆只是存储库的副本。从表面上看,它的结果等同于svn checkout从其他存储库下载源代码。像 Subversion 这样的集中式 VCS 和像
Git 这样的 DVCS 之间的区别在于,在 Git
中,当您克隆时,实际上是在复制整个源存储库,包括所有历史记录和分支。现在,您的机器上有一个新的存储库,您所做的任何提交都会进入该存储库。在您将这些提交推送到另一个存储库(或原始存储库)或有人从您的存储库中提取提交(如果它是可公开访问的)之前,没有人会看到任何更改。

分支是存储库中的东西。从概念上讲,它代表了一条发展的线索。您通常有一个 master 分支,但您也可能有一个分支正在处理某些功能
xyz,以及另一个用于修复错误 abc
的分支。当您签出一个分支时,您所做的任何提交都将保留在该分支上,并且不会与其他分支共享,直到您将它们与相关分支合并或重新定位到相关分支上。当然,在您查看分支如何实现的底层模型之前,Git
在分支方面似乎有点奇怪。与其自己解释(我已经说得太多了,我想),我将链接到 Git 如何建模分支和提交的“计算机科学”解释,取自 Git 网站:

http://eagain.net/articles/git-for-computer-
scientists/

分叉实际上不是 Git
概念,它更像是一种政治/社会理念。也就是说,如果有些人对项目的进展方式不满意,他们可以获取源代码并自己独立于原始开发人员进行处理。那将被视为叉子。Git
使分叉变得容易,因为每个人都已经拥有自己的源代码“主”副本,因此它就像与原始项目开发人员切断联系一样简单,并且不需要像使用 SVN
那样从共享存储库中导出历史记录.

2022-03-11