首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么git svn dcommit会丢失本地分支的合并提交历史记录?

在使用 Git 进行 SVN 迁移时,使用 git svn dcommit 命令提交代码到 SVN 仓库时,可能会丢失本地分支的合并提交历史记录。这是因为 Git 和 SVN 的提交历史记录存储方式不同,导致在转换过程中可能会出现一些问题。

以下是一些可能导致这个问题的原因:

  1. Git 和 SVN 的提交历史记录存储方式不同,Git 使用分支合并的方式来记录提交历史,而 SVN 则使用基于文件的方式来记录提交历史。因此,在转换过程中,Git 的分支合并历史可能无法完全转换为 SVN 的提交历史。
  2. Git 的提交历史记录可能包含一些不必要的提交信息,例如代码审查注释、构建系统生成的提交等,这些提交信息在 SVN 中可能没有意义,因此在转换过程中可能会被忽略或删除。
  3. Git 的分支合并历史可能比较复杂,例如存在多个分支的合并,或者存在分支的嵌套合并等情况,这些情况在 SVN 中可能比较难以处理,因此在转换过程中可能会出现问题。

为了解决这个问题,可以尝试以下方法:

  1. 在进行 SVN 迁移之前,尽量保持 Git 仓库的整洁和简单,减少不必要的提交信息和复杂的分支合并历史,这样可以减少在转换过程中出现问题的可能性。
  2. 在进行 SVN 迁移时,可以尝试使用一些工具或脚本来帮助转换,例如 git-svn 工具或 svn-migration-scripts 脚本等,这些工具或脚本可能会尝试更好地处理 Git 和 SVN 之间的差异,减少在转换过程中出现问题的可能性。
  3. 在完成 SVN 迁移后,可以尝试使用一些工具或脚本来分析 SVN 仓库的提交历史,并找出可能丢失的提交信息,然后手动将这些提交信息添加到 SVN 仓库中,以恢复丢失的提交历史记录。

总之,在使用 Git 进行 SVN 迁移时,需要注意 Git 和 SVN 的提交历史记录存储方式不同,因此可能会出现一些问题。为了解决这些问题,需要在进行迁移前准备工作时尽量保持 Git 仓库的整洁和简单,并使用一些工具或脚本来帮助转换和分析提交历史记录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Git 中文参考(六)

如果禁用此功能, git svn 创建分支将全部为线性且不共享任何历史记录,这意味着没有关于分支分支合并信息。但是,长时间/错综复杂历史记录可能需要很长时间,因此禁用此功能可能会加快克隆过程。...使用 git pull 或 git merge 和git svn set-tree A..B将导致非线性历史记录提交SVN 时被平铺,这可能导致合并提交意外地反转 SVN先前提交。...合并跟踪 虽然 git svn 可以跟踪采用标准布局存储库复制历史记录(包括分支和标记),但它还不能代表 git 内部发生在 SVN 用户上游合并历史记录。...在这些情况下, git svn 仍然创建一个 Git 分支,但它不会使用现有的 Git 提交作为分支父级,而是读取分支从中复制目录 SVN 历史记录并创建适当 Git 提交。...此外,如果您从作为 SVN 分支镜像 Git 分支合并或拉出, dcommit 可能提交错误分支

17410

SVN或者GIT远程双向同步

这里同步最小单位为单次提交commit。 配合之前「使用git-svn管理svn仓库」可以完美解决这个问题,利用git来中转管理我们手上仓库代码。...本地添加远程仓库 添加远程SVN仓库: 没有找到命令行方式添加远程仓库分支,但是可以修改 .git/config文件达到目的。...4.新建对应本地分支 远程SVN仓库: $ git checkout -b qingsui remotes/git-svn-qingsui $ git branch -a # 查看本地分支情况...将commit提交合并到新分支 commit_id是需要同步到其他远程分支commit id。 $ git cherry-pick {commit_id} 6....svn dcommit git checkout master echo -e "\n" done done 说明: 如果自动合并有冲突会操作失败,需要手动修改再提交

1.5K30

