2011-08-24 168 views
1

今天我遇到了一个奇怪的问题,当“dcommitting”我的主HEAD到谷歌代码svn存储库。下面是我所做的一个摘录。我几乎可以说我确实有过冲突,但我认为这不太可能。我越来越有经验与GIT但有时我仍然感到困惑......提交svn unstages最后一次提交?

在我的演讲分支有些变化......现在

jerry [~/dev/myproject]$git checkout master 
Switched to branch 'master' 
jerry [~/dev/myproject]$git merge presentation 
Updating c5e5816..f5a376c 
Fast-forward 
js/iPath.js  | 5 +---- 
presentation/paper.html | 6 ++++-- 
2 files changed, 5 insertions(+), 6 deletions(-) 

的变化是主

jerry [~/dev/myproject]$git status 
# On branch master 
# Untracked files: 
# presentation/.#paper.html 
nothing added to commit but untracked files present (use "git add" to track) 

现在我正致力于svn。

jerry [~/dev/myproject]$git svn fetch 
jerry [~/dev/myproject]$git svn dcommit 
Committing to https://myproject.googlecode.com/svn/trunk ... 
No changes 
8e67cdc7e8bad816e402c1b9c72b5e84c492e907~1 == 8e67cdc7e8bad816e402c1b9c72b5e84c492e907 
No changes between current HEAD and refs/remotes/trunk 
Resetting to the latest refs/remotes/trunk 
Unstaged changes after reset: 
M js/iPath.js 
M presentation/paper.html 
Unable to extract revision information from commit f5a376ca4a10a4807abbbea131b94b828ee88269~1 

SVN主干是未经修饰的,我的最新登记(从演示合并)是不分阶段的:

jerry [~/dev/project]$git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: js/iPath.js 
# modified: presentation/paper.html 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# presentation/.#paper.html 

最后提交也从git的日志中删除。到底是怎么回事?

+0

'git svn rebase'确实做了一些魔术。 –

回答

2

你不能dcommit“git-merges”,因为subversion没有与git(和任何其他dvcs:父级跟踪)合并的概念。最近的版本试图用svn:merge-info属性来模拟它,但它不一样。

,如果你想你的dcommit Dev分支的变化颠覆,你必须先重订他们主:

git rebase master dev 

,那么你应该能够dcommit

+1

我也很难学会这一点。像git-svn一样,你可以将它与处理svn-isms的工作隔离开来,它不会做任何事情。我发现在处理颠覆性后端时,使用rebase是更加兼容的选择。在stackoverflow上有几个问题/答案,我发现特别有用。我会添加这些链接。 –