我正在为我的公司创建一个基本的 php 项目,到目前为止它有用户身份验证、角色、权限、组等。
我的目标是,对于我们开始的每个项目,我们都复制这个基础项目,只添加客户所需的功能。将其中的一些功能带回我们的基础项目可能会很有趣。
这是我的基本工作流程。我的问题是:如何使用 git 作为实现此工作流的工具?您能否从高层次向我解释一下,或者您是否有一些链接可以解释如何在这种情况下或类似情况下使用 git?
我使用 git 的经验减少到创建分支、进行更改然后 merge 回 master,所以我很难弄清楚如何使用 git 来实现我的目标。
更新:我觉得我遗漏了工作流程的一个重要部分:
有 master 分支,我可以随时将其部署到生产环境中。每次我开始一个新的 sprint (scrum) 时,我都会创建一个新的开发分支,并且对于我想添加到这个开发分支的每个新功能,我都会创建另一个分支(功能分支)。当我完成每个功能时,我将其分支 merge 回开发分支(开发分支是我们的暂存环境)。在冲刺结束时,我将 dev 分支 merge 到 master 分支。
这个工作流程对我来说工作得很好,我想为我使用这个基础应用程序的项目保留它。
假设我在这个基本应用程序中发现了一个错误,因此使用它的每个项目都会有相同的错误。我还希望能够将修复应用到所有项目。
感谢帮助
最佳答案
由于此处的其他答案建议使用子模块,因此我将尝试使用不同的策略并改用分支。如果您刚开始使用 git,并且不想使用子模块,则此方法更容易。此方法还假定您的项目只有一个分支。可以使用多个分支,但很难跟踪更改。
初始化一个新项目,并将基础项目添加为远程:
git remote add base <url>
在这里,base 是您分配给 Remote 的名称。 现在,创建一个代表您的基本分支的新跟踪分支:
git branch --track base-project base/master
有了这个,当远程仓库中的其他人更新基本分支时,您将能够更新它。
接下来,您需要 check out master 并更新它,以便它包含基础项目分支中的所有提交。
git checkout master
git rebase base-project
有了这个,您就可以开始在基础项目的基础上进行构建了。如果您有一些更改也希望基础项目具有,您可以使用 cherry-pick 命令单独选择特定的提交并将它们添加到基础项目分支。确保您的工作树是干净的并且您的 HEAD
指向基础项目:
git cherry-pick <commit-hash>
如果你想应用 master 引入的所有更改:
git cherry-pick ^HEAD master
然后将分支推送到远程仓库:
git push base base-project
关于git - 在这种情况下我应该如何使用git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556779/