master
中,然后我决定再次合并相同的功能分支,但我无法这样做。步骤如下:
- 合并功能分支到
master
的PR - 从(
master
)撤销PR合并 - 尝试创建新的PR再次将功能分支合并到
master
中。 - 得到这个消息:
没有任何东西可以比较。
master
已经更新了所有来自功能分支的提交。尝试切换你的比较基准。
有什么建议可以让我再次将功能分支合并到master
吗?
master
中,然后我决定再次合并相同的功能分支,但我无法这样做。步骤如下:
master
的PRmaster
)撤销PR合并master
中。没有任何东西可以比较。
master
已经更新了所有来自功能分支的提交。尝试切换你的比较基准。
有什么建议可以让我再次将功能分支合并到master
吗?
只需撤销还原即可。点击还原按钮后,您将创建一个新的PR (第二步)。一旦这个PR被合并,您将有选项将其撤销,这将创建一个新分支,并将所有更改恢复到该分支中。然后,您可以拉取此分支,并根据需要进行更改,并创建一个新的PR。您将失去Github上所有提交消息,但所有文件更改仍将存在。在新的PR中参考您的原始分支和还原即可。
任何事情都要避免复杂的变基或强制推送到主分支。
# do the needed changes in the feature branch
$ git commit -m "fixed issues in feature-branch'
# create new branch tracking master branch
$ git checkout -b revert-the-revert-branch -t master
# revert the reversion commit
# find it from your git log
# in linux try: 'git log | grep revert -A 5 -B 5'
$ git revert <revert-commit-hash>
# checkout the original feature branch
$ git checkout feature-branch
# merge the revert branch
$ git merge revert-the-revert-branch
# handle merge conflicts and commit and PR
我知道这个问题有点老,但是如果有人需要一个好的答案,这里有:
当您合并了PR并删除分支后,稍后撤消此合并,您可以创建一个新分支,然后撤消撤消。将其推送到远程仓库并创建一个新的PR。
这将创建一个名为“revert“revert #123 blabla”的提交的新PR,其中包含所有差异上的更改。
https://www.tildedave.com/2012/11/24/reverting-a-github-pull-request.html
git log --oneline
。在此搜索用于PR的提交并复制提交哈希码。git cherry-pick YOUR_HASH_CODE
。这将把该特定提交提取到头部。你应该拉取最新的主分支,将你的分支在主分支上进行变基,然后你就能够发起另一个拉取请求。
之所以无法自动合并回去是因为分支的基础与主分支的HEAD不同步。
撤销还原可能会变得混乱,有时也缺乏透明度。
此外,撤销还原会防止其他具有此代码的分支正确地合并。
假设您在主分支上有功能x,并将其合并到分支y中。然后您决定主分支不应该已经合并了功能x,因为它依赖于分支y。所以,您在主分支上进行还原操作。当您尝试合并分支x时,git-merge命令会看到原始合并,并欣喜地宣布一切正常,分支已经被合并,省略了这些针对功能x的提交,即使您希望它们与分支y合并。
git rebase master
命令,强制推送分支即可。完成。 - theannouncergit checkout master
; git pull
; git checkout feature
; git pull
; git checkout -b feature_rebase
; git rebase master
; git push
(长版本);尝试在远程 git 存储库上创建 PR - 零文件。 - bshirleygit fetch
git checkout <撤销的撤销分支名称>
您所有的更改都将在那里,并且当您创建 PR 时,更改将显示。
需要明确的是 - 在撤销 PR 上点击“撤销”会给您一个名称,例如 revert-202-revert-201-originalbranchname
。这就是您想要编辑的分支!
这是我所做的事情。
检出您的特性分支
将其与基础分支合并: 这将使您的特性分支处于基础分支的状态,因为您的特性分支提交已经成为基础分支的一部分。您的特性分支提交将位于撤销PR提交下方。
然后撤销撤销您的PR的提交。这将使您的特性分支恢复到其原始状态,但现在有一个新的提交。
推送到特性分支,然后提出PR。
为什么这样做有效? 通过合并,您可以将您的特性分支与基础分支同步,即使它具有与基础相等的提交-需要超越基础并获取撤消更改的提交以将其添加到您的特性分支中。
通过撤销,您可以撤消删除您更改的更改,并且现在您的更改可以成为在基础分支之前的新提交的一部分。
revert-123-revert-123..
或类似的,你可以使用git branch -m <new_name>
重命名分支,然后推送提交 -git push origin -u <new_name>
,最后删除那个丑陋的分支名称git push origin --delete revert-123-revert-123
。更多信息请参考 https://linuxize.com/post/how-to-rename-local-and-remote-git-branch/。 - Aleks