在当地工作
只需使用你的本地 git 存储库作为普通的 git repo,使用正常的 git 命令:
git add FILE
和git checkout -- FILE
暂存/取消暂存文件git commit
保存更改。这些提交将是本地的,不会被推送到 SVN repo,就像在普通的 git 存储库中一样git stash
和git stash pop
允许使用藏匿处git reset HEAD --hard
恢复所有本地更改git log
访问存储库中的所有历史记录git rebase -i
所以你可以自由地重写你的本地历史git branch
和git checkout
创建本地分支机构
正如 git-svn 文档所述“Subversion 是一个远不如 Git 复杂的系统”,所以你不能在不破坏 Subversion 服务器历史的情况下使用 git 的全部功能。幸运的是,规则非常简单: 保持历史线性
这意味着你几乎可以进行任何 git 操作:创建分支,删除/重新排序/压缩提交,移动历史记录,删除提交等。除了合并之外的任何东西。如果你需要重新整合当地分支机构的历史,请改用 git rebase
。
执行合并时,将创建合并提交。关于合并提交的特殊之处在于它们有两个父级,这使得历史非线性。在你将合并提交推送到存储库的情况下,非线性历史记录会混淆 SVN。
但是不要担心: 如果你将一个 git merge 提交推送到 SVN,你就不会破坏任何东西。如果这样做,当 git merge commit 被发送到 svn 服务器时,它将包含该合并的所有提交的所有更改,因此你将丢失这些提交的历史记录,但不会丢失代码中的更改。