我在Git中有一个staging和main分支似乎有点不同步。我使用的是GitLab,打开了一个从stage到main的合并请求,只是想看看分支之间的区别;更改";已经在主分支中了,对此我有点困惑;更改";选项卡是添加一个已经在主分支中的文件,并且这两个文件是相同的。
然而,我在暂存分支上看到了一些提交,它们还没有进入主分支。这很好,我想暂时不让他们进入主干道。
我想知道如何使分支同步,这样当我打开从stage到main的合并请求时,唯一的更改就是那些实际上不在main中的更改。为什么已经在主体中的文件显示为";添加";当我打开合并请求时?
理想情况下,我不想接触主分支,而是用主分支重建临时分支,并将提交保留在不主分支的阶段上。
之所以会发生这种情况,是因为您的暂存分支中有已合并到主分支中的提交。
在Gitlab级别上,这是一个视觉上的不准确,但从数字角度来看,这不是一个问题。Gitlab在其web界面中将所有提交显示为更改。Git足够聪明,可以在staging中选择新的提交,并在合并的最后一个提交之后将它们添加到main中,这样您就可以安全地进行合并。
您可以通过合并过渡分支上的主分支来修复视觉不准确:
git fetch origin main:main
git checkout staging
git merge main
# fix conflicts, if any
git push
根据您到目前为止所说的,您的Git工作流程听起来有点奇怪。回到Git的基础,获得基本的Gitflow工作流设置,或者根据您的需求获得更简单的版本。
归根结底,它非常简单。。。
- 从开发分支创建功能分支
- 在开发部门工作
- 从功能分支合并更改的请求-->开发部门
工作完成。并相应地向上移动堆栈。
每当您在Pull Request中看到不应该存在的更改时,通常是因为您正在合并Dev->在执行上面的第3步之前进行特征分支,这会导致更多的问题和奇怪的行为,就像你正在经历的那样。
希望以上是一些提示,让你朝着正确的方向前进。但是,如果不了解现有Git工作流程的具体细节,这是一个不可能回答的问题。