Git 删除来自主分支的不需要的提交

Git 删除来自主分支的不需要的提交,git,gitlab,Git,Gitlab,我在我的分支上工作(第393期),在我完成后,签出主分支以准备一个重基,然后进行git拉取,然后签出393分支,然后执行此命令git rebase master 在那之后,我去了Gitlab,我被自己犯的错误震惊了。来自另一个分支的提交不应该在我的分支上(393)。我正在研究如何删除我不拥有的提交,但只是想在我的分支上删除它们,而不是完全在我们的代码库上 这里是reflog: 6d5878e5 (HEAD -> remove-a-commit, origin/393-add-company

我在我的分支上工作(第393期),在我完成后,签出主分支以准备一个重基,然后进行git拉取,然后签出393分支,然后执行此命令<代码>git rebase master

在那之后,我去了Gitlab,我被自己犯的错误震惊了。来自另一个分支的提交不应该在我的分支上(393)。我正在研究如何删除我不拥有的提交,但只是想在我的分支上删除它们,而不是完全在我们的代码库上

这里是reflog:

6d5878e5 (HEAD -> remove-a-commit, origin/393-add-company-name-for-individual-account, 393-add-company-name-for-individual-account) HEAD@{0}: checkout: moving from 393-add-company-name-for-individual-account to remove-a-commit
6d5878e5 (HEAD -> remove-a-commit, origin/393-add-company-name-for-individual-account, 393-add-company-name-for-individual-account) HEAD@{1}: rebase -i (finish): returning to refs/heads/393-add-company-name-for-individual-account
6d5878e5 (HEAD -> remove-a-commit, origin/393-add-company-name-for-individual-account, 393-add-company-name-for-individual-account) HEAD@{2}: rebase -i (pick): frontend additional fix done
f7ea5f82 HEAD@{3}: rebase -i (pick): backend can do crud on new user, updated reports view and csv download
3b615d25 HEAD@{4}: rebase -i (pick): New Wash/Bite Error Handling
cc988f50 HEAD@{5}: rebase -i (pick): completed: Teeth undo / redo
3630f840 HEAD@{6}: rebase -i (pick): Occlusal plane undo / redo
9436f9e7 HEAD@{7}: rebase -i (pick): fix: submit with incomplete landmarks
47004af0 HEAD@{8}: rebase -i (pick): add: Trim Redo
5fc03f49 HEAD@{9}: rebase -i (start): checkout 71064961
405847ee HEAD@{10}: checkout: moving from master to 393-add-company-name-for-individual-account

这是我老板的承诺。我如何删除我的分支上的那个,但不会在主节点上删除,因为那个已经在主节点上了

更新
我在3b615d25 47004af0上尝试了这个git rebase,但它与我甚至没有编辑的代码冲突。

在分支上恢复提交而不是重新设置它可能会有所帮助。它将取消分支上的更改,但不会删除任何代码:

git还原


编辑:正如@RomainValeri所提到的,它不会从您的git repo中删除任何提交(这就是为什么您可以自信地恢复,而不必担心丢失代码)。它将创建一个新的提交,以取消(还原)指定提交的更改。

在分支上还原提交而不是重新设置其基址可能会有所帮助。它将取消分支上的更改,但不会删除任何代码:

git还原



编辑:正如@RomainValeri所提到的,它不会从您的git repo中删除任何提交(这就是为什么您可以自信地恢复,而不必担心丢失代码)。它将创建一个新的提交,以取消(还原)指定提交的更改。

您知道重定基的作用吗?你能给我们看一下提交树图吗?也许还包括你想要的树形图是什么样子的?我真的没有想到这个图会是什么样子,我只是被告知要做一个重基,所以我做了。基本上它与merge相同,但是feature分支将位于master之上。我之前就做过,但出于某种原因,这是我第一次遇到这个问题,我不知道如何解决这个问题。生成的工作树可能是相同的,但不要认为重基与合并是相同的,因为它们不是。在我读过的文章中,他们说它与合并是相同的。来自功能分支的提交将被添加到主节点的顶部,而不是创建另一个用于合并的提交。这会使它们有所不同。正如你所说,结果是一样的,是的,但他们以不同的方式实现。你知道重定基期的作用吗?你能给我们看一下提交树图吗?也许还包括你想要的树形图是什么样子的?我真的没有想到这个图会是什么样子,我只是被告知要做一个重基,所以我做了。基本上它与merge相同,但是feature分支将位于master之上。我之前就做过,但出于某种原因,这是我第一次遇到这个问题,我不知道如何解决这个问题。生成的工作树可能是相同的,但不要认为重基与合并是相同的,因为它们不是。在我读过的文章中,他们说它与合并是相同的。来自功能分支的提交将被添加到主节点的顶部,而不是创建另一个用于合并的提交。这会使它们有所不同。就像你说的一样,结果是一样的,是的,但他们以不同的方式实现了。不起作用。在一次提交中尝试过它仍然是there@aRtoo恐怕您误解了git revert的预期功能。它不会以任何方式修改或删除给定的提交,它会在树的当前顶端创建一个新的提交,包含与所说的提交完全相反的内容。例如,如果commit
abcd1234
添加了一些特定的行,revert命令将创建一个新的commit,并删除该行。在这个历史记录之后产生的代码是相同的,就像两个提交都从未出现过一样,是的,但它们仍然存在。但我不认为这会起作用,因为坏的让步在中间。如果我dot
git revert
,那么我也会丢失当前提交的工作。希望它有意义。@aRtoo您不应该丢失当前提交的工作,但只有提交中的工作@
不起作用。在一次提交中尝试过它仍然是there@aRtoo恐怕您误解了git revert的预期功能。它不会以任何方式修改或删除给定的提交,它会在树的当前顶端创建一个新的提交,包含与所说的提交完全相反的内容。例如,如果commit
abcd1234
添加了一些特定的行,revert命令将创建一个新的commit,并删除该行。在这个历史记录之后产生的代码是相同的,就像两个提交都从未出现过一样,是的,但它们仍然存在。但我不认为这会起作用,因为坏的让步在中间。如果我dot
git revert
,那么我也会丢失当前提交的工作。希望它有意义。@aRtoo您不应该丢失当前提交的工作,而应该只丢失提交中的工作@
HEAD@{4}, 
HEAD@{5},
HEAD@{6},
HEAD@{7},
HEAD@{8},