GIT REBASE无法工作

4
我在本地仓库进行了一些提交,并将它们推送到在线仓库。然后我意识到有太多的提交,因此我想把它们压缩成更少的提交。最好从“倒数第二个”到“第一个”进行压缩,即保留当前提交并压缩所有其他我的提交。
当我执行以下操作时:
 git rebase -i origin/branch_name

弹出了一个带有noop的窗口。我没有看到任何pick。我该怎么办?


3
无法抹掉已经推送的提交记录。 - njzk2
我在这里问了一下,你能告诉我这是否正确吗:http://stackoverflow.com/questions/18651000/how-to-merge-many-commits-into-one-in-github-repository - Ashish Negi
3
从技术上讲,如果您拥有远程代码仓库的权限,那么您可以这样做。但是这真的是一个不好的做法。 - njzk2
是的,但那只是我的分支,适合学习。有时候困难的时刻需要做出艰难的决定。 - Ashish Negi
2个回答

4

当我收到noop消息时,通常意味着在git rebase -i的参数中使用的分支超出了当前分支。

git log A..B
# prints the commits between A's head and B's head

git log B..A
# prints nothing

git status
# On branch A

git rebase -i B
# got 'noop' because there are no commits in the log above

在这种情况下,交换受影响的两个分支是有帮助的。
git checkout B
git rebase -i A

0

rebase 命令的参数是您想要压缩的提交范围。在您的情况下,可能是这样的:

git rebase -i <sha-1 for first commit>..HEAD^

(HEAD ^ 是您分支头部的父提交。)
然后,您可以通过使用“squash”命令替换交互式脚本中的“pick”命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接