Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GIT:如何重新设置基础,以便在功能分支中保留最新提交_Git - Fatal编程技术网

GIT:如何重新设置基础,以便在功能分支中保留最新提交

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

新从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的父提交)

有关更多信息:

这将完全满足您的需要,假设您的功能分支是从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中的更改有关,就像基础分支的另一个重基。您能否确保您的提交哈希值实际匹配,如果没有发布更新?谢谢