【发布时间】:2021-01-01 14:58:08
【问题描述】:
我不小心推到了master。我通过git revert shaToPreviousState 恢复了此推送并将原始主状态推回。然后checked out sha 提交带有意外推送的更改,并通过git switch -c new_stuff 将这些更改切换到新分支new_stuff。我做了一些小的修改,对update 和pushed 进行了这些更改以分支new_stuff。现在,当我创建一个 MR 以将 new_stuff 与 master 合并时,只有最近的更改(在创建 new_stuff 之后)显示为差异。但是,我试图推动的内容包括我已经恢复的那些更改(在检查 sha 并创建 new_stuff 之前)。为什么它们也没有显示在差异中,我该如何解决这个问题?
现任主人
commit 8573277b289224d93993e374e070fa66da63d309 (HEAD -> master, origin/master, origin/HEAD)
Author: user.me <user.me@gmail.com>
Date: Mon Sep 14 22:37:39 2020 +0200
Revert "added loading some bin files"
This reverts commit 649a6f5f4dc31e6ba363fef7a9f77661f45254e9.
commit 649a6f5f4dc31e6ba363fef7a9f77661f45254e9
Author: user.me <user.me@gmail.com>
Date: Mon Sep 14 22:34:02 2020 +0200
added loading some bin files
new_stuff 分支
commit 5ff6b90931685a32ae3e7bcde7b00db7440fac5e (HEAD -> new_stuff, origin/new_stuff)
Author: user.me <user.me@gmail.com>
Date: Mon Sep 14 22:57:33 2020 +0200
added a few docstrings
commit 649a6f5f4dc31e6ba363fef7a9f77661f45254e9
Author: user.me <user.me@gmail.com>
Date: Mon Sep 14 22:34:02 2020 +0200
added loading some bin files
所以在推送 5ff6b9 并创建 MR 之后,除了 5ff6b9 添加的差异之外,差异没有任何变化。所以,我想了解 git 怎么看不到 649a6f + 5ff6b9 带来了很多新东西,但只显示了 5ff6b9 的差异:(
【问题讨论】:
-
澄清几点: 1.
git revert创建一个新的提交,其更改与shaToPreviousState所指的提交相反。它不会“恢复推送”,因为“推送”不是不是一个对象,而是一个动作。 -
2. “然后检查带有意外推送更改的 sha 提交,并将这些更改切换到新分支 new_stuff”我假设您的意思是您做了类似
git checkout <some sha hash>然后git checkout branchA的事情。这不会“随着这些变化而变化”。当您签出另一个分支时,提交的更改不会跟随您,除非该提交已经在该分支上。 -
git switch是一个我从未使用过的相对较新的命令。查看帮助文件后,我上面关于git checkout的 cmets 似乎同样适用于git switch:如果它们已经提交,则无法切换“这些更改”。 -
你想保留这些你不小心推送到 master 但在
new_stuff分支上的更改吗? -
我只希望我推送到 master 的任何内容都可以还原,然后从 MR 显示差异的专用分支重新推送,以便审阅者可以看到我的更改。
标签: git git-merge git-branch git-revert