Aptana、SourceTree和Git - 初学者

4
我刚开始使用版本控制,感到有些晕头转向!我正在努力理解分支、检出、合并和变基。虽然这些问题可能很蠢,但我真的需要一些帮助。
我的项目是PHP。我使用Aptana Studio作为IDE,Bitbucket和SourceTree作为Git GUI。
所以我想我现在大概知道这应该如何工作了。请告诉我哪里有错误。
比如说我想添加一个新功能。我有一个主分支。在Aptana中,我可以右键单击文件→转到团队,然后创建一个新的分支。我可以将该分支命名为feature a1bc。我进行更改。
完成此功能和所有更改后,我单击团队提交,然后团队合并分支主分支。这将我的更改合并回主仓库。
这大概是我如何添加功能等的步骤吗?另外,如果随着时间的推移我有100多个功能,我该怎么办?我保留所有这些特性分支还是在它们被合并后删除它们?

有很多无限的方法可以做到这一点。如果我有决定权,我会遵循Git-flow模型。主要是因为它有记录,并带有高级工具。 - millimoose
1个回答

7
您需要决定是否将feature分支合并回master,以快进合并(fast-forward merge)还是不快进合并(non-fast-forward merge)的方式:
由于分支是为了隔离工作而创建的(请参见“何时应该使用分支”),因此您可以在将feature分支定期合并到master的同时,继续在feature分支上开发该功能。在这种情况下,建议使用merge --no-ff(考虑到Aptana默认设置,最好在命令行中执行)。
但是,如果您创建了一个分支来隔离短期开发,则可以通过快进合并将feature分支合并回master(以完全“融合”两个分支)。如果在您开发feature期间,master有一些提交,则需要先在master上对feature进行变基,然后将feature合并到master中(这将是快进合并)。
更多信息,请参见:
- “为什么git默认使用快进合并?” - “git rebase vs git merge”

那么,当我把这些特性分支合并到开发分支后,我是否需要删除它们呢?如果不删,我最终会得到一个巨大的特性分支列表。或者有没有一种方法可以将它们从列表中隐藏,使它们不再显示? - ipengineer
@ipengineer:对于短期的“feature”分支,您可以清除它们的历史记录(压缩一些提交,重新排序),然后将该“feature”分支重新基于“master”,最后快进合并它,使该“feature”分支的(清理后的)历史记录成为“master”的一部分。因此,在这种情况下,您并没有真正删除它(因为您保留了提交),只是通过删除“feature”分支来删除指向该分支的指针。 - VonC
@ipengineer 对于长期存在的“feature”分支,您将重要提交合并回“master”,那么是的,您可以删除“feature”分支,这将删除指针,但也会“忘记”所有中间提交。 - VonC
我看过的源代码控制最佳实践解释中最清晰的之一,干得好! - Micael Bergeron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接