跳到主要内容

手滑误推送了受保护的git分支怎么办

·1067 字·3 分钟

0. 问题 #

组内小伙伴使用git又遇到了问题:develop分支(受保护)禁止直接推送,需要使用自己的分支进行push然后再merge到develop分支。但是小伙伴直接再develop分支进行了推送,结果失败了,不知道该怎么办了。

1. 解决思路 #

现在的情况是:在 develop 分支上有了本地的提交(commit),但是远程仓库拒绝了你的推送(push)。

需要做的操作是:

  1. 基于你当前的 develop 分支(包含你的新提交)创建一个新的功能分支。
  2. 将本地的 develop 分支重置(reset)到和远程仓库一样的状态。
  3. 推送你的新功能分支到远程仓库。
  4. 通过代码托管平台(如 GitLab, GitHub, Gitee)发起一个合并请求(Merge Request / Pull Request),将你的新分支合并到 develop 分支。

2. 使用 TortoiseGit 的详细步骤: #

1. 创建并切换到新分支 #

首先,我们需要把你那次推送失败的提交放到一个新的分支上。

  1. 在你的项目文件夹上右键,选择 TortoiseGit -> Show log (显示日志)。
  2. 在日志窗口的顶部,你会看到你本地的 develop 分支比 origin/develop 要领先一个或多个提交。这个就是你不能推送的提交。
  3. 右键点击最顶部的那个提交(也就是你自己的提交),选择 Create Branch at this version… (在此版本创建分支…)。
  4. 在弹出的对话框中:
    • 输入一个新的分支名,例如 feature/some-cool-feature
    • 勾选 “Switch to new branch” (切换到新分支) 这个选项。
    • 点击 “OK”。

现在,你的代码改动已经在一个新的安全的分支上了。

2. 推送新分支并发起合并请求 #

  1. 在项目文件夹上右键,选择 TortoiseGit -> Push… (推送…)。
  2. 确认推送的是你当前的新分支,然后点击 “OK” 完成推送。
  3. 最后,打开你的代码托管平台(如 GitLab/GitHub),你应该会看到一个提示,让你基于刚刚推送的分支创建一个合并请求(Merge Request / Pull Request),按照提示操作即可。

3. 重置 develop 分支 #

接下来,我们需要把本地的 develop 分支恢复到和远程仓库一致的状态。

  1. 再次在项目文件夹上右键,选择 TortoiseGit -> Switch/Checkout… (切换/检出…)。
  2. 在 “Branch” 下拉列表中选择 develop 分支,然后点击 “OK”,切换回 develop 分支。
  3. 点击Git同步–>右键推送失败的版本–>还原此版本做出的变更–>是–>确定–关闭
  4. 右键–>TortoiseGit–>还原–>选择推送失败的文件–>确定
  5. 最后拉取一下就可以了
    现在,你的本地 develop 分支就和远程仓库完全同步了。

这样就完成了整个流程,既保证了 develop 分支的规范,也成功地提交了你的代码改动。

Anarkh
作者
Anarkh
博学之 审问之 慎思之 明辨之 笃行之