重新设置分支的 git 同步

标签 git

我最近有一个 question answered关于多计算机 git 开发设置,我得到的解决方案确实用 master 解决了我的情况分支,但不是基于主分支的侧分支。

这是我当前的设置:

A--B--C--D  master
          \
           E--F--G--H  BUG_37

BUG_37是一个分支,正在为系统中的功能请求开发对可选跟踪错误的修复,最终将 merge 到主线中,但暂时是分开的。在这种状态下的存储库,一台机器上,我对 master 进行了一些更改分支:

A--B--C--D--I--J--K  master
          \
           E--F--G--H  BUG_37

然后我重新设置了 BUG_37 的基线分支到 master ,以确保它作为对最新更改的增强工作:

A--B--C--D--I--J--K  master
                   \
                    E1--F1--G1--H1  BUG_37

假设 rebase 有一些冲突需要在 rebase 最终确定之前手动修复。如果我将这些更改推送到远程存储库,现在希望将更改 pull 到另一个仍然具有原始设置的开发系统,那么最好的方法是什么? git pull --rebase将再次运行 rebase,我将不得不手动解决我第一次遇到的冲突,对吗?如果我再次经历冲突时犯了一个小错误,例如 E1-H1 在这个新系统中略有不同,我将使存储库更加不同步。

如何获取原始状态的本地存储库和第三种状态的远程存储库,并更新本地存储库以与远程存储库完全匹配(删除更改 E-H 并将 BUG_37 的 HEAD 移动到新位置)?

最佳答案

我根本不会在已经共享的分支上 rebase 。虽然它会产生最干净的历史记录,但它会更改 BUG_37 中所有提交的哈希值。因此,在目标机器上,您需要完全删除 BUG_37 并重新 pull 它。这样做一次或两次是可以的,但作为常规工作流程就不是很好了。

master merge 到BUG_37中会容易很多;然后可以将 merge 提交(您修复冲突的地方)推送到其他机器,并且不需要删除分支。

关于重新设置分支的 git 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218133/

相关文章:

git - Yii 配置和 git : how to manage sensitive information securely?

git - 如何根据工作树中的更改创建新的 git 分支?

windows - windows下如何创建md文件

git - 能够处理文件移动的版本控制系统?

git - 在 rebase 之前保存 Git 状态

git - 如何自动更新git hooks?

git - 如何扩展 git 存储库

git - K8S : How to reach pod with SSH service (Gitea) over the same host ingress-nginx exposes as HTTP?

git - 从 GIT 提交消息中删除的 YouTrack 命令

git - 无法在我的 Ubuntu 服务器上克隆存储库 - EC2