5

我正在编写一个开源库。我正在使用两个遥控器:一个用于个人测试平台和备份的私人仓库,另一个在 github 上托管。

在私人仓库中,这是我保存并执行大量提交和推送所有小更改的地方,例如“固定拼写”或“仍在处理错误 #123!”。这很好,我想保持这种方式。私人回购永远不会分享给任何人。

在 github 上的公共 repo 上,我希望我的 git 提交历史是干净的。将多个提交合并为一个提交,例如“Fixed bug #123”。

问题是,如何在两个不同的远程仓库上维护两个单独的 git 历史记录?

我一直在阅读关于git rebase. 会rebase改变那个分支的整个历史吗?如果我重新设置公共回购的历史记录,私人回购是否也会重新设置?

如果我维护两个分支会更好吗?公共服务器是否有可能只看到一个分支(作为主服务器),而另一个看到两个分支都有详细的提交?

我不确定这种情况下的最佳做法是什么。感谢您的时间。

4

1 回答 1

4

问题是,如何在两个不同的远程仓库上维护两个单独的 git 历史记录?

我要提防你,那个分支不应该是长寿的。长期存在的分支有一天会变得一团糟,因为它应该与开发分支(或您的分支开始的分支)同步,这就是为什么鼓励您git rebase develop这样做等等。

实际上,很难理解在不同的遥控器中拥有一个分支的两个版本有什么好处。在您的公共回购中拥有这个分支有什么意义,它将包含单个提交并且一直被强制更新?至于我,这听起来像是无用的废话。

现实生活中的事情是如何发生的:

  • 你发布你的分支和你所做的所有提交;

  • 当功能完成并且每个人都同意将此分支合并到一个develop(或创建它的位置)分支中时,可以将其压缩为单个提交,也可以按原样合并。

  • 应该删除您正在使用的远程功能分支,因为它已合并到另一个分支,并且不会补充任何提交。

所以,除了你的分支开始的分支之外,没有什么需要维护的。

回答问题文字:

如果您想拥有一个包含您在当前分支中所做的所有更改的单一提交的分支,您可以执行以下操作:

  • 获取您在当前分支中所做的所有更改。git diff ${SHA}${SHA}您的分支开始的分支的最后一次提交在哪里。
  • 将此差异重定向到补丁文件> patch.diff
  • 结帐${SHA}git checkout ${SHA}.
  • 使用patch -p1 < patch.diff.
  • 使用git commit -m '...'.
  • 用 .重命名任何你想要的分支git branch -m
  • 使用 将其推送到远程git push ${REMOTE_NAME} ${BRANCH_NAME}
  • 在下次推送到公共远程之前重置此提交git reset HEAD~1

但是所有这些看起来都是普通开发人员永远不会使用的丑陋杂物:[

于 2013-01-27T09:12:16.250 回答