与Git分支和合并

时间:2011-12-21 20:09:55

标签: git git-branch

我不清楚Git分支如何工作的基本原则。

假设我在master分支(我的项目的主干)上有一个回购,它的版本是1.0。然后我决定创建一个experimental分支来做一些时髦的新东西,所以我从主分支做git branch experimental并添加一些新功能,并将我的更改提交给experimental

我的合作伙伴将master分支更新为v 1.1,然后将其更改到我的master分支。

experimental分支中未被我对experimental编辑修改的所有v 1.0文件是否与最新的master文件保持同步(例如成为v 1.1)?

或者我是否需要将master分支合并到experimental以防止experimental分支中的所有未修改文件停留在v 1.0?

如果是这样的话,将这些1.1变化合并到experimental的过程是什么,而不会用我那些时髦的新东西污染master分支?

3 个答案:

答案 0 :(得分:2)

  

实验分支中未经我编辑实验修改的所有v 1.0文件是否与最新的主文件保持同步(例如,成为v 1.1)?

没有Git不会修改背后的任何文件。也许你希望它保持在1.0;)

  

或者我是否需要将master分支合并到实验中以防止实验分支中的所有未修改文件保持在v 1.0?

正确。

  

如果是这样的话,将这些1.1变化合并到实验中的过程是什么,而不会用我那些时髦的新东西污染主分支?

$ git checkout experimental
$ git merge master

答案 1 :(得分:1)

在您的实验分支上,运行

git merge master

答案 2 :(得分:1)

Git中的分支非常轻。这意味着它们只是指向特定提交的指针。提交通过父指针相互链接。这意味着如果您引用了特定的子项,则您不知道子项(后续提交)。合并是多个父母的承诺。分支是由多个提交的父母指向的提交。每个提交还指向存储库中所有文件的快照。

这个提交网络被称为DAG(有向无环图)。

您可以在此处详细了解:

http://progit.org/book/ch9-2.html

在这里:

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

一旦你理解了这一点,分支就变得清晰了! :)