2011-07-08 133 views
0

使用TortiseSVN,您可以通过右键单击目录并选择更新或提交来更新/提交单个目录。git-svn提交一个目录?

我真的很喜欢git的分支功能,但是如果我使用git svn dcommit它会尝试更新整个存储库,在我们的例子中它有几个项目。

那么我怎样才能只提交特定的文件/目录?

谢谢!

编辑

为了澄清SVN回购的样子:

+- Trunk 
| 
+-+- Project 1 
| | 
| +- Project 1 files... 
| 
+-+- Project 2 
| | 
| +- Project 2 files.. 
| 
+-+- My Project 
    | 
    +- My Project files... 

当我运行git svn dcommit它试图在Project 1, 2,并且My Project更新一切。

项目1和项目2完全无关,并且正在开发中。我如何避免更新/提交给其他项目?我是否简单地将这些目录添加到.gitignore?如果我以后需要在其他项目上工作,怎么办?或者,是否有更好的方式使用git svn来处理这种类型的Subversion存储库?

+0

http://stackoverflow.com/questions/3334475/git-how-to-update-checkout-a-single-file-from-remote-origin-master –

回答

0

git add你想要的目录,提交它,然后做dcommit(经过适当采摘樱桃)

我看不出有多个项目的问题是如何的用武之地,你也将加入您的文件有关项目并添加它们。不要将SVN中的提交与此处的dcommit进行比较。将SVN中的提交与Git中的提交进行比较。就像你将如何“右键点击该目录”并提交它,git add(或使用TortoiseGit并执行你在TortoiseSVN中的操作)只有该目录并提交。然后,执行dcommit。

+0

其实我习惯了git,他们使用SVN这里......它可能是一个相当差的SVN工作流程。但我认为这不适用,因为我不控制远程存储库。 –

+0

@Wayne Werner - 我的PS写得不好,我把它删除了。 – manojlds

-1

当您执行git svn dcommit时,您本地git仓库中的每个提交都将作为单独提交到您的svn远程提交。如果您想将其作为单个提交,请参阅此问题:Is it possible to make git svn dcommit result in a single svn commit?并参考ProGit书中的Rewriting History部分和Git社区书中的Interactive Rebasing章。

+0

答案有什么问题?你能留下评论吗? – yasouser

+0

嗯,我没有downvote,但我并没有要求做类似'git merge --squash'后跟'git svn dcommit'。我的问题是问我如何提交(或更新)“单个文件”。显然这是一个相当普遍的做法,在一个'trunk'文件夹中存储几个项目,所以为了避免检查整个存储库(类似于试图克隆github上的所有项目),他们只是检查/在特定的目录/文件。我试图找出git svn是否可能,以及如何做到这一点。 –

+0

@ Wayne-Werner:你想为每个项目维护一个回购吗?如果是,那么根据它们所属的项目,某些文件和/或文件夹是否会有多个状态/历史记录?另一种方法是使用'.gitignore'并添加不属于每个项目的文件/文件夹。然后你需要修改它作为项目从svn远程添加/删除。 – yasouser