【问题标题】:git-svn commit a single directory?git-svn 提交单个目录?
【发布时间】:2011-07-08 19:20:46
【问题描述】:

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

我真的很喜欢 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, 2My Project 中的所有内容。

项目 1 和 2 完全不相关,并且正在由其他人开发。如何避免更新/提交到其他项目?我是否只需将这些目录添加到.gitignore?如果我以后需要从事其他项目怎么办?或者,有没有更好的方法来使用git svn 来处理这种类型的 Subversion 存储库?

【问题讨论】:

标签: git git-svn


【解决方案1】:

git add你想要的目录,提交它然后执行dcommit(在适当的樱桃采摘之后)

我不明白拥有多个项目的问题是如何产生的。您将在相关项目中添加文件并添加它们。不要将 SVN 中的提交与此处的 dcommit 进行比较。将 SVN 中的提交与 Git 中的提交进行比较。就像您如何“右键单击目录”并提交它一样,git add(或使用 TortoiseGit 并执行与 TortoiseSVN 中相同的操作)仅该目录并提交。然后,执行 dcommit。

【讨论】:

  • 其实我已经习惯了 git,他们这里使用的是 SVN ......这可能是一个相当糟糕的 SVN 工作流程。不过,我认为这不适用,因为我不控制远程存储库。
  • @Wayne Werner - 我的 PS 措辞不当,我已将其删除。
【解决方案2】:

当您执行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 章节。

【讨论】:

  • 好吧,我没有投反对票,但我并没有要求做类似git merge <branch> --squash 后跟git svn dcommit 之类的事情。我的问题是问我如何提交(或更新)single file。显然,在这里将多个项目存储在一个 trunk 文件夹下是一种相当普遍的做法,因此为了避免检出整个存储库(类似于尝试克隆 github 上的所有项目),他们只需检出/在特定目录中/文件。我正在尝试找出 git svn 是否可以做到这一点,以及如何做到这一点。
  • @Wayne-Werner:你想为每个项目维护一个仓库吗?如果是,那么某些文件和/或文件夹是否会根据它们所属的项目具有多个状态/历史?另一种方法是使用.gitignore 并添加那些不属于每个项目的文件/文件夹。然后你需要在 svn 远程添加/删除项目时对其进行修改。
  • 在我们的环境中,他们每个 repo 存储多个项目,我已经更新了我的问题以希望澄清
  • 如果项目位于它们自己的目录中并且在它们之间不共享任何文件,那么使用 .gitignore 并为每个项目设置单独的 repo 是有意义的。
猜你喜欢
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2013-02-02
  • 2015-08-30
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
相关资源
最近更新 更多