Git Svn DCOMIT错误-重新启动提交
上周,我在离开小镇去度周末之前,对我在当地的分行做了一些变动。今天早上,我想将所有这些更改提交到公司的Svn存储库,但在一个文件中出现了合并冲突: 提交期间合并冲突:您的文件或目录“build.properties.sample”可能已过期:版本资源与事务中的资源不对应。请求的版本资源已过期(需要更新),或者请求的版本资源比事务根目录更新(重新启动提交) 我不知道为什么会这样,但在尝试dcommit之前,我做了一个git-svn-rebase。“重写”我的承诺。为了从中恢复过来,我做了一个git重置--hard HEAD@{1}。现在我的工作副本似乎在我期望的地方,但我不知道如何克服合并冲突;实际上我找不到任何需要解决的冲突 如有任何想法,将不胜感激 编辑:只是想指定我在本地工作。我有一个引用svn/trunk的主干的本地分支(远程分支)。我所有的工作都是在本地主干上完成的:Git Svn DCOMIT错误-重新启动提交,git,git-svn,Git,Git Svn,上周,我在离开小镇去度周末之前,对我在当地的分行做了一些变动。今天早上,我想将所有这些更改提交到公司的Svn存储库,但在一个文件中出现了合并冲突: 提交期间合并冲突:您的文件或目录“build.properties.sample”可能已过期:版本资源与事务中的资源不对应。请求的版本资源已过期(需要更新),或者请求的版本资源比事务根目录更新(重新启动提交) 我不知道为什么会这样,但在尝试dcommit之前,我做了一个git-svn-rebase。“重写”我的承诺。为了从中恢复过来,我做了一个git
$ git branch
maint-1.0.x
master
* trunk
$ git branch -r
svn/maintenance/my-project-1.0.0
svn/trunk
类似地,git log当前显示了自上次使用Svn ID提交以来本地中继上的10次提交
希望这能回答一些问题
再次感谢。您应该创建一个本地分支,并完成这方面的工作,然后当您返回时,更新主分支,重新设置本地分支的基础,合并回主分支,然后执行DCOMIT
$ git checkout -b backup # create a local backup branch with all your work
$ git checkout master
$ git checkout -b backup2 # 2nd copy just to be safe
$ git checkout master
$ git reset --hard <this is the revision of the last svn-id> # clean up master to make the svn merge easier
$ git svn fetch # this should update to the current version on the svn server
$ git rebase master backup # may get a conflict here, fix and commit
... # after conflict is fixed and commited
$ git checkout master
$ git merge backup --ff # merge in your local commits
$ git svn dcommit # push back to the svn
因此,我会尝试复制这些更改,以进行备份
从has svn同步点创建本地分支,并在其中合并更改。然后退出主分支中的更改、获取、重新设置分支的基础、从本地分支合并、修复任何冲突,然后进行dcommit
$ git checkout -b backup # create a local backup branch with all your work
$ git checkout master
$ git checkout -b backup2 # 2nd copy just to be safe
$ git checkout master
$ git reset --hard <this is the revision of the last svn-id> # clean up master to make the svn merge easier
$ git svn fetch # this should update to the current version on the svn server
$ git rebase master backup # may get a conflict here, fix and commit
... # after conflict is fixed and commited
$ git checkout master
$ git merge backup --ff # merge in your local commits
$ git svn dcommit # push back to the svn
$git checkout-b backup#创建一个包含所有工作的本地备份分支
$git签出主机
$git checkout-b备份2#为了安全起见,第二份副本
$git签出主机
$git reset--硬#清理主机以简化svn合并
$git svn fetch#这应该更新到svn服务器上的当前版本
$git rebase主备份#此处可能会发生冲突,请修复并提交
... # 冲突解决并提交后
$git签出主机
$git merge backup--ff#在本地提交中合并
$git svn dcommit#推回到svn
你可以得到更多的信息
另一个你可能感兴趣的
git svn工作流文章
要完成,以下是一些详细信息:
使用gitsvn
,默认情况下会得到一个名为master的本地分支。您不应该对其进行任何操作,只需使用以下工具使其与svn主干分支保持最新:
从本地主干分支上的svn主干分支获取历史记录:它不会对工作目录应用这些修改git svn fetch
打开主干分支(仅当您在另一个分支上时)git checkout master
以将主机与主干同步git重新设置主干的基址
localdevel
)
git分行本地开发者
git checkout local devel
:在主机上切换()git签出主机
&&git-svn-fetch
使用svn-trunk更新它git-rebase-trunk
,分支itgit branch fastfix和&git checkout fastfix
- 修复bug,编译,测试
:本地提交git提交-a
更新对远程svn回购的修改git svn dcommit
:再次更新主机git签出主机和&git重基中继线
:删除热修复分支git分支-D fastfix
:返回dev,在dev分支上重播master上完成的更新历史记录git checkout-local-devel&&git-rebase-master
一开始这有点麻烦,但比以后应用的文件中的svn diff要舒服得多。非常感谢VonC和sfassen对我的非凡耐心,解决方案自行解决了。我不知道怎么做或者为什么,但也许我最初的重定基础没有起作用。为了解决这个问题,我又重新定了基调。从我当地的主干分支:
$ git co -b backup # backup the commits to my local trunk
$ git co trunk # return to the local trunk
$ git svn rebase # rebase the trunk from the Svn server
$ git br -d backup # delete the backup branch
当然,关键是这一次的再基础起了作用。我不知道为什么我第一次做的时候它不起作用,但是我不能把时间倒转,所以我就不去想它了
再次感谢大家的建议和对新手的耐心。我想发表评论,但认为这值得更多关注
git svn rebase
应该重新编写提交。从描述和评论中,我得到的印象是,在您重新设置基址后,您将旧的提交重新置于顶部。提交必须替换为不冲突的新版本
为了避免翻阅reflog,您可能希望养成在执行
git svn dcommit
之前快速标记的习惯。dcommit成功后,删除标记。如果标记失败,您可以执行git重置--hard
,然后执行git merge
。重新运行rebase以恢复历史记录,重新标记并重新提交数据。我也遇到过类似的情况。我在一个坏的网络连接上执行了一个git svn dcommit。我发现问题是由足总引起的
git svn rebase
git svn dcommit