如何在git rebase交互后解释“我们删除”

时间:2013-03-26 11:41:33

标签: git git-rebase

在处理特定于功能的分支(来自'开发'分支)时,我采取了错误的方法(几次:/)并且基本上想要在我当前提交之前删除此分支上的所有提交。

我之前在这种情况下所做的是做git rebase -i development并删除所有提交之前我想保留的提交(最新的提交)然后执行git push -force更新远程仓库只包含我最近的黄金提交。

执行此操作后,当我为此rebase提交提交更改的时间时,看起来git对我的请求有点奇怪的响应。它有一些文件说

both modified:      app/helpers/statistics_helper.rb
deleted by us:      app/models/referrals/chart.rb
deleted by us:      app/views/statistics/_referrals.html.haml
deleted by us:      app/views/statistics/_referrals2.html.haml
deleted by us:      app/views/statistics/_referrals3.html.haml

我不知道如何回应这个。如果我git add前面有“我们删除”的文件,它会删除这些文件吗?

1 个答案:

答案 0 :(得分:1)

通过删除提交,就好像它们从未发生过一样。因此,如果您在刚刚删除的先前提交中添加了任何文件,那么这些文件也将被删除。那可能是你看到那条消息的时候。这可能会删除您想要作为最终结果的一部分的预先存在的文件的更改。我认为你错误地使用了rebase。

如果在上次提交结束时,所有内容都处于您希望的状态,则应该只需压缩您的上一次提交。你可以通过几种方式做到这一点。正如您所做的那样使用rebase -i为所有提交行指定ssquash而不是edit,除了第一个提交行之外。

另一种方法是:

git reset --soft HEAD~<N>
git commit

其中<N>是提交的数量,你需要压缩。