git 清理历史记录的最佳做法是什么?
What are the best practices for having git clean history?
阅读了 git 工作流程,我想知道重写历史是否合适。我的工作流程以及我想象的许多其他工作流程是这样的:
- 获取 Github 存储库,我们称其为 rep1
- 做一个叉子,那就是 rep2
- git 在本地克隆它来使用,即 rep3
- 进行更改,提交给 rep3
- 完成后,推送到 rep2 并在进行 PR 之前征求其他人的反馈
当我收到反馈时,似乎我想做一些变基和压缩,因为反馈通常是一些小事,比如重新措辞评论或一开始就应该有所不同但不值得的事情他们自己的承诺。
但是从文档来看,我似乎不应该更改 rep2 上的历史记录,而且 --ammend 之类的东西在这种情况下确实不起作用。是我的工作流程有误,还是我误解了那些关于更改历史记录的警告?
关于 rebase
的规则是这样的:你应该只 rebase 你的本地分支 一旦分支是 public 任何人都可以获取的分支,你不应该再次在这个分支上变基,否则你会破坏所有其他已经克隆了这个分支的仓库。
如果出于某种原因您确实决定 rebase
public(推送分支),您必须确保所有拉出该分支的用户都知道您的 rebase
。
您可以使用 git pre-rebase
挂钩检查它以拒绝变基或在这种情况下显示警告或错误
一般经验法则:永远不要重写已经发布的历史。很可能有人已经获取了您的提交;如果你改写历史,那些人一拉改写的历史就麻烦了。
不太严格的经验法则:在某些情况下,当您绝对确定你是唯一一个在那个分支工作的人。
就我个人而言,我认为可以在 GitHub 存储库的单个分支中重写已推送的功能分支的历史记录,因为我不希望其他人在该分支上工作。不过这只是个人意见。
阅读了 git 工作流程,我想知道重写历史是否合适。我的工作流程以及我想象的许多其他工作流程是这样的:
- 获取 Github 存储库,我们称其为 rep1
- 做一个叉子,那就是 rep2
- git 在本地克隆它来使用,即 rep3
- 进行更改,提交给 rep3
- 完成后,推送到 rep2 并在进行 PR 之前征求其他人的反馈
当我收到反馈时,似乎我想做一些变基和压缩,因为反馈通常是一些小事,比如重新措辞评论或一开始就应该有所不同但不值得的事情他们自己的承诺。
但是从文档来看,我似乎不应该更改 rep2 上的历史记录,而且 --ammend 之类的东西在这种情况下确实不起作用。是我的工作流程有误,还是我误解了那些关于更改历史记录的警告?
关于 rebase
的规则是这样的:你应该只 rebase 你的本地分支 一旦分支是 public 任何人都可以获取的分支,你不应该再次在这个分支上变基,否则你会破坏所有其他已经克隆了这个分支的仓库。
如果出于某种原因您确实决定 rebase
public(推送分支),您必须确保所有拉出该分支的用户都知道您的 rebase
。
您可以使用 git pre-rebase
挂钩检查它以拒绝变基或在这种情况下显示警告或错误
一般经验法则:永远不要重写已经发布的历史。很可能有人已经获取了您的提交;如果你改写历史,那些人一拉改写的历史就麻烦了。
不太严格的经验法则:在某些情况下,当您绝对确定你是唯一一个在那个分支工作的人。
就我个人而言,我认为可以在 GitHub 存储库的单个分支中重写已推送的功能分支的历史记录,因为我不希望其他人在该分支上工作。不过这只是个人意见。