如何使一个远程分支与另一个相同
How to make one remote branch identical to another
关于起源,我有 2 个分支:master
和 development
。
master
领先于 development
几次提交,落后于几次提交。
我希望 master
分支的树与 development
分支的树相同(实际上是在谈论修订的树对象,而不是历史)。如果我在 master
分支上丢失任何东西也没关系,但是 development
分支应该完好无损。
这样做的原因是,我们有一个工作流程,我们在 development
上工作,并在我们准备好发布时合并到 master
。随着时间的推移,已经有一些直接提交到 master
。我们想让 master
恢复与 development
同步。
能否分享一下如何实现?我认为可行的一种方法是将 master
合并到 development
,然后从 development
中的合并还原提交,然后将 development
合并到 master
。
编辑:我无法强制推送。我需要创建一个拉取请求来进行任何更改。
只需将开发推送到远程主机(即使使用 -f 强制它):
git push -f origin develop:master
调整遥控器名称。
另一个骇人听闻的建议
如果你想让 master 看起来就像用 PR 开发一样,工作量尽可能少,这就是你想要做的:
git cat-file -p origin/develop # find the ID of the _tree_ of this revision
git commit-tree -p origin/master -m "Tree of master is now just like develop" id-of-tree-of-last-command # create a new revision with the same tree of develop... this will generate one ID
git checkout -b some-development use-id-printed-by-commit-tree
git push some-remote some-development
现在你可以从 some-development 创建你的 PR....如果你也想要 develop 成为这个修订的父级,将它作为另一个 -p 参数添加到提交树。
您遇到的是一个标准的 Git 开发问题,我们都 运行 遇到了这个问题,因此创建了一个分支方法。一些分支策略比其他的更受欢迎。最受欢迎的 3 个是:
Git流量(好像你需要的):https://nvie.com/posts/a-successful-git-branching-model/
Git中心流:https://guides.github.com/introduction/flow/index.html
我将快速描述如何解决您的问题:
- 在 'develop' 分支中,从 'master' 拉取。解决 'develop' 分支中的任何合并冲突,然后提交并推送到 'develop' 分支。'
- 从 'develop' 分支构建并确保所有内容都构建并通过任何单元测试(如果有的话)。
- 完成 Pull Request 将您的代码放入 'master' 分支,现在您的 'master' 分支和 'develop' 分支现在同步了。
这是解决您的问题的方法:
- 在 'develop' 分支中进行开发工作
- 在 'feature' 个分支中完成您的功能。创建拉取请求以从 'feature' 分支获取代码到 'develop' 分支。
- 从 'develop' 合并到 'release' 分支,从 'release' 分支构建包并部署到测试环境。
- 在 'release' 分支中构建测试并在同一个 'release' 分支中测试修复。
- 部署到生产环境后,将您的代码合并到 'master' 分支中,请勿触摸它。这是我们的黄金生产代码。
- 如果存在生产问题,请从 'master' 分支分支到名为 'hotfix' 的新分支,并从此处进行提交和构建,然后部署到生产中以进行紧急修复。
- 完成后,将修复向后合并到 'master' 分支,然后是 'release' 和 'develop' 分支。各个开发人员将在准备就绪后将修复吸收到他们的 'feature' 分支中。
- 我跳过了很多内容,但我在上面提到的称为 "GitFlow" 的分支方法上达到了要点。这是一个缓慢的过程,会故意减慢你的速度。您不必遵循此过程,也可以修改此过程以满足您的需要。这是一个更大的主题,您可以花数小时阅读。祝你好运。
关于起源,我有 2 个分支:master
和 development
。
master
领先于 development
几次提交,落后于几次提交。
我希望 master
分支的树与 development
分支的树相同(实际上是在谈论修订的树对象,而不是历史)。如果我在 master
分支上丢失任何东西也没关系,但是 development
分支应该完好无损。
这样做的原因是,我们有一个工作流程,我们在 development
上工作,并在我们准备好发布时合并到 master
。随着时间的推移,已经有一些直接提交到 master
。我们想让 master
恢复与 development
同步。
能否分享一下如何实现?我认为可行的一种方法是将 master
合并到 development
,然后从 development
中的合并还原提交,然后将 development
合并到 master
。
编辑:我无法强制推送。我需要创建一个拉取请求来进行任何更改。
只需将开发推送到远程主机(即使使用 -f 强制它):
git push -f origin develop:master
调整遥控器名称。
另一个骇人听闻的建议
如果你想让 master 看起来就像用 PR 开发一样,工作量尽可能少,这就是你想要做的:
git cat-file -p origin/develop # find the ID of the _tree_ of this revision
git commit-tree -p origin/master -m "Tree of master is now just like develop" id-of-tree-of-last-command # create a new revision with the same tree of develop... this will generate one ID
git checkout -b some-development use-id-printed-by-commit-tree
git push some-remote some-development
现在你可以从 some-development 创建你的 PR....如果你也想要 develop 成为这个修订的父级,将它作为另一个 -p 参数添加到提交树。
您遇到的是一个标准的 Git 开发问题,我们都 运行 遇到了这个问题,因此创建了一个分支方法。一些分支策略比其他的更受欢迎。最受欢迎的 3 个是:
Git流量(好像你需要的):https://nvie.com/posts/a-successful-git-branching-model/
Git中心流:https://guides.github.com/introduction/flow/index.html
我将快速描述如何解决您的问题:
- 在 'develop' 分支中,从 'master' 拉取。解决 'develop' 分支中的任何合并冲突,然后提交并推送到 'develop' 分支。'
- 从 'develop' 分支构建并确保所有内容都构建并通过任何单元测试(如果有的话)。
- 完成 Pull Request 将您的代码放入 'master' 分支,现在您的 'master' 分支和 'develop' 分支现在同步了。
这是解决您的问题的方法:
- 在 'develop' 分支中进行开发工作
- 在 'feature' 个分支中完成您的功能。创建拉取请求以从 'feature' 分支获取代码到 'develop' 分支。
- 从 'develop' 合并到 'release' 分支,从 'release' 分支构建包并部署到测试环境。
- 在 'release' 分支中构建测试并在同一个 'release' 分支中测试修复。
- 部署到生产环境后,将您的代码合并到 'master' 分支中,请勿触摸它。这是我们的黄金生产代码。
- 如果存在生产问题,请从 'master' 分支分支到名为 'hotfix' 的新分支,并从此处进行提交和构建,然后部署到生产中以进行紧急修复。
- 完成后,将修复向后合并到 'master' 分支,然后是 'release' 和 'develop' 分支。各个开发人员将在准备就绪后将修复吸收到他们的 'feature' 分支中。
- 我跳过了很多内容,但我在上面提到的称为 "GitFlow" 的分支方法上达到了要点。这是一个缓慢的过程,会故意减慢你的速度。您不必遵循此过程,也可以修改此过程以满足您的需要。这是一个更大的主题,您可以花数小时阅读。祝你好运。