在当地工作

只需使用你的本地 git 存储库作为普通的 git repo,使用正常的 git 命令:

  • git add FILEgit checkout -- FILE 暂存/取消暂存文件
  • git commit 保存更改。这些提交将是本地的,不会被推送到 SVN repo,就像在普通的 git 存储库中一样
  • git stashgit stash pop 允许使用藏匿处
  • git reset HEAD --hard 恢复所有本地更改
  • git log 访问存储库中的所有历史记录
  • git rebase -i 所以你可以自由地重写你的本地历史
  • git branchgit checkout 创建本地分支机构

正如 git-svn 文档所述“Subversion 是一个远不如 Git 复杂的系统”,所以你不能在不破坏 Subversion 服务器历史的情况下使用 git 的全部功能。幸运的是,规则非常简单: 保持历史线性

这意味着你几乎可以进行任何 git 操作:创建分支,删除/重新排序/压缩提交,移动历史记录,删除提交等。除了合并之外的任何东西。如果你需要重新整合当地分支机构的历史,请改用 git rebase

执行合并时,将创建合并提交。关于合并提交的特殊之处在于它们有两个父级,这使得历史非线性。在你将合并提交推送到存储库的情况下,非线性历史记录会混淆 SVN。

但是不要担心: 如果你将一个 git merge 提交推送到 SVN,你就不会破坏任何东西。如果这样做,当 git merge commit 被发送到 svn 服务器时,它将包含该合并的所有提交的所有更改,因此你将丢失这些提交的历史记录,但不会丢失代码中的更改。