我一直在阅读git merge和git rebase操作的工作原理,我认为我对这些差异有一个非常基本的了解。我已经看过这些图表 :-) 尽管如此,我仍然不清楚在我当前的工作流程中使用哪一个最好。
我的工作是使用perforce,因为它是 SCM 系统,但我在本地使用git来跟踪本地更改、进行重构以及 git 可以带来的其他一些很酷的东西。我知道已经存在一个工具来帮助使用 git 和 perforce(例如 p4-git),但我不一定想要/需要这种开销,所以我试图让事情尽可能简单。以下是我当前创建本地 git 分支并最终集成回我们的主要 perforce 仓库的工作流程的简要说明:
我有一个主git 分支,它每晚对我们的代码库进行 p4 同步。在 perforce 同步之后,我将所有更改提交到 master 分支。实际上,我的主git 分支本质上是提交到我们的 perforce 主线的最新代码的快照。
对于我正在进行的本地更改,我总是先创建一个git 分支,然后在进行更改时 签出这个分支。
时不时地我想将我的分支更新到master的最新版本。到目前为止,我刚刚发出git merge master命令来执行此操作,并且运行良好。
当我准备好提交到实际的 perforce 仓库时,我通过签出master并发出git merge BRANCH然后将我的分支合并回我的master分支,然后使用常规 perforce 命令提交
鉴于我的工作流程,我真的应该为 Step#3 使用git rebase master命令而不是git merge master吗?根据我对rebase命令的理解,这只有在我们的perforce 主线(远程仓库)被分支时才有必要,并且我想基于这个分支创建一个新的master(比如我称之为 master-newbranch)并应用我的更改到这个新的分支。我需要先从这个分支 变基吗?
总的来说,我目前的工作流程是否有意义,或者我已经养成了一些坏习惯?