我使用的是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
结束新的提交。