我已修改、提交和推送:fileA、fileB和fileC。我应该只推送“fileA”和“fileB”,并且由于这个不需要的fileC ,我的拉取请求已被拒绝。
考虑到我已经将这些更改推送到远程存储库,有没有办法让我在本地解决这个问题,所以我的拉取请求将不再包含fileC?
我已修改、提交和推送:fileA、fileB和fileC。我应该只推送“fileA”和“fileB”,并且由于这个不需要的fileC ,我的拉取请求已被拒绝。
考虑到我已经将这些更改推送到远程存储库,有没有办法让我在本地解决这个问题,所以我的拉取请求将不再包含fileC?
只需创建一个包含所有必要提交的新头,开始在您的“错误”变更集所基于的同一个父级分支。然后为您创建的新头部创建一个新的拉取请求。
之后,您可以选择使用包含不需要的fileC的变更集删除不需要的头,但这不是必需的。该strip
命令将派上用场(它是一个扩展,需要在您的 mercurial 配置文件中激活)
有两种方法可以做到这一点: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 中删除,再次提交并将本地推送到主服务器。这将纠正您的问题,但将对主服务器进行额外的提交,并将显示在历史记录中。