我已修改,提交并推送: fileA , fileB 和 fileC 。我应该只推送“fileA”和“fileB”,由于这个不需要的 fileC ,我的拉取请求已被拒绝。
请记住,我已将这些更改推送到远程存储库,有没有办法让我在本地修复此问题,以便我的拉取请求不再包含 fileC ?
答案 0 :(得分:2)
只需创建一个包含所有必要提交的新头,开始在您的'错误'变更集基于的同一父级处分支。然后为您创建的新头创建一个新的拉取请求。
之后,您可以选择使用包含不需要的 fileC 的变更集删除不需要的磁头,但这不是必需的。 strip
命令将派上用场(它是一个扩展,需要在你的mercurial配置文件中激活)
答案 1 :(得分:0)
有两种方法可以做到这一点: 1-修复存储库并更正历史记录,以便从历史记录中清除不正确的提交:
a-做一个git日志:
Desphilboy@computer:~/workspace/project(master)$ git log
commit dee4f318231b07ca3dbf213579dbfdeb89f72591
Author: Desphilboy<desphilboy@yahoo.com>
Date: Wed Jul 13 11:04:43 2016 +1000
feat(project): this is a wrong commit pushing FileC
commit e9772baa0abefc3423db2e6b518c71bade74abd9
Author: Somebody else<someoneelse@yahoo.com>
Date: Tue Jul 12 12:05:18 2016 +1000
feat(project): added new API endpoint
....
b-在错误提交之前重置--soft到哈希码:
Desphilboy@computer:~/workspace/project(master)$ git reset --soft e9772baa0abefc3423db2e6b518c71bade74abd9
这会在保留所有更改的同时还原您的提交。如果您现在执行git状态,您将在提交后看到所有更改
c-删除FileC并执行另一次提交并使用-f switch
再次推送Desphilboy@computer:~/workspace/project(master)$ rm FileC
Desphilboy@computer:~/workspace/project(master)$ git rm FileC
Desphilboy@computer:~/workspace/project(master)$ git add .
Desphilboy@computer:~/workspace/project(master)$ git commit -m "some commit message"
Desphilboy@computer:~/workspace/project(master)$ git push -f
2-保持历史: 你可以简单地删除fileC,从repo中删除它,提交并再次将你的本地推送到主服务器。这将解决您的问题,但将会有一个额外的提交给主人,它将显示在历史记录中。