如何在一次提交中提交SVN和GIT?

如何在一次提交中提交SVN和GIT?,git,github,svn,git-svn,Git,Github,Svn,Git Svn,目前,我们公司正在从SVN迁移到GIT 在接下来的几个月里,我们需要使两个存储库保持一致, 我需要有一个命令或其他方式来提交我的SVN和GIT工作 我有这样的方法吗?是的,有。使用git svn-它允许在git和svn之间进行双向操作 您可以使用git commit提交到git,然后使用将提交推送到SVN 如果要将提交从本地git repo推送到某些远程设备,请首先运行dcommit,因为dcommit将提交发送到SVN,创建SVN修订,然后在git中重新设置提交的基址,以使git与SVN同步

目前,我们公司正在从SVN迁移到GIT

在接下来的几个月里,我们需要使两个存储库保持一致, 我需要有一个命令或其他方式来提交我的SVN和GIT工作


我有这样的方法吗?

是的,有。使用
git svn
-它允许在git和svn之间进行双向操作

您可以使用
git commit
提交到git,然后使用将提交推送到SVN

如果要将提交从本地git repo推送到某些远程设备,请首先运行
dcommit
,因为
dcommit
将提交发送到SVN,创建SVN修订,然后在git中重新设置提交的基址,以使git与SVN同步


当其他人向SVN添加新的提交时,您可以将它们提取到git中,并使用git-SVN-rebase重新设置基址。使用
git svn
-它允许在git和svn之间进行双向操作

您可以使用
git commit
提交到git,然后使用将提交推送到SVN

如果要将提交从本地git repo推送到某些远程设备,请首先运行
dcommit
,因为
dcommit
将提交发送到SVN,创建SVN修订,然后在git中重新设置提交的基址,以使git与SVN同步


当其他人向SVN添加新的提交时,您可以使用
git SVN rebase

将它们提取到git并重新设置基址,实际上这并没有多大意义,因为这样可以使远程SVN repo void的本地git repo具有许多优势。但是如果你真的想这么做,只需要做一个你想要的别名。例如<代码>git config alias.committooth'!ctb(){git commit“$@”和&git svn dcommit;};ctb'然后您可以执行类似于git committoboth-m“我的提交消息”的操作


相反,您可能还想看看。如果您需要在较长时间内为多个用户支持Git和SVN,那么最好在服务器上执行该工具所说的同步。

事实上,这没有多大意义,因为这样可以避免本地Git repo和远程SVN repo的许多优势。但是如果你真的想这么做,只需要做一个你想要的别名。例如<代码>git config alias.committooth'!ctb(){git commit“$@”和&git svn dcommit;};ctb'然后您可以执行类似于git committoboth-m“我的提交消息”的操作


相反,您可能还想看看。如果您需要在较长时间内为多个用户支持Git和SVN,那么最好在服务器上执行该工具所说的同步。

除非您创建一个命令来为您执行同步,否则无法在一个命令中执行同步,因为nativity Git SVN没有这样的命令

您可以创建一个shell脚本文件,名为
git\u svn
,它对工作流所需的所有命令进行分组。并将此shell脚本添加到系统路径:

#!/bin/sh
git commit -m "$1"
git push origin
git svn dcommit --rmdir
要使用它,您只需执行以下操作:

$ git_svn "my commit message"
参考资料:

  • git svn的简单指南

  • 除非为您创建一个命令,否则您无法在一个命令中执行此操作,因为nativity git svn没有这样的命令

    您可以创建一个shell脚本文件,名为
    git\u svn
    ,它对工作流所需的所有命令进行分组。并将此shell脚本添加到系统路径:

    #!/bin/sh
    git commit -m "$1"
    git push origin
    git svn dcommit --rmdir
    
    要使用它,您只需执行以下操作:

    $ git_svn "my commit message"
    
    参考资料:

  • git svn的简单指南

  • 你所说的一次提交是什么意思?你是说svn的git镜像吗?我的意思是,我不想通过使用两个或多个命令来实现它,只是每次提交svn都使用一个命令。你说的
    one commit
    是什么意思?你是说svn的git mirror吗?我的意思是,我不想通过使用两个或多个命令来实现它,只需在每个提交svn时使用一个命令。这个答案甚至没有尝试回答OP问题。他特别要求在Git和SVN中同时提交一个命令。虽然这个请求没有太多意义,但您的回答只是显示了正常的git svn工作流,而不是OP所追求的工作流这个答案甚至没有试图回答OP的问题。他特别要求在Git和SVN中同时提交一个命令。虽然这个请求没有太多意义,但您的回答只是显示了正常的git svn工作流,而不是OP所追求的工作流在repository中,如果希望该别名对多个存储库有效,还可以添加
    --global
    ,将配置写入用户特定的配置文件,而不是repo特定的配置文件。在repository中,如果希望该别名对多个存储库有效,您还可以添加
    --global
    ,将配置写入特定于用户的配置文件,而不是特定于repo的配置文件。