使用master变基后无法推送到远程分支?

时间:2021-07-26 21:17:36

标签: git git-rebase git-push remote-branch

所以我在我的分支上使用了 Id - 但我想将这些更改推送到我的远程分支。但是,每当我尝试使用 >>> stacked = df.rename(columns=lambda c: int(c.split()[-1]), level=0).stack(level=0) >>> stacked Col_A Col_B 2021-07-15 1 1 2 2 3 4 2021-07-16 1 5 6 2 7 8 >>> stacked.rename_axis(['Date', 'Header_No']).reset_index() Date Header_No Col_A Col_B 0 2021-07-15 1 1 2 1 2021-07-15 2 3 4 2 2021-07-16 1 5 6 3 2021-07-16 2 7 8 时,我都会得到以下信息:

git rebase origin/main

我之前已经推送到这个分支,所以我知道远程存在。我只想用我的 rebase 的更改来更新它。我想到了从其他堆栈溢出线程使用强制推送的想法,但它似乎不起作用。任何人有任何想法?我只想用 rebase 的更改更新远程分支。谢谢

1 个答案:

答案 0 :(得分:1)

如果你之前(没有 -f)推送到这个分支并且它有效,看起来分支被保护免于重写,这是主分支的常见策略和良好实践(例如 master 或 { {1}}) 因为重写它会影响任何基于它工作的人。

您可能想要经常做的是在没有 rebase 的情况下拉取新的更改,然后您就不会遇到那个问题。但是,如果您真的想重写它,则需要获得许可才能这样做。假设您拥有它,您可以在任何常用版本控制提供程序(github、bitbucket、gitlab 等)的管理设置中找到添加/删除分支保护的设置。


如何在无法重写的分支上撤消变基

根据您的情况,您可以通过多种方式执行此操作,但接下来的命令应该对大多数情况有用:

main - 查看您的 HEAD 指向的所有提交(查看变基前的情况很有用,因为您可以对变基前的最后一个散列执行 git reflog,您会看到您不想丢失的每个本地工作提交)。

git log <hash> - 将分支重置为历史上的任何点,例如重置为变基之前的情况或远程版本,具体取决于您希望如何处理它

git reset --hard <hash> - 在当前分支中应用单个提交

假设您了解创建/删除分支和提交的基础知识,通过这些命令,您可以将情况恢复到 rebase 之前的状态。

例如,您可以将本地工作移动到临时分支,重新创建您重新定位的分支,将其重置为远程版本,然后从临时分支中挑选每个有价值的提交。

或者,如果您在 git cherry-pick <hash> 之后记录了所有有价值的提交,您可以简单地将分支重置为 rebase 之前的状态,然后挑选这些提交。