假设我有 2 个提交,我已经推送到我的远程分支。
如何在不删除提交 A 的情况下恢复到提交 B?我只想比较这两个提交之间的结果。
注意:不需要代码比较。我只想比较 Commit A 和 Commit B 的输出
我们使用具有最新开发的主分支进行开发,并且发布分支经常从该主分支中分离出来并构成一个版本。错误在这些发布分支上得到修复,并且这些错误修复被合并回主分支。我们所有的更改都会通过 PR,您不能手动(强制)推送这些重要分支中的任何一个。
现在,人为错误导致主分支被合并到发布分支(通过 PR)。这是通过包含错误合并提交的恢复提交的 PR 来恢复的。因此,发布分支是“良好的”(除了这两个额外的提交)。随后,这个发布分支被合并到主分支中。接下来发生的事情是出乎意料的:从主分支到发布版本的错误合并以某种方式被忽略(这是合乎逻辑的),但是撤销错误的后续恢复提交被完全合并,有效地删除了自发布分支以来主分支上的所有更改被分裂了。
不幸的是,我不知道这是如何发生的细节,但这可以以某种方式解释为“预期”行为。我计划编写一个 git 命令的小脚本,尽快重复这种序列,并将在这里更新问题。
我的问题是:有没有一种方法(无需强制推送和消除错误提交)能够将发布分支合并到主分支中,而不会使恢复提交对主分支的文件产生影响?现在看来这总是会导致恢复提交改变不应该改变的东西。
伙计们,我有以下情况:
现在我想再次合并来自(测试分支)的这些更改,但我不能,总是我给出的rebase或者pull from test-brach更改不会到来。
我已经reset hard origin/development在本地做了但不起作用。
有人可以帮忙吗?我想我必须从树中删除,但我不知道
我的 Git 经验非常有限,在 Visual Studio 代码上:我对我的存储库做了很多更改,然后提交了它们(没有推送)。
有一个名为 GitLens 的 Visual Studio 扩展:我右键单击我的提交,然后单击“恢复提交(通过终端)”
这运行了以下命令
-> git revert -e bdb001d91a63c1e898da18c54916a8834579d20b
Run Code Online (Sandbox Code Playgroud)
它删除了文件并将文件重置为提交之前的版本。我不希望这样的事情发生
有没有办法恢复我已恢复的提交?谢谢
根据这个问题有没有办法撤销“git revert head”的影响?
我试过
-->git reset --hard HEAD^
--> HEAD is now at 1fd24c8 fix folder
Run Code Online (Sandbox Code Playgroud)
还
--> git revert --abort
--> error: no cherry-pick or revert in progress
--> fatal: revert failed
--> git log -5
commit 1fd24c8c4c4ef95f954e5b6af94ad0dedfbbf5f0 (HEAD -> master, origin/master)
Author: xxxxxxxxxxxxx
Date: Thu Oct 25 23:24:13 2018 +0200
fix folder
commit ec426d893f254e88f488be8bb3e2de781dfbc446
Author: xxxxxxxxxx
Date: …Run Code Online (Sandbox Code Playgroud) 尝试通过 git reset 恢复到之前的提交(例如 123abc)时
git reset --hard 123abc
git commit -a -m "revert to 123abc"
Run Code Online (Sandbox Code Playgroud)
我不能推动这个(我需要在拉之前拉动我向前)。我带着这几行来了:
for i in `git diff --name-only 123abc`; do git checkout 123abc $i; done
git commit -a -m "revert to 123abc"
Run Code Online (Sandbox Code Playgroud)
从现在开始哪个有效
git diff --name-only 123abc
Run Code Online (Sandbox Code Playgroud)
是空的
我想知道这是 hack 还是 git 方法。如果不是,如何正确完成此操作?