2

我正在尝试将一些提交压缩到我希望贡献的 github 项目的 pull-request-ready 包中,但是使用git rebase -i master并没有给我期望的选项(基于对 StackOverflow 和其他地方的阅读。这个这是我第一次尝试压缩提交,所以我可能只是错过了一些东西。

该项目的历史大致如下:

# On branch master
git pull origin master
git fetch upstream
git rebase upstream/master
git checkout -b feature
git commit -m "some work"
git commit -m "a little more work"
git commit -m "finishing up feature"
git checkout master
git pull origin master
git fetch upstream
git rebase upstream/master
git checkout feature

此时,origin/master 或 upstream/master 没有任何变化,所以即使没有重新设置我的功能分支,也与 origin 和上游呈线性关系。当我这样做时git rebase -i master,我的任何提交都没有在弹出的编辑器中列出,完全空白,rebase 的输出是Successfully rebased and updated refs/heads/feature.

我知道我可以使用

git checkout master
git merge --squash feature

但我的理解是,如果我这样做,我将失去所有的历史。

有没有另一种方法来完成我想要的,或者我只是错过了显而易见的事情?

更新

我希望看到的是一个编辑器,其中列出了我在功能分支中所做的提交,以便我可以选择要选择的提交和压缩的提交。我实际看到的是一个空编辑器,这让我想知道是否因为我当前的分支与我的主分支是线性的,所以不需要重新设置任何内容,因此编辑器中不会出现任何提交(尽管我想我会期望得到一个“nothing to rebase” 类型的消息,而不是上面提到的成功消息)

4

1 回答 1

0

如评论中所述,问题根本不在于git rebase -i master命令,而在于我的编辑器,它没有处理来自 git 的输入以适当地显示可用的提交。

更改为其他编辑器解决了该问题。

于 2012-12-10T16:57:33.700 回答