0

目前,我的 git 树看起来像这样

                 master
                   ^
                   |
                Commit 3
                   ^
                   |
                Commit 2
                   ^
                   |
                Commit 1
                   ^
                   |
           remote/origin/master

我想要做的是,从 Commit 2 和 3 中删除更改,就像它们从未存在一样,然后推送更改。我隐藏了一些未提交的更改(它们主要是配置文件和 makeFiles,所以我不想将它们放在树中)。另外,我想知道最好的流程是什么,这样我就不会像现在这样弄乱我的工作目录。请帮忙

Git新手,

谢谢。

4

1 回答 1

2

rebase是你的朋友吗?该rebase命令提供了一种交互模式,您可以在其中决定对指定提交范围内的每个提交执行什么操作。

可能最简单的方法就是在远程分支 rebase之上。master

git rebase -i origin/master master

您正在告诉 git 到rebase它的远程对应物之上的主分支。如果没有-i标志(交互式),这将有效地做任何事情。

现在您配置的编辑器应该打开,您应该看到如下内容:

pick abcdefg Commit 1
pick hijklmn Commit 2
pick opqrstu Commit 3
(... maybe more commits)

# Here will be comments which explain what's going on ...

现在要删除提交,您只需从文件中删除相应的行。所以它应该是这样的:

pick abcdefg Commit 1
(... maybe more commits)

# Comments can stay ...

现在关闭编辑器,git 将按照分支rebase顶部的指定提交。origin/master

您可以在 GitPro 书籍的更改历史章节或变基文档中阅读有关交互式变基的更多信息。

希望有帮助!

于 2014-07-04T06:34:19.830 回答