2011-08-24 199 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上有幾個問題/答案,我發現特別有用。我會添加這些鏈接。 –