使用场景:同一代码仓库A、B、B2的三个git克隆。 A和B是普通的,B2是裸的(使用--bare创建)。所有内容在我的控制下,即只有一个用户。
在B站点上,我进行工作(多个git提交),然后推送到B2。
- 在A站点上,git pull B2。 - 在A站点上,git rebase -i xx..HEAD来压缩一些提交并清理历史记录(一个很棒的命令)。 - 问:如何将结果传达给B站点?
我可以做:
- git push --force B2
但这不太对。在git pull B2之后,B站点的工作目录将具有奇怪的历史记录。
我需要某种方式来避免使用--force。我想从B站点正常推送之前丢弃B2上的xx..HEAD。也许:
在B2上(裸仓库)
- git reset --hard xx
我不确定这是否足够。我可以通过从A站点重新克隆(删除B2,git init --bare,从A推送)来完成,但这似乎有些过度。如何推送/拉取Git rebase帖子似乎相关,但我希望得到除“不要这样做”之外的答案。
最重要的是,我如何完全放弃B2上的提交,以便来自A的重新基础历史记录将被接受为新提交?
在B站点上,我进行工作(多个git提交),然后推送到B2。
- 在A站点上,git pull B2。 - 在A站点上,git rebase -i xx..HEAD来压缩一些提交并清理历史记录(一个很棒的命令)。 - 问:如何将结果传达给B站点?
我可以做:
- git push --force B2
但这不太对。在git pull B2之后,B站点的工作目录将具有奇怪的历史记录。
我需要某种方式来避免使用--force。我想从B站点正常推送之前丢弃B2上的xx..HEAD。也许:
在B2上(裸仓库)
- git reset --hard xx
我不确定这是否足够。我可以通过从A站点重新克隆(删除B2,git init --bare,从A推送)来完成,但这似乎有些过度。如何推送/拉取Git rebase帖子似乎相关,但我希望得到除“不要这样做”之外的答案。
最重要的是,我如何完全放弃B2上的提交,以便来自A的重新基础历史记录将被接受为新提交?