【发布时间】:2014-05-26 08:59:11
【问题描述】:
昨天我的队友不小心做了一个糟糕的更改,在合并期间泄露了一些凭据(粗略的重建):
# bad commit reconstruction
$ git pull
... no automatic merge happened ...
... some manual merge goes here ...
$ git add . # instead of `git add src`
$ git commit -m "merged"
然后提交了另一个非合并好的更改,但没有推送更改:
# good commit reconstruction
... edit ...
$ git add .
$ git commit -m "foo bar"
我想修改 bad 提交,以便无法将凭据推送到远程存储库。由于尚未推送本地提交,首先,我尝试使用 git rebase --interactive HEAD~2 使用 this solution(一个老 SVN 用户希望仅对这些 bad 和 good 修订进行重新定位),但它似乎无法显示比预期更多的提交(那些已被拉出的提交)并完全忽略 bad 提交。据我了解,由于合并,它不起作用。当前树如下:
* GOOD [master]
|
* merge + BAD
|\
| |
| * pulled [remote/origin/master]
| |
| * pulled
| |
| * pulled
| |
| * pulled
如何修改 bad 提交,排除包含敏感数据的文件,使其也可以成为 good 提交并准备好推送?
【问题讨论】:
-
您是否尝试使用
git rebase -p @~2? 和-p来保留合并? -
@VonC 刚刚尝试过,它完全符合我的要求。能否请您添加答案,以便我标记它并关闭问题?