我在heroku上部署了一个应用程序。我已经将我的 GitHub 帐户连接到 heroku,所以如果我将任何东西推送到master
分支,它会自动 部署在 Heroku 上并提供给客户。
为了改进此过程,我创建了一个development
分支,在开发和测试代码时推送所有代码。一旦代码准备就绪,我想将其推送到要部署在 heroku 上的master
分支。
我做了什么:
创建分支
git branch development
交通发展处
git checkout development
将更改推送到开发分支
git add .
git commit -am "did something"
git push -u origin development
所有这些都奏效了。
我的问题:
我无法从控制台找出正确的过程以及如何执行以下操作:
- 将更改从
development
推送到master
分支,因此表示它们是相等
的 - 我是否需要在每次开发时创建一个新分支,或者我可以继续重用
development
分支?
您有两个问题:
- 从
development
分支更新master
分支,以及 - 确定常规工作流程。
更新master
分支
使主节点与开发分支保持同步的最简单方法是在本地合并开发分支,然后将更新的主节点推送到 GitHub 存储库:
git checkout master
git merge development
git push origin master
如果没有直接在主分支上完成任何工作(正如您在问题中提到的(,合并应该是快进的。
然后,您可以再次签出开发分支并继续工作:
git checkout development
总而言之,此过程的图形将遵循如下内容:
-- A -- B -- C merge -- A -- B -- C
| | -------> |
master development master, development
现在,进入更棘手的部分:
选择您的工作流程
管理分支的方法有无数种,并且没有适用于各种规模和复杂性项目的规范的通用解决方案。这就是像 git 这样灵活的系统的强大之处,但同时也有一个小缺点,因为你应该选择哪个系统?
我建议查看一些关于 git 工作流程的文章和博客文章,然后选择适合您的文章和博客文章。如果项目的边界条件发生更改,您始终可以根据需要重新评估和更改该项目的 git 工作流。
我是否需要在每次开发时创建一个新分支,或者我可以继续重用开发分支吗?
通过上述过程,您可以继续处理开发分支,而无需任何额外步骤。
我建议您花点时间观看一些 git 工作流视频,您应该为每个新功能创建一个分支,在实际项目中,分支不应保持打开状态超过 2 天以避免合并问题。
使用git merge
将更改从分支导入到主 https://git-scm.com/docs/git-merge
-
您可以将开发分支合并到 master 中,也可以在开发分支上重新设置主节点的基址。有些人认为一个解决方案比另一个更好,但这取决于你。以下是关于差异的良好解释。
-
这个问题实际上是关于工作流程的。唯一的规则是,所有正在处理该 git 存储库的人都同意他们将做什么。所以如果你一个人,你可以随心所欲。但是再一次,有些人会说你必须为每个功能创建新的分支,而这又取决于你。
-
我建议您为 Git 使用一些 GUI 客户端。其中包括SourceTree,GitKraken或GitHub Desktop。我目前正在使用 GitKraken,它允许非常轻松地处理 git 流。