GIT:如何重新设置基础,以便在功能分支中保留最新提交
新从svn过渡到GIT世界 我有我的主分支: A(初始提交)-B-C-D-E 我的功能分支: A(初始提交)-B-Z 我希望将我的功能分支重新设置为master,以便: A B C D E Z 这怎么可能呢? 我尝试签出到FeatureBranch并执行git rebase master,但显然这会给我带来很多冲突和新添加的特性文件被删除。我知道这是像A-B-Z-C-D-E一样的重定基调拯救了我的一天(感谢@mrek的评论。他的建议给出了方向): git签出功能分支机构 git重新基址--在masterbranch功能分支上^ (^表示使用featurebranch^引用的featurebranch的父提交) 有关更多信息: 以下内容拯救了我的一天(感谢@mrek的评论。他的建议给出了方向): git签出功能分支机构 git重新基址--在masterbranch功能分支上^ (^表示使用featurebranch^引用的featurebranch的父提交) 有关更多信息:GIT:如何重新设置基础,以便在功能分支中保留最新提交,git,Git,新从svn过渡到GIT世界 我有我的主分支: A(初始提交)-B-C-D-E 我的功能分支: A(初始提交)-B-Z 我希望将我的功能分支重新设置为master,以便: A B C D E Z 这怎么可能呢? 我尝试签出到FeatureBranch并执行git rebase master,但显然这会给我带来很多冲突和新添加的特性文件被删除。我知道这是像A-B-Z-C-D-E一样的重定基调拯救了我的一天(感谢@mrek的评论。他的建议给出了方向): git签出功能分支机构 git重新基址--在ma
这将完全满足您的需要,假设您的功能分支是从master创建的:
git checkout feature
git rebase master
# fix possible conflicts
git checkout master
git merge feature
首先,功能分支上的git rebase master将获得Z
并将其移动到临时空间。然后将C
、D
和E
带到功能
,最后从E
顶部的临时区域应用Z
导致A B C D E Z
此时,如果存在任何冲突,只需运行git mergetool
,解决冲突,然后git-rebase--继续
如果您在修复冲突时遇到任何问题,可以取消,请运行git-rebase--abort
并重试
在此之后,随后的合并
返回主控系统将是一个快进
(无冲突)
我认为这是一个很好的方法,因为您可以让您的特性分支与master保持最新,并且您的新代码始终在它之上,并且您可以直接解决特性分支上的任何潜在冲突
另外,到后台主服务器的合并总是干净的,您可以使用git merge-feature--no-ff
创建合并提交
值得一提的是,这种方法对我来说已经有效很长时间了。我使用kdiff3
作为mergetool
这将完全满足您的需要,假设您的功能分支是从master创建的:
git checkout feature
git rebase master
# fix possible conflicts
git checkout master
git merge feature
首先,功能分支上的git rebase master
将获得Z
并将其移动到临时空间。然后将C
、D
和E
带到功能
,最后从E
顶部的临时区域应用Z
导致A B C D E Z
此时,如果存在任何冲突,只需运行git mergetool
,解决冲突,然后git-rebase--继续
如果您在修复冲突时遇到任何问题,可以取消,请运行git-rebase--abort
并重试
在此之后,随后的合并
返回主控系统将是一个快进
(无冲突)
我认为这是一个很好的方法,因为您可以让您的特性分支与master保持最新,并且您的新代码始终在它之上,并且您可以直接解决特性分支上的任何潜在冲突
另外,到后台主服务器的合并总是干净的,您可以使用git merge-feature--no-ff
创建合并提交
值得一提的是,这种方法对我来说已经有效很长时间了。我使用kdiff3
作为mergetool
我想我一开始误解了你的问题,因为我假设提交是从左到右显示的,这是最常见的(至少在英语中)。我认为你是在向他们展示时间倒转,所以Z和E是最近的,A是最老的吗?@IMSoP是的,这就是我的想法。如果你有冲突,你必须以某种方式解决它们。可能会有帮助。我想是git-rebase--on
。在回答之前先澄清一下:如果您所说的是正确的,那么您的git-rebase master
命令应该可以工作。您描述的严重冲突似乎与master中的更改有关,就像基础分支的另一个重基。您能否确保您的提交哈希值实际匹配,如果没有发布更新?谢谢我想我一开始误解了你的问题,因为我假设提交是从左到右显示的,这是最常见的(至少在英语中)。我认为你是在向他们展示时间倒转,所以Z和E是最近的,A是最老的吗?@IMSoP是的,这就是我的想法。如果你有冲突,你必须以某种方式解决它们。可能会有帮助。我想是git-rebase--on
。在回答之前先澄清一下:如果您所说的是正确的,那么您的git-rebase master
命令应该可以工作。您描述的严重冲突似乎与master中的更改有关,就像基础分支的另一个重基。您能否确保您的提交哈希值实际匹配,如果没有发布更新?谢谢