0. 问题 #
组内小伙伴使用git又遇到了问题:develop分支(受保护)禁止直接推送,需要使用自己的分支进行push然后再merge到develop分支。但是小伙伴直接再develop分支进行了推送,结果失败了,不知道该怎么办了。
1. 解决思路 #
现在的情况是:在 develop 分支上有了本地的提交(commit),但是远程仓库拒绝了你的推送(push)。
需要做的操作是:
- 基于你当前的
develop分支(包含你的新提交)创建一个新的功能分支。 - 将本地的
develop分支重置(reset)到和远程仓库一样的状态。 - 推送你的新功能分支到远程仓库。
- 通过代码托管平台(如 GitLab, GitHub, Gitee)发起一个合并请求(Merge Request / Pull Request),将你的新分支合并到
develop分支。
2. 使用 TortoiseGit 的详细步骤: #
1. 创建并切换到新分支 #
首先,我们需要把你那次推送失败的提交放到一个新的分支上。
- 在你的项目文件夹上右键,选择 TortoiseGit -> Show log (显示日志)。
- 在日志窗口的顶部,你会看到你本地的
develop分支比origin/develop要领先一个或多个提交。这个就是你不能推送的提交。 - 右键点击最顶部的那个提交(也就是你自己的提交),选择 Create Branch at this version… (在此版本创建分支…)。

- 在弹出的对话框中:
- 输入一个新的分支名,例如
feature/some-cool-feature。 - 勾选 “Switch to new branch” (切换到新分支) 这个选项。
- 点击 “OK”。

- 输入一个新的分支名,例如
现在,你的代码改动已经在一个新的安全的分支上了。
2. 推送新分支并发起合并请求 #
- 在项目文件夹上右键,选择 TortoiseGit -> Push… (推送…)。

- 确认推送的是你当前的新分支,然后点击 “OK” 完成推送。

- 最后,打开你的代码托管平台(如 GitLab/GitHub),你应该会看到一个提示,让你基于刚刚推送的分支创建一个合并请求(Merge Request / Pull Request),按照提示操作即可。



3. 重置 develop 分支 #
接下来,我们需要把本地的 develop 分支恢复到和远程仓库一致的状态。
- 再次在项目文件夹上右键,选择 TortoiseGit -> Switch/Checkout… (切换/检出…)。
- 在 “Branch” 下拉列表中选择
develop分支,然后点击 “OK”,切换回develop分支。
- 点击Git同步–>右键推送失败的版本–>还原此版本做出的变更–>是–>确定–关闭





- 右键–>TortoiseGit–>还原–>选择推送失败的文件–>确定


- 最后拉取一下就可以了
现在,你的本地
develop分支就和远程仓库完全同步了。
这样就完成了整个流程,既保证了 develop 分支的规范,也成功地提交了你的代码改动。