SVNGit

通常提交代码分为几步: git add从工作区提交到暂存区 git commit从暂存区提交本地仓库 git push或git svn dcommit本地仓库提交到远程仓库 一般来说,记住以下命令,...$ git svn info # 取回远程仓库所有分支变化 $ git svn fetch # 取回远程仓库当前分支变化,并与本地分支变基合并 $ git svn rebase # 上传当前分支本地仓库到远程仓库...$ git svn dcommit # 拉取新分支,并提交到远程仓库 $ svn copy [remote_branch] [new_remote_branch] -m [message] # 创建远程分支对应本地分支...commit -v # 提交暂存区修改到仓库区,合并到上次修改,并修改上次提交信息 $ git commit --amend -m [message] # 上传本地指定分支到远程仓库 $ git...git remote add [remote-name] [url] # 取回远程仓库变化,并与本地分支合并,(Git only), 若使用 Git-SVN,请查看第三节 $ git pull [

4.4K91

通俗易懂|用好GitSVN ,轻松驾驭版本管理

通常提交代码分为几步: git add从工作区提交到暂存区 git commit从暂存区提交本地仓库 git push或git svn dcommit本地仓库提交到远程仓库 一般来说,记住以下命令,...info # 取回远程仓库所有分支变化 $ git svn fetch # 取回远程仓库当前分支变化,并与本地分支变基合并 $ git svn rebase # 上传当前分支本地仓库到远程仓库...$ git svn dcommit # 拉取新分支,并提交到远程仓库 $ svn copy [remote_branch] [new_remote_branch] -m [message] # 创建远程分支对应本地分支...,合并到上次修改,并修改上次提交信息 $ git commit --amend -m [message] # 上传本地指定分支到远程仓库 $ git push [remote] [remote-branch...] # 取回远程仓库变化,并与本地分支合并,(Git only), 若使用 Git-SVN,请查看第三节 $ git pull [remote] [branch] # 取回远程仓库变化,并与本地分支变基合并

82420

SVNGit 开发实用命令总结

通常提交代码分为几步: git add从工作区提交到暂存区 git commit从暂存区提交本地仓库 git push或git svn dcommit本地仓库提交到远程仓库 一般来说,记住以下命令,...$ git svn info # 取回远程仓库所有分支变化 $ git svn fetch # 取回远程仓库当前分支变化,并与本地分支变基合并git svn rebase # 上传当前分支本地仓库到远程仓库...$ git svn dcommit # 拉取新分支,并提交到远程仓库 $ svn copy [remote_branch] [new_remote_branch] -m [message] # 创建远程分支对应本地分支... commit -v # 提交暂存区修改到仓库区,合并到上次修改,并修改上次提交信息 $ git commit --amend -m [message] # 上传本地指定分支到远程仓库 $ git... git remote add [remote-name] [url] # 取回远程仓库变化,并与本地分支合并,(Git only), 若使用 Git-SVN,请查看第三节 $ git pull [

90051

SVN与Gi较量对比

3.GIT分支SVN分支不同:svn会发生分支遗漏情况,而git可以同一个工作目录下快速在几个分支间切换,很容易发现未被合并分支,简单而快捷合并这些文件。...这个其实是由于本地存在而产生,但可以减少中央库上冗余版本 分支策略:在Git实际开发中分支分离和merge是属于日常操作,开启和合并分支成本相比SVN要小得多:SVN是复制一份代码到分支目录,...info # 取回远程仓库所有分支变化 $ git svn fetch # 取回远程仓库当前分支变化,并与本地分支变基合并 $ git svn rebase # 上传当前分支本地仓库到远程仓库...$ git svn dcommit # 拉取新分支,并提交到远程仓库 $ svn copy [remote_branch] [new_remote_branch] -m [message] # 创建远程分支对应本地分支...] # 取回远程仓库变化,并与本地分支合并,(Git only), 若使用 Git-SVN,请查看第三节 $ git pull [remote] [branch] # 取回远程仓库变化,并与本地分支变基合并

93220

SVN之于GIT理论优势

