3

我的问题真的很无辜。我一直在阅读 git,并且我已经知道推拉和创建分支等基础知识。我的导师告诉我,使用 git 的正确方法是提取资源,创建一个新的本地分支,传输和编辑该本地分支,完成后,返回主分支并将其与本地分支合并。现在我的问题是,幕后究竟发生了什么?

  1. 我的意思是,当 git 创建本地分支时,它是否会创建您可以编辑的主分支的副本?如果有,这些副本在哪里?

  2. 如果我在本地分支上搞砸了,我该如何恢复更改(例如,我想回到我拉主时的方式)?回到master并删除本地分支只是一件简单的事情吗?

  3. 我想人们之所以称之为版本控制是因为分支,我认为它......代表版本。我对么?

  4. 为什么master叫分支?不应该是后备箱吗?好吧,这只是一个非常愚蠢的问题,忽略#4……哈哈哈!

对我天真幼稚的问题的回答将不胜感激。<3 <3 <3

4

2 回答 2

2

我的意思是,当 git 创建本地分支时,它是否会创建您可以编辑的主分支的副本?如果有,这些副本在哪里?

分支不是副本。Git 中的分支只是指向最新提交的“指针”。提交对象指向他们的父母,这就是你获得整个“分支”的方式。

所以一旦你从 master 分支,你就会得到一个指向同一个提交的指针。不多不少,不多不少。现在 master 和 branch 都指向同一个提交。当您现在继续在分支中提交时,分支指针不断移动以指向其特定于分支的提交。

如果我在本地分支上搞砸了,我该如何恢复更改(例如,我想回到我拉主时的方式)?回到master并删除本地分支只是一件简单的事情吗?

如果您不喜欢分支,只需删除它 - git branch -d hotfixGit 中的分支很便宜,就像我说的,它只是一个指向提交的指针,这意味着它是一个包含 41 个字符的 SHA-1 校验和的文件.git\refs\heads\branchname

如果您不想删除分支,请使用类似的方法重置为先前的提交git reset --hard HEAD~1

我想人们之所以称之为版本控制是因为分支,我认为它......代表版本。我对么?

我们称它们为版本控制,因为每个修订或提交都是更改的单位。分支是自特定提交或分支点以来的更改集合。\

PS:我当然是在解释 ProGit,所以既然您评论说您已经阅读过它,我不确定我的回答是否会有所帮助。

于 2011-04-29T22:48:18.773 回答
1

我强烈推荐阅读Pro Git Book

于 2011-04-29T22:37:21.383 回答