Jos*_*eon 4 git rebase git-push git-history git-history-rewrite
我们正在使用 git 中的一个非常简单的结构。
首先我们有我们的master分行。
下面我们有develop
最后我们可以拥有任何feature分支
我们仅使用 rebase 来更新分支上的历史记录,然后转发到上述分支。
每周,我们的develop分支都会更新一些features. 这个分支被重新定位并合并到 master 中(从develop到master)。
问题
当我们变基并合并develop到时master,有时会出现冲突,我必须通过master在我的develop分支中执行变基来修复它们。解决冲突后,我执行git push --force-with-lease将更改上传到远程。
在此过程之后,由于强制推送,开发的历史已被更改。
问题在于,当另一位开发人员正在feature基于develop强制推送之前(develop强制推送之前)的分支进行工作时。
我们如何feature使用新的develop分支历史记录来更新该开发人员的分支。git rebase develop 因为,在我们的分支机构内部进行操作时feature。我们最终会产生很多冲突。
如果我理解正确的话,开发者是这样的情况:
--*--x--*--m <- master
\
\
*--*--f <- develop
\
a--b--c <- feature
Run Code Online (Sandbox Code Playgroud)
在他获取更新后,他到达:
--*--x--*--m <- master
\ \
\ *--*--f' <- develop
*--*--f
\
a--b--c <- feature
Run Code Online (Sandbox Code Playgroud)
a, b, c要仅在 之上重播develop,请应用 @Vitali 建议的命令:
f之间的原始分叉点,featuredevelopgit rebase --onto develop <f> feature如果一切顺利的话,他会达到以下状态:
--*--x--*--m <- master
\
*--*--f' <- develop
\
a'--b'--c' <- feature
# only 'a--b--c' are replayed from the original 'feature' branch,
# not '*--*--f'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1779 次 |
| 最近记录: |