SVN之于GIT理论优势 ?...目录 使用SVN管理代码SVN客户端:TortoiseSVN服务器:VisualSVN Server管理证书创建用户、用户组创建仓库下载仓库(checkout)提交(push)、更新(pull)查看历史记录本地撤销...、撤销历史提交、回退版本忽略文件(本地变化)创建分支(云端变化)合并分支解决冲突备份SVN托管平台展开 SVN 官网:https://subversion.apache.org/ ?...忽略文件(本地变化) Git通过.gitignore忽略文件,TortoiseSVN通过对文件右键菜单中选择TortoiseSVN > Add to ignore list来实现,tortoise帮你添加进...合并分支Git一样,SVN有好几种合并方式,但多数情况下都是把分支修改合并到主干上来,本文只介绍这一种主要情况:在主干目录右键选择merge,选择第一个选项Merge a range of revisions

1.1K30

git 基本概念

git是什么 git是一个代码版本控制系统,是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况系统 为什么需要git 在开发过程中,经常需要对一个文件进行修改甚至删除,但是我们又希望能够保存这个文件历史记录...在多人开发时,如果需要多人合作开发一个页面,那么修改以及合并非常棘手。容易出现冲突。...如果两个平行宇宙互不干扰,那对现在你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!...image.png 分支特点: 分支之间互不干扰 分支可以合并 为什么要有分支?...如果你要开发一个新功能,需要2周时间,第一周你只能写50%代码,如果此时立即提交,代码没写完,不完整代码影响到别人无法工作。如果等代码写完再提交,代码很容易丢失,风险很大。

32400

Git 入门精讲

我们为什么要学习git? 就当下发展而言,只要你从事开发就一定会接触git。作为最强大分布式版本控制器,gitsvn 有着本质上区别。.../ 分支管理 性能 历史记录 开发 Git Git鼓励频繁地创建和合并分支,使得多个功能可以同时进行开发,而不会相互干扰 使用了一种快照机制,每次提交都会创建一个文件完整副本,操作速度非常快,并且占用存储空间较小...保留了完整代码历史记录,包括每次提交内容、时间和作者等信息 由于分布式特性,开发者可以在自己本地分支上进行自由实验和开发,不会影响到其他人工作 SVN 分支管理相对较为繁琐,需要手动创建和合并分支...@qq.com" 配置标识信息 git status 查看本地文件状态 有红色文件名,意为:工作区有更改,需要暂存以防止丢失 有绿色文件名:意为:暂存区有更改,需要提交本地仓库...暂存 git commit -m “gitignore-config” 提交 git push 推送 你远程仓库中就生成了如下内容 为本项目添加成员,不同角色赋予他不同权限。

3700

Git 全功能介绍

Central and distribution GitSVN 代码历史不同 SVN 代码历史相对比较简单,因为它是中心化,所有人代码都直接提交到某个 repository 上,所以它...Staging:修改后,添加到准备提交缓存状态。 Local repository:本地代码仓库,只对自己代码生效。...这也是和 svn 区别之一,svn commit 之后就直接提交到远程服务器了,git commit 之后只是到本地代码库。...克隆代码到本地开发环境 - Clone $ git clone [REPOSITORY_URL] 对应到了 svn checkout 命令,用于把远程代码克隆到本地,跟 svn 一样,REPOSITORY_URL...merge 时候丢失分支合并 commit,但是对于部分有 history mysophobia 的人来说,它是保持代码提交历史记录干净神器,那个 Merge branch 'xxx' of

93131

版本控制、SVNGit和Github

