Git:大型项目开发流程的最佳实践

4
我们使用Git进行版本控制。我正在从事一个可能会大幅改变当前代码库的大型项目。总体思路是将项目拆分成较小的部分,并将它们本地提交到Git。这样更容易追踪小部分更新了什么。
然而,我的问题是一些基本元素尚未最终确定,由于与旧系统的集成可能会发生变化。如果其中一个基本元素发生变化(例如API接口、命名),所有依赖项也需要更改。这使得我无法提交任何代码。因为所提交的代码可能需要再次更改,以适应基本元素的变化。因此,我保留了所有未提交的内容,并在最终确定基本元素后逐个提交。
我不认为这是一个好的实践。我想在修改每个部分时就提交小部分。而不是等到大项目几乎完成时再提交。我该如何改进开发流程?

如果你改变了API,那么你需要改变所有使用该API的代码,有时这是一个很大的改变... - Basile Starynkevitch
2
为什么你就不能创建一个单独的分支呢? - Nadine
2
你可能会对这个感兴趣:http://nvie.com/posts/a-successful-git-branching-model/;而且rebase是你的好朋友。 :) - Mathias Dolidon
@MathiasDolidon,你说得对!变基似乎是个好主意。我可以进行第一、第二、第三次提交。每当我需要回到第一次提交进行更改时,就重新设置第二、第三次提交。与此SO中提到的相同:https://dev59.com/zXM_5IYBdhLWcg3w3nbz - Stan
1
@Stan 如果你决定使用变基而不是合并,我建议你阅读这篇文章中“变基黄金法则”下面的段落:https://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview如果你不小心的话,使用变基可能会搞乱一切。 - Nadine
1个回答

3

我建议为你的工作创建一个新分支。你可以按照以下步骤进行。

git branch

以上命令将为您提供当前分支列表,类似于以下内容:

production
* master  
testing

带有星号的是您正在使用的当前分支。请记下它。

现在创建一个新分支(这里我称之为“development”,您可以随意命名):

git branch development
git checkout development

从现在开始,您提交或推送的任何内容都将进入名为development的分支。定期执行此命令以确保与其他人使用的分支保持同步(将master替换为您之前写下的名称):
git merge master 

完成所有工作后,如果想要将您的代码添加到共享分支,请按照以下步骤操作:
git checkout master
git merge development

现在你又回到了原始分支,并且它包含了所有新代码。此时可能会出现合并冲突,你需要解决这些冲突。或者,你可以永远使用开发分支而不将更改合并回主分支。


我更像是在询问如何使用rebase来清理我的本地开发分支。因为一些基础性的更改可能需要合并到较早的提交中。 - Stan

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