Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git svn?_Svn_Git - Fatal编程技术网

如何使用git svn?

如何使用git svn?,svn,git,Svn,Git,请提供有效使用git和svn的技巧。你的“最佳实践”是什么?以下是我最近学到的一些: 在执行git svn DCOMIT之前,请始终执行git svn rebase 当您执行dcommit时,请从临时暂存分支执行此操作-如果您(或git)陷入困境,只需删除分支并重新开始即可轻松恢复 当svn dcommit在一次大型提交的中途死亡,并且您似乎丢失了所有历史记录时: 如何恢复: 首先,打开.git/logs/HEAD 查找提交的哈希值,该哈希值是 你的git回购的负责人。希望你 记住提交消息并可以

请提供有效使用git和svn的技巧。你的“最佳实践”是什么?

以下是我最近学到的一些:

  • 在执行git svn DCOMIT之前,请始终执行git svn rebase
  • 当您执行
    dcommit
    时,请从临时暂存分支执行此操作-如果您(或git)陷入困境,只需删除分支并重新开始即可轻松恢复
  • svn dcommit
    在一次大型提交的中途死亡,并且您似乎丢失了所有历史记录时:

    如何恢复:

    首先,打开.git/logs/HEAD

    查找提交的哈希值,该哈希值是 你的git回购的负责人。希望你 记住提交消息并可以 想清楚了,但它应该很漂亮 明显的

    回到你现在的f-ed工作目录:

    git重置——硬

    这将使您的工作目录返回到 在你做git-svn之前它在哪里 D委员会。然后:

    git svn重新设置git svn DCOMIT的基础


    创建克隆时,请使用
    --prefix=svn/
    。它创建了更好的分支名称

    另外,在执行
    clone
    init
    时,不要忽略
    --trunk
    --tags
    --branchs
    参数

    获取是比较耗时的步骤之一,因此设置一个cron作业在后台执行
    git svn fetch
    。这是安全的,因为获取不会影响任何工作分支

    (关于
    git svn-fetch
    的背景信息:每当您执行
    git svn-rebase
    时,都会首先执行此命令,因此通过提前执行此步骤,您的
    git svn-rebase
    调用通常会更快。
    fetch
    命令会下载svn提交,并将它们粘贴到git svn管理的特殊分支中。这些分支可以通过执行git branch-r查看,如果执行了上述步骤,则以“svn/”开头)

    确保您知道如何使用
    git reflog
    。我曾经有过几次
    git svn dcommit
    死机的情况(通常是因为我试图签入一些大文件)而且我的提交似乎丢失了。在任何情况下,提交都很容易在reflog中找到。

    如果SVN存储库中有一个可以拒绝提交的提交后钩子,那么
    git SVN dcommit
    将在第一次拒绝提交时停止处理提交,并且您必须从git reflog恢复剩余的提交


    事实上,我认为上述问题是由于我的cow同事在试图修复被拒绝的提交时没有正确运行git rebase-I造成的。但是,多亏了reflog,我们能够恢复一切!

    我已经在博客上写了一些关于如何并行使用Subversion和git的内容,我还提出了一些基本的建议截屏。在这里收集所有信息:

    我将尝试一个摘要:

    • 试试看吧!试试也无妨:)
    • 首先从一个小的Git项目开始学习
    • 坚持使用命令行,直到掌握它为止。GUI工具可能会让您感到困惑
    • 如果可能,进行一次性迁移,将SVN留在后面,一次一个项目,从小项目开始
    • 如果您必须同时使用Git和SVN,请注意您必须放弃从Git获得的许多优势,例如分支,但您可以获得“本地”好处(隐藏、索引、速度)
    • 如果您是一个Git用户,只需自己进行Git svn重定基址和数据提交即可
    • 如果您是多个Git协作者,请设置一个仅从SVN提取数据的中心Git/SVN,而每个Git用户直接将数据提交回SVN
    同意1,但我从未发现我需要做2
    dcommit
    不会经常中断,当它中断时,恢复并不困难。今天,它决定perl将在中途转储core-这让我的工作副本丢失了很多更改扫描您能解释更多关于获取技巧的信息吗?那有什么用?你只是在后台一遍又一遍地运行它吗?这样做之后,您如何将更改添加到分支中?好的,添加了一些关于fetch的额外信息