[英]Branching and merging with Git
我不清楚Git分支如何工作的基本原则。
假设我在master
分支上有一个repo(这是我项目的主干),它在v 1.0。 然后我决定创建一个experimental
分支来做一些时髦的新东西,所以我从master分支进行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
分支?
实验分支中未经我编辑实验修改的所有v 1.0文件是否会保留当前最新的主文件(例如成为v 1.1)?
没有Git不会修改你背后的任何文件。 也许你希望它保持在1.0;)
或者我是否需要将主分支合并到实验中以防止实验分支中的所有未修改文件保持在v 1.0?
正确。
如果是这样,那么将这些1.1变化合并到实验中的过程是什么,而不会用我那些时髦的新东西污染主分支?
$ git checkout experimental
$ git merge master
在您的实验分支上,运行
git merge master
Git中的分支非常轻。 这意味着它们只是指向特定提交的指针。 提交通过父指针相互链接。 这意味着如果您引用了特定的子项,则您不知道子项(后续提交)。 合并是多个父母的承诺。 分支是由多个提交的父母指向的提交。 每个提交还指向存储库中所有文件的快照。
这个提交网称为DAG(有向无环图)。
你可以在这里读更多关于它的内容:
http://progit.org/book/ch9-2.html
和这里:
http://eagain.net/articles/git-for-computer-scientists/
一旦你理解了这一点,分支就变得清晰了! :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.