我正在使用git-svn并且已经在一个本地主题分支上进行一系列提交,并且在将我的更改合并回主服务器时遇到了一些麻烦。
这些步骤让我走到了以下的地方:
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所以我甚至不确定我所看到的是预期的行为,但似乎很可疑。我遗忘了git svn reabse
让我陷入困境吗?我该怎么做才能摆脱这种潜在的混乱局面?
答案 0 :(得分:2)
假设您正在使用trunk,请放弃合并提交
git reset --hard remotes/trunk
赶上Subversion的任何变化
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
您可能更喜欢使用squash-merge,这意味着将分支上的所有更改归结为单个提交。如上所述丢弃,获取和变基,然后
git merge --squash <topic branch>
清洁合并将转到您可以查看的索引
git diff --cached
任何冲突都将保留在工作树中,您可以使用
查看它们git diff
解决所有冲突,使用git add
,然后git commit
进行处理以结束新提交。