2011-12-21 211 views
1

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

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

我的合作伙伴去更新master分支到1.1版,我把他的修改放到我的master分支中。

experimental分支中未被修改为experimental的所有v 1.0文件保持与最新的master文件(例如,成为v 1.1)?

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

如果是这样,那么将这些1.1更改合并到experimental而不污染master分支与我的时髦的新东西是什么?

回答

2

将所有的1.0版文件在实验的分支,不是由我的编辑修改,以与最新的主文件实验逗留电流(如成为v 1.1)?

否Git不会修改任何背后的文件。也许你想它保持在1.0;)

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

正确。

如果是这样,那么将这些1.1版本的更改合并为实验的过程,同时不会污染我的时髦新东西的主分支?

$ git checkout experimental 
$ git merge master 
1

在您的实验性分支,运行

git merge master 
+0

所以'git merge master'会将主分支中的所有新东西放到'experimental'分支中,而不会将任何'实验性'分支变化放回'master'中?谢谢! – julio 2011-12-21 20:14:29

+0

是的,这是正确的。 – 2011-12-21 20:16:22

1

分行GIT中是重量很轻。这意味着它们只是指向特定提交的指针。提交通过父指针相互链接。这意味着如果你有一个特定的引用,你就不知道这些孩子(随后的提交)。合并是与多个家长进行的。分支机构是碰巧由多个承诺的父母指出的承诺。每个提交还指向存储库中所有文件的快照。

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

你可以阅读更多关于它在这里:

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

这里:

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

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