我不清楚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
分支?
答案 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/
一旦你理解了这一点,分支就变得清晰了! :)