gpt4 book ai didi

带有多台机器的 git 单一开发人员 - rebase 和提交出现两次

转载 作者:太空狗 更新时间:2023-10-29 13:15:21 25 4
gpt4 key购买 nike

一些背景:

  1. 我是一名在一个网站上工作的开发者。
  2. 我正在使用 git 进行版本控制。
  3. 我有多台电脑用于工作:办公室、家里和笔记本电脑

目前,我的服务器上有一个中央裸存储库。每台计算机都从该存储库克隆并将更改推送到该存储库。我目前有分支 Master 和分支 dev。所有的工作都在 dev 分支中完成。 Master 始终是最新的、稳定的生产代码。更改可以随开发中正在进行的更改一起应用于 Master。

我的日常工作流程包括:

git checkout dev
//pull in changes from remote
git pull
//make and commit changes as need throughout the day
git add -u
git commit
//these steps only happens when I know master has changed
git checkout master
git pull
git checkout dev
git rebase master //to get changes to master into dev branch
//push changes to central remote at end of day
git push

我相信这对于单个开发人员来说应该是一个相当标准的工作流程。

现在把所有这些都排除在外,我的问题的目的。我最近遇到了一种情况,我不确定将来如何正确处理以及如何预防。目前,我的开发分支是一个长期运行的开发分支,它是对网站一部分的重大重写。因此,它已经开发了几个月。在我做这项工作的同时,我也一直在对 Master 进行小的更改/错误修复。当我完成对 Master 的其中一项更改后,我将 dev 重新设置为 Master 以获取更改,然后将它们推送到中央仓库。这一直运行良好。

但是,我在几天前对 Master 进行了更改 - 这是大约一个月以来的第一次此类更改。当我去 rebase 时,一切似乎都乱了套。我在 Master 中不存在的文件上遇到 merge 冲突,而且我在相同的文件中一遍又一遍地遇到相同的冲突。在花了一天的大部分时间试图解决所有的冲突之后,我终于放弃了。

今天早上,我又去尝试了,但在我开始之前,我检查了项目提交历史,发现了一些很奇怪的东西。我发现大约有 15 次提交是重复的。它显示了从 07/12/2012 到 08/24/2012 的所有提交。然后,我再次列出了相同的提交,所有这些都具有不同的 SHA 哈希值。直到我看到提交的日期都按照您期望的时间顺序列出时,我才注意到它,但它突然又跳回了过去。

为了解决这个问题,我做了另一个 rebase,但跳过了重复的提交。当我这样做时,一切都像我预期的那样工作,根本没有冲突。

那么,我想问你们的是,这些提交是如何完成两次的,我该如何防止这种噩梦在未来再次发生?正如问题的标题所暗示的那样,我认为这个问题与我使用 rebase 和推送 rebase 分支有关。但我真的只是在猜测。我只需要一些帮助来弄清楚我做错了什么。

最佳答案

我认为您的模型本质上与拥有三个开发人员相同,因为您拥有三台开发机器。因此,您的开发分支在这个意义上是共享的。我还读过 SO,作为共享分支 rebase 会导致问题, merge 比 rebase 共享分支更好。阅读后,我开始仅对私有(private)分支使用 rebase ,并取得了良好的效果。我建议创建一个测试存储库并尝试这两种方法以查看它们的比较。

如果我能找到其他 SO 问题,我会在此处添加一个链接。

编辑:

这是Rebasing remote branches in Git

当然,对此众说纷纭。 :)

关于带有多台机器的 git 单一开发人员 - rebase 和提交出现两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com