gpt4 book ai didi

git - 为什么 git svn dcommit 会丢失本地分支的 merge 提交历史?

转载 作者:IT王子 更新时间:2023-10-29 01:25:40 33 4
gpt4 key购买 nike

我有一个使用 git svn clone 创建的本地 git 存储库。我创建了一个本地分支,进行了一些更改,然后切换回 master,git svn rebase 如果一切正常,我将我的分支 merge 回 master。然后树看起来像这样:

alt text http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

有时,稍后当我再次 git svn rebase 并进行一些远程更改时,它会丢失 a_branch 被 merge 到主线中的事实,树看起来像这样:

alt text http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

这是为什么呢?我能阻止吗?有没有一种简单的方法可以判断一个分支是否已 merge ,或者我应该在完成后删除我的分支,这样我就不会忘记 merge 和未 merge 的内容吗?

最佳答案

git-svn 手册页建议您不要使用 merge 。这是一个副作用。由于您正在重新设置分支(git svn rebase 有点像“git pull --rebase”),它有效地重写了历史。它可能会丢弃任何已经在 subversion 上游的本地提交,例如 merge ,并且只保留那些真正存在于 svn 存储库中的提交。由于本地分支的简单 merge 提交在 SVN 中没有等效项,因此您只能提交“真正的”更改,因此这些是在新的重新设置基础的 master 分支中看到的唯一更改。

理想情况下,您的本地分支应该只 merge 快进,即不生成 merge 提交。如果不是这种情况,那么您应该考虑将本地分支 rebase 到 master 而不是 merge 它。这避免了完全创建 merge 提交。

关于git - 为什么 git svn dcommit 会丢失本地分支的 merge 提交历史?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/425766/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com