首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > CVS SVN >

git-svn 惯用功能示例

2012-09-03 
git-svn 常用功能示例修改若干文件(1, 2),此后,您可以像使用 svn status/svn diff 一样使用 git-status/gi

git-svn 常用功能示例

修改若干文件(1, 2),此后,您可以像使用 svn status/svn diff 一样使用 git-status/git-diff 来查看修改情况。确定修改完成后提交至本地仓库(3)。在正式提 交给 svn 仓库之前(5),从 svn 仓库获取最新的数据(4)对您的提交动作来说非常重要。 这里假设的理想情况是在您正式提交给 svn 仓库之前,svn 仓库没有发生更新。

示例2 修改数据后提交至 svn 仓库(发生冲突)

在提交/签入(commit/check in)过程中,发生了合并冲突(CONFLICT)时的基本动作。

1$ vi debian/changelog   ...2$ git-commit -a -m "发布一个新版本"Created commit 934b74c: 发布一个新版本 1 files changed, 6 insertions(+), 0 deletions(-)3$ git-svn rebase    M   debian/changelog r11 = ae2199620a1e66130e12d03bd48a66c8edddc195 (git-svn)First, rewinding head to replay your work on top of it...HEAD is now at ae21996... New Upstream ReleasedApplying 发布一个新版本error: patch failed: debian/changelog:1 error: debian/changelog: patch does not applyUsing index info to reconstruct a base tree...Falling back to patching base and 3-way merge...Auto-merged debian/changelogCONFLICT (content): Merge conflict in debian/changelog Failed to merge in the changes.Patch failed at 0001.When you have resolved this problem run "git rebase --continue".If you would prefer to skip this patch, instead run "git rebase --skip". To restore the original branch and stop rebasing run "git rebase --abort".rebase refs/remotes/git-svn: command returned error: 14$ vi debian/changelog   ...5$ git-commit -a -m "冲突解决后发布的最新版本" Created commit b899d8b: 冲突解决后发布的最新版本 1 files changed, 2 insertions(+), 1 deletions(-)6$ rm -rf .dotest7$ git-svn rebaseCurrent branch HEAD is up to date.8$ git-svn dcommitCommitting to https://virtual.googlecode.com/svn/trunk ...     M   debian/changelogCommitted r12    M   debian/changelogr12 = cc5b21aaf77a2952b4a3fa74a80cbdd826f28d92 (git-svn)No changes between current HEAD and refs/remotes/git-svnResetting to the latest refs/remotes/git-svn

将平日修改的文件(1),提交到本地 git 仓库(2)。在提交至 svn 仓库前,先获取 svn 仓库的最新数据(3)。此时发现 debian/changelog 文件在 svn 仓库中已被更新,由于我 们平日也对 debian/changelog 文件作过修改,这就导致该文件出现了合并冲突。手工修 改该文件解决冲突(4),然后重新提交至本地 git 仓库(5)。准备重新提交至 svn 仓库 (8),保险起见,我们再一次获取 svn 仓库的最新数据(7),为此要先删除因刚才(3)操作 失败带来的临时目录 .dotest(6)。(或许存在更好的解决 .dotest 目录的方法。)

示例3 修改提交至本地 git 仓库时的留言

有时候我们希望能在 git-commit 之后修改当时 -m 参数后面的留言,如下例中对拼写错 误的修改

1$ touch foo2$ git-add foo3$ git-commit -a -m "New flie"4$ git-commit --amend5$ git-rebaseCurrent branch HEAD is up to date.6$ git-svn dcommitCommitting to https://virtual.googlecode.com/svn/trunk ...     A   fooCommitted r13    A   foor13 = 9f9db8db023de576f8ac63c993619218febbb74d (git-svn)No changes between current HEAD and refs/remotes/git-svnResetting to the latest refs/remotes/git-svn7$ mkdir /tmp/test && cd /tmp/test 8$ svn co https://virtual.googlecode.com/svn/trunk . --username=zhang9$ svn log~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~r13 | zhang | 2008-03-09 22:08:37 +0800 (日, 09  3月 2008) | 2 lines New file~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~r12 | zhang | 2008-03-09 21:07:24 +0800 (日, 09  3月 2008) | 2 lines冲突解决后发布的最新版本~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ r11 | s5unty | 2008-03-09 20:56:39 +0800 (日, 09  3月 2008) | 1 lineNew Upstream Released~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~r10 | zhang| 2008-03-09 20:44:57 +0800 (日, 09  3月 2008) | 2 lines 小笑话   ...

新建一个文件 foo(1)并添加至本地 git 仓库(2),然后提交(3)。此时我们发现刚才提交 的留言中错把 file 拼写成了 flie,现在进行修改(4)。然后提交给 svn 仓库并观察日 志(5-9)。

热点排行