1

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

考虑到我已经将这些更改推送到远程存储库,有没有办法让我在本地解决这个问题,所以我的拉取请求将不再包含fileC

4

2 回答 2

2

只需创建一个包含所有必要提交的新头,开始在您的“错误”变更集所基于的同一个父级分支。然后为您创建的新头部创建一个新的拉取请求。

之后,您可以选择使用包含不需要的fileC的变更集删除不需要的头,但这不是必需的。该strip命令将派上用场(它是一个扩展,需要在您的 mercurial 配置文件中激活)

于 2016-02-16T12:01:25.617 回答
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 status,您将看到提交后的所有更改

c- 删除 FileC 并再次提交并使用 -f 开关再次推送

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- 保留历史记录:您可以简单地删除文件 C,将其从 repo 中删除,再次提交并将本地推送到主服务器。这将纠正您的问题,但将对主服务器进行额外的提交,并将显示在历史记录中。

于 2016-07-13T04:44:56.037 回答