版本管理就是管理更新历史记录, 它给我们提供了一些在软件开发过程中必不可少功能,例如: 记录一款软件添加或更改源代码过程 回滚到特定阶段,恢复误删除文件 合并多人协作文件等 多人协同,文件传输...两个程序员只要不是修改了同一行程序,SVN 可以通过 update 自动合并修改 但是如果两个程序员修改了同一行程序, SVN 提示文件 conflict,需要手动确定 如何解决?...,用来撤销指定commit # 后者所有变化都将被前者抵消,并且应用到当前分支 $ git revert [commit] # 暂时将未提交变化移除,稍后再移入 $ git stash $ git...git clone 自动帮你把远程仓库下载到本地,不需要再去 git init 了 通过 clone 下来仓库,git 有一个远程仓库地址列表,git 默认会把你 clone 地址起一个别名...:origin 然后你执行 push 时候实际上就是将本地版本提交到 origin 上 在本地进行操作,通过 git commit 形成历史记录 通过 git push 将本地仓库中历史记录提交到远程仓库

86920

初学Git及简单搭建git服务器和客户端

本地提交文件 右键选择Git提交,填写日志信息,不然不能提交然后点提交,这一步是将文件提交到你本地仓库,git中不能提交一个空文件夹,里面一定要有文件才行 第一行默认提交到master分支,也可以选择新建分支...一般选择非fast forward,多生成一个commit 记录,并强制保留分支开发记录,不会丢失分支信息,这对于以后代码进行分析特别有用。 ?...合并 切换回master分支,TortoiseGit选择合并,选择非快进式合并合并后master分支上有了其他分支提交信息 ?...显示日志 红色代表当前分支,绿色代表本地分支,浅×××代表远端分支,×××代表标签 可以看到各版本提交信息,及分支合并信息,还有文件操作状态 ? 颜色可以在设置中更改 ?...可以在每一条信息上右键选择与上一版本比较差异 以上就是TortoiseGit基本操作了 下面是一些命令行操作 svn迁移到git服务器 根据需要,后期将会将svn数据迁移到git上 将svn库克隆到本地

2.3K21

我看还有谁不动Git

合并分支:在开发新功能或修复错误后,需要将分支合并到主分支上,使用 git merge 命令将分支合并到主分支上。 拉取代码:在多人协作开发中,需要将远程仓库中代码拉取到本地进行开发。...6.4、git merge合并代码 Git merge是将两个或多个分支代码合并到一个分支操作。在合并过程中,Git自动尝试将两个分支代码进行比较和合并,以生成一个新合并提交。...:git merge Git尝试自动合并分支代码。...如果Git遇到了冲突,它会提示你手动解决冲突。你需要手动编辑有冲突文件,以解决冲突。 如果合并成功,Git会生成一个新合并提交。在这个提交消息中,Git包含有关合并信息,如何合并分支等等。...需要注意是,在使用Git回退代码时,需要注意不要将未提交修改丢失,并且需要保留历史提交记录。如果你不确定该如何回退代码,可以先创建一个新分支,进行实验,确保不会对主分支造成不可逆影响。

1.5K20

Git学习笔记.

3、GIT分支SVN分支不同:分支SVN中一点不特别,就是版本库中另外一个目录。 4、GIT没有一个全局版本号,而SVN有:目前为止这是跟SVN相比GIT缺少最大一个特征。...git pull origin next:master:取回origin主机next分支,与本地master分支合并。          ...合并分支到当前分支上:git merge (branchname) 合并分支某个文件到当前分支上: git checkout --patch A分支 f 文件   创建新分支并立即到该目录下:git...:git merge master,在更新过程中也行会因为冲突出现报错, 本地解决冲突后提交代码,合并完成。...执行这个命令:git add –i [path] 查看提交历史:  列出历史记录git log 查看某个作者日志: git log --author="John" 历史记录简洁版本:git log

1K50

SVN 迁移到 Git

SVN 迁移到 Git 准备工作 确认所有用户本地修改都签入到服务器, 将 SVN 源代码分支尽可能合并到主干, 已经发布做好归档信息, 并备份 SVN 库。...-no-metadata -A users.txt -t tags -b branches -T trunk Git 克隆 svn 完整历史记录, 可能需要很长时间...转换分支及归档 克隆完成之后, 所有的 svn 归档在 git 看来都是远程分支 (remote tags) , 不是真正 git 归档, 需要将他们手工转换为 git 归档, 然后再删除远程分支,..., git 本地库就有了完整历史记录。...提交Git 库 现在可以放心将代码提交到自己 git 服务器了, 命令如下: git remote add origin git@github.com:userid/project.git git

