【发布时间】:2015-04-17 12:07:58
【问题描述】:
在我的 git 工作流程中,我们有一个主存储库和一个分支,master。每个人都从远程 master 拉取,每个人都向远程 master 推送。在准备功能时,我想在自己的分支中工作。到目前为止,我的历史是这样的:
git pull --rebase
git checkout -b new_feature
<make some commits>
git checkout master
git pull --rebase
现在我想合并分支,这就是我需要的:
- 我的本地 master 分支中没有合并提交。
- 在我的 new_feature 分支中所做的所有提交都合并到 master 中,就像我在 master 中所做的一样。
- 所有合并的提交都将在我的本地远程头指针顶部的某个地方合并。
我最关心的是第 3 项,何时需要我可以安全地推送更改。如果合并的提交与 head 之前的提交交织在一起,那么我将在推送时遇到问题,请参阅我遇到的相关问题:git: Pushing Single Commits, Reordering with rebase, Duplicate Commits。
我已阅读以下内容:
- http://mettadore.com/2011/05/06/a-simple-git-rebase-workflow-explained/
- Keep commits history after a 'git merge'
- How do you rebase the current branch's changes on top of changes being merged in?
我认为我需要这样做:
git checkout master
git pull --rebase
git checkout new_feature
git rebase master
git checkout master
git rebase new_feature
git push
我的理解是
git checkout new_feature
git rebase master
将使 new_feature 看起来好像它是从新的当前头部分支出来的。真的吗?还有那个
git checkout master
git rebase new_feature
将 new_feature 放在 master 之上。那是对的吗?如果是这样,这就是我困惑的重点。如果 "git rebase master" 将 master 提交放在 new_feature 的底部,那么为什么 "git rebase new_feature" 将 new_feature 提交放在 master 的顶部,即为什么它不做相反的事情?
【问题讨论】:
标签: git version-control branch history rebase