2

Git新手在这里!这是场景:在 Laravel + Envoyer 中构建的应用程序用于部署。所以我有一个 master / develop 分支,第一个部署到 site.com,另一个部署到 dev.site.com

我在开发分支上开发了一项新功能,并在 dev.site.com 上进行了测试。所以我已经将开发分支合并到主分支中。现在似乎开发分支不再活动(任何更改都会影响主分支,反之亦然)。换句话说,它们不再是分开的。

我读过合并后重用分支不是一个好习惯,但在这种特定情况下,我需要再次拥有一个名为“develop”的分支。

我尝试删除开发分支并创建一个具有相同名称的新分支(如此处所建议但没有成功:似乎旧的开发分支已恢复。

有什么建议吗?

来自 bitbucket 的屏幕截图

4

2 回答 2

0

您想合并 master 以开发分支。为此,运行

git checkout develop
git merge master
git log

现在您可以看到您的开发分支包含来自主分支的所有提交,包括您将开发合并到主分支时的提交。你可以像往常一样在开发分支中开发。

另请参阅此问题:Git 重用分支或删除并再次创建

于 2020-11-13T15:38:45.390 回答
-1

在 git 中,分支是轻量级的。您可以将分支视为只是一个标签或指向特定提交 X 的指针。当您“提交到一个分支”时,它会将旧的提示提交与具有父子关系的新提交相关联,并推进分支指针。关系存储在提交中,它与分支标签分开存在。

每个提交可能有多个父级。这就是您合并时发生的情况:它使用 2 个父项创建了一个新的提交 M(称为“合并提交”)。在那个时间点(如果操作正确的话)你可能有你的“master”分支指向合并提交 M,而你的“develop”分支仍然指向你最新的 dev 提交(如果蓝色分支我假设它是 83bebd6是“发展”)。

现在,要确定您的分支是否发散,您可以运行:

git show master
git show develop

这将显示每个分支指向的提交(再次考虑提交的标签)。

要知道您当前所在的分支,请运行git branch. 如果您当前处于“master”,则意味着每次提交都会推进并更新master“标签”(并且一旦提交,它将与您拥有的任何其他分支“分歧”,因为通常您不能提交多个一次分支)。

尽管这是一个危险且具有破坏性的操作,但您始终可以“重置”您的分支“标签”以指向其他一些(以前的甚至完全不相关的)提交:

git checkout develop
git reset --hard 83bebd6

这将在本地使“开发”指向提交 83bebd6。

如果您希望此分支在 bitbucket 服务器上重置(这更加危险和破坏性),您可以执行以下操作:

git push -f
于 2018-05-05T14:17:42.903 回答