11

在 Git 中,我有时会处理长时间运行的分支。我喜欢不时地以 master 为基础,以便在我准备好时更容易合并。

变基后,我无法将先前推送的分支推送到远程,因为我的分支的历史不再与远程的该分支的历史一致。所以我必须先删除它。

这是我目前的工作流程:

git checkout my_branch
git rebase master
git push origin :my_branch  # Delete remote version of the branch
git push origin my_branch   # Push up my new version of history on this branch

是否有一个单一的原子命令可以替换最后两个命令?

4

2 回答 2

15

如果允许重写远程分支,则可以使用git push --force my_remote my_branch.

于 2012-06-01T14:06:09.427 回答
0

没错,git push -f在例子中是合适的。

原因是不需要重新创建整个分支,因为所有提交 pre-rebase 保持不变。

我们只需要将新的重新定位本地提交覆盖到包含非重新定位陈旧提交的远程仓库。


在我类似的用例中,git push -f由于我的远程仓库被错误地删除了,所以我在 PATH 中创建了一个 git-create shell 脚本,让我很容易:

git create my_branch
git push -f
于 2020-04-26T13:48:30.413 回答