80040

开发中要知道git知识

版本控制 对于开发过程中版本控制,主要氛围集中式和分布式 集中式(svn) svn因为每次存都是差异 需要硬盘空间相对小一点 可是回滚速度很慢 优点: 代码存放在单一服务器上...便于项目的管理 缺点: 服务器宕机: 员工写代码得不到保障 服务器炸了: 整个项目的历史记录都会丢失 分布式(git) git每次存都是项目的完整快照 需要硬盘空间相对大一点...-d name : 删除空分支 删除已经被合并分支 git branch -D name : 强制删除分支 git分支 git分支本质 分支本质是一个提交对象,所有的分支都会有机会被HEAD所引用...(HEAD一个时刻只会指向一个分支) 当我们有新提交时候 HEAD携带当前持有的分支往前移动 git分支命令 创建分支 : git branch branchname 切换分支...第十步: 项目经理拉取成员修改 做跟踪 克隆才仓库时 自动为master做跟踪 本地没有分支 git checkout --track 远程跟踪分支(remote/分支名) 本地已经创建了分支

13710

聊聊如何从 SVN 迁移源码到 Git 仓库

因此,必须在authors.txt文件中添加丢失用户对应关系,然后重新运行git svn命令即可。...因此,在这种情况下,可以选择找一台机器,运行命令后就不管了直到完成转换为止,或者是选择放弃保存非常老提交历史记录,这样可以加速转换过程,如果转换时只保留部分提交历史的话可以使用以下命令: git svn...该策略主要是为SVNGit双向同步服务,但通常SVN单向转换到Git后都会直接使用Git了,并且禁止SVN提交了,所以还是会对分支和标签内容进行清理以转换为Git分支和标签。...--force 将SVN分支和标签转换Git本地分支和标签后结构如下图所示: ?...配置: idea.project.vcs = "Git" 最后上传到Repo,并根据团队内部约定设置相应权限,通常会有一个检查清单,比如: 设置分支模型 添加分支权限 限定PR合并权限 配置SVN提交通知

2.4K10

GitSVN:区别与选择

本文将深入探讨两者区别、各自优缺点,以及如何根据项目需求选择合适版本控制工具。 一、GitSVN区别 分支管理:Git采用轻量级分支,通过文件快照实现,便于创建、切换和合并。...而SVN每次切换分支需复制整个项目目录,造成空间浪费。 合并操作:Git合并操作相对简单,因为它使用快速三方合并策略。而SVN合并时可能出现大量冲突,需要人工介入解决。...分布式:Git是分布式版本控制系统,允许开发者在本地提交,再选择性地推送到远程仓库。SVN则是集中式系统,所有操作需在中央服务器进行。...SVN在处理大型项目时可能显得缓慢。 二、Git优缺点 优点: 高效分支管理:支持快速创建、切换和合并分支,有助于提高团队协作效率。...缺点: 学习曲线陡峭:对于初学者来说,Git命令行操作可能较复杂,需要时间适应。 分支冲突:当多个团队成员修改同一部分代码时,合并可能产生冲突,需人工介入解决。

77410

git入门篇(1)--初识Gi

那我们针对刚才说过SVN缺点来说明为什么我们要采用Git。...Git如何让做好备份工作 我们刚才一直在说Git本地创建版本库,那版本库存储在本地磁盘,本地磁盘出问题我所有版本库不就直接全部丢失了。...Git优势 GitSvn 分支实现机制完全不同,这也直接导致了 SVN分支合并中困难重重。...当我们使用SVN中在一个分支上工作数周或几个月之后,主干修改也同时在进行着,两条线开发区别巨大,当你想合并分支回主干,可能因为太多冲突,已经无法轻易合并分支和主干修改。...当最后功能完成最后需要合并分支合并别人修改时候,最好创建一个临时分支用来合并合并完成再fatch到自己分支Git缺点 中文完整Git学习资料较少。 学习周期比较长。

50020
领券