2012-10-03 52 views
0

我有一个通过git svn clone创建的svn仓库的git checkout。我对我的本地git存储库有一系列复杂的变化,我正在推迟到svn的中央仓库。我想推一个小小的改变到一个文件。当使用svn客户端时,我会做git svn dcommit一个文件

svn commit foobar.c 

有没有办法让git获得类似的功能?

回答

1

只要你没有dcommit任何东西,你完全能够使用Git提供的任何东西,包括分支和重新装订东西。所以你可能想要做的是从当前的SVN版本中创建一个分支(git branch <name> remotes/trunk)并且现在就开始工作。然后你可以dcommit这些变化,你已经习惯了。

要继续进行其他更改,可以使用git rebase remotes/trunk来重新匹配它们以匹配您所推送的提交。然后,您将回到线性历史记录,稍后再进行提交并继续处理新功能。

+0

谢谢。一般情况下,在实践中,我应该只从主分支中提交吗? (或者至少只有一个分支,无论是否称为'主'或其他东西?) –

+0

说实话,我从来没有尝试过自己从不同的分支机构提交。但是根据dcommit的工作方式,通过分别提交每个diff然后在本地重新提交提交,我不会尝试从不是基于当前svn trunk的分支提交。我怀疑它甚至不会工作(不能尝试atm),但要求你首先“git svn rebase”,以更新分支。 – poke

+1

你可以从你想要的任何分支中提交,它可以工作,但如果你不注意,最终可能会混乱。但是dcommit会很好地工作,它是需要适当处理的'git svn rebase'部分。您可以轻松地将svn重新分配到git中的任何分支,而不仅仅是主分支。 – Sven

1

简单。

解决方法一:任何git内部未得到满足的东西都可以隐藏起来。无论如何,在提交时不允许未提交的文件。

解决方案二:现在开始一个新的分支。将主分支重置为您从SVN提交的最后一个提交。将文件提交给git中的主分支。 DCommit到SVN。在dcommit之后将创建的新分支重新分配到新主分支。

有任何问题吗?使用图形工具将在这里大大帮助...

相关问题