GIT:分支期间会发生什么?

时间:2011-04-29 22:35:15

标签: git version-control git-branch branching-and-merging

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

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

  2. 如果我在任何机会陷入我的本地分支机构,我该如何恢复更改(例如,我想回到我拉动主机时的方式)?回到主人并删除本地分支只是一件简单的事情吗?

  3. 我认为人们称其为版本控制的原因是因为分支,我认为...代表版本。我对么?

  4. 为什么主人叫一个分支?它不应该是树干吗? 好吧,这只是一个非常愚蠢的问题,请忽略#4 ...... 哈哈哈!

  5. 对我无辜的孩子般的问题的答案应该表示赞赏。 &lt; 3 <3

2 个答案:

答案 0 :(得分:2)

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

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

因此,只要您从master分支,就会再获得一个指向同一提交的指针。没有更少,仅此而已。现在master和branch都指向同一个提交。当你现在继续在分支中提交时,分支指针一直移动到指向它的分支特定提交。

如果我在任何机会陷入我的本地分支机构,我该如何恢复更改(例如,我想回到我拉主人的时候)?回到掌握并删除本地分支只是一件简单的事情吗?

如果您不喜欢分支,只需删除它 - git branch -d hotfix Git中的分支很便宜,就像我说的那样,它只是指向提交的指针,这意味着它是一个包含.git\refs\heads\branchname

中的41个字符SHA-1校验和

如果您不想删除分支,请使用git reset --hard HEAD~1

之类的内容重置为之前的提交

我认为人们称其为版本控制的原因是因为分支,我认为...代表版本。我是对的吗?

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

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

答案 1 :(得分:1)

我强烈建议您阅读Pro Git Book