如何删除未显示 'git rebase' 的提交?
How to remove a commit which does not show with 'git rebase'?
我有一个只有一个分支的仓库,名为 main
。
这是 git log --oneline --graph --all
的输出:
* 92033fe (HEAD -> main, origin/main) [test] Add some new tests
* 5e281c4 [style] Improve code formatting
* 50ccf6a release-1
| * 307cfba (tag: 1.0.0) release-1
|/
* 7d734b4 [feat] Add new feature
* 0b3c993 [fix] Fix some tests
这里发生的事情是我试图在事后将 50ccf6a
标记为 1.0.0
,但做错了,现在我复制了这个,并且似乎分支了,提交307cfba
,我想去掉它,而不影响分支的其余部分。
通常,我会 git rebase -i --root main
,但是这个特定的提交不会出现在提交列表中,只有那些我打算保留的:
pick 0b3c993 [fix] [fix] Fix some tests
pick 7d734b4 [feat] Add new feature
pick 50ccf6a release-1
pick 5e281c4 [style] Improve code formatting
pick 92033fe [test] Add some new tests
这里发生了什么?
提交 307cfba
不在分支 main
上。如果您希望它脱离分支 main
,那很简单:什么都不做,因为它已经不存在了。
由于标记 1.0.0
,找到了提交 307cfba
。如果你不想看到 307cfba
,即使有 git log --all
,你也需要删除标签 1.0.0
(或强行移动它,但如果您打算这样做,一个简单的方法是先删除它,然后重新创建它)。
您可以尝试使用 rebase 命令的 --onto
选项(为了安全起见,请在您的存储库副本上尝试这些步骤)。
首先删除您的标签,然后在需要的提交时重新创建它。
git tag -d 1.0.0
git tag -a 1.0.0 50ccf6a
git rebase --onto 7d734b4 50ccf6a~1
我有一个只有一个分支的仓库,名为 main
。
这是 git log --oneline --graph --all
的输出:
* 92033fe (HEAD -> main, origin/main) [test] Add some new tests
* 5e281c4 [style] Improve code formatting
* 50ccf6a release-1
| * 307cfba (tag: 1.0.0) release-1
|/
* 7d734b4 [feat] Add new feature
* 0b3c993 [fix] Fix some tests
这里发生的事情是我试图在事后将 50ccf6a
标记为 1.0.0
,但做错了,现在我复制了这个,并且似乎分支了,提交307cfba
,我想去掉它,而不影响分支的其余部分。
通常,我会 git rebase -i --root main
,但是这个特定的提交不会出现在提交列表中,只有那些我打算保留的:
pick 0b3c993 [fix] [fix] Fix some tests
pick 7d734b4 [feat] Add new feature
pick 50ccf6a release-1
pick 5e281c4 [style] Improve code formatting
pick 92033fe [test] Add some new tests
这里发生了什么?
提交 307cfba
不在分支 main
上。如果您希望它脱离分支 main
,那很简单:什么都不做,因为它已经不存在了。
由于标记 1.0.0
,找到了提交 307cfba
。如果你不想看到 307cfba
,即使有 git log --all
,你也需要删除标签 1.0.0
(或强行移动它,但如果您打算这样做,一个简单的方法是先删除它,然后重新创建它)。
您可以尝试使用 rebase 命令的 --onto
选项(为了安全起见,请在您的存储库副本上尝试这些步骤)。
首先删除您的标签,然后在需要的提交时重新创建它。
git tag -d 1.0.0
git tag -a 1.0.0 50ccf6a
git rebase --onto 7d734b4 50ccf6a~1