git-svn-如果我忘记在合并之前进行git-svn-rebase,该怎么办



我使用的是git-svn,在一个本地主题分支上进行了一系列提交,在将更改合并回master时遇到了一些问题。

这些步骤让我走到了现在的位置:

git commit  (on topic branch)
git checkout master
git svn fetch (numerous files pulled down from origin)
git merge <topic branch>

在这一点上,我有一个合并冲突,我修复了它,然后做了一个git add <file>来添加我的修复文件。

现在,我的git status报告所有文件(包括从服务器获取的所有文件(都是要提交的更改。我忘了做git svn rebase,我想这是我的问题。

一般来说,我是个新手,所以我甚至不确定我看到的是不是预期的行为,但这似乎是可疑的。我被遗忘的git svn reabse给我带来麻烦了吗?我该怎么做才能摆脱这种潜在的混乱?

假设您使用的是trunk,则放弃合并提交

git reset --hard remotes/trunk

赶上子版本的任何变化

git svn fetch
git svn rebase

现在你有两个选择。你可以重新调整你的主题分支的基础,并将其合并:

git checkout <topic branch>
git rebase remotes/trunk
git checkout master
git reset --hard remotes/trunk
git merge <topic branch>
git svn dcommit

您可能更喜欢压缩合并,这意味着将分支上的所有更改打包到一个提交中。如上所述丢弃、提取并重新建立基础,然后进行

git merge --squash <topic branch>

干净的合并将进入索引,您可以使用进行审查

git diff --cached

任何冲突都将留在工作树中,您可以通过看到它们

git diff

解决任何冲突,用git add暂存,然后用git commit结束新的提交。

最新更新