TortoiseHg - 如何在推送到远程存储库后从分支中删除文件

时间:2016-02-16 11:47:41

标签: mercurial repository branch commit tortoisehg-2.0

我已修改,提交并推送 fileA fileB fileC 。我应该只推送“fileA”和“fileB”,由于这个不需要的 fileC ,我的拉取请求已被拒绝。

请记住,我已将这些更改推送到远程存储库,有没有办法让我在本地修复此问题,以便我的拉取请求不再包含 fileC

2 个答案:

答案 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中删除它,提交并再次将你的本地推送到主服务器。这将解决您的问题,但将会有一个额外的提交给主人,它将显示在历史记录中。