Git 如何在不更新分支的情况下软重置到上一个提交

Git 如何在不更新分支的情况下软重置到上一个提交,git,Git,我正在本地审查PRs。为此,我使用IDEA的localchangestab: 我获取了指向PR提交的分支PR-35。以下是日志的外观: commit 098a7a557b0e59eac036cdf4d53fb396bf184f32 (HEAD -> mr-origin-39, origin/feature/refacto-builder-serializers) Adapt environment to support both builds commit a93eb572d0

我正在本地审查PRs。为此,我使用IDEA的
localchanges
tab:

我获取了指向PR提交的分支
PR-35
。以下是日志的外观:

commit 098a7a557b0e59eac036cdf4d53fb396bf184f32 (HEAD -> mr-origin-39, origin/feature/refacto-builder-serializers)
    Adapt environment to support both builds

commit a93eb572d0c522a2dca3bce03c866624b3d56003

    Update README.md
现在我可以签出分支
PR-35
,返回1 commit,但保留由PR的commit引入的更改。我可以使用git reset--soft HEAD~2来实现这一点:

它非常适合我,只是它更新了
PR-35
分支指针。我希望保持当前分支指针不变,同时查看提交之间的更改。我该怎么做

作为一种解决方法,我现在使用以下方法:

$ git checkout mr35
$ mr35=$(git rev-parse --short=5 HEAD)
$ git reset --soft HEAD~1
... (reviewing PR)
$ git reset --hard $mr35

解决方案非常简单:

  • 留在你的发展部门
  • 通过
    git Merge--no commit{{{PR_BRANCH}}
    在不自动提交的情况下合并PR
  • 按git diff查看差异

  • 现在,您可以决定通过
    git commit
    (现在不需要消息,它将自动生成)或通过
    git merge--abort

    回滚所有更改。您似乎在寻找更改活动提交的方法

    如果要保留原始分支,只需创建一个本地分支:

    git checkout -b max/review/35 PR-35
    git reset --soft $(git merge-base master PR-35)
    

    这回答了你的问题吗@NilsWerner,不完全是这样,因为如果我运行
    git checkout HEAD~1-。
    它确实显示了更改,但好像它们是在PR的提交上应用的,而不是好像PR的提交在
    HEAD~1
    上应用了更改(就像
    git reset不
    )@MaxKoretskyi:从您的评论来看,您的意图似乎是从您的IDE审查该PR引入的差异(这是想法?正确吗?)您能更新您的问题以表明这一点吗?@LeGEC,更新了question@MaxKoretskyi:是否严格要求“在本地更改选项卡中显示更改”?或者可以在另一个窗口中显示更改吗?谢谢,这可能是一个选项,但我需要文件处于修改状态,才能显示在我的IDEA的
    更改
    选项卡中。正如我所说的
    --no commit
    选项使文件处于更改状态。嗯,我尝试过,但没有做我想做的。所以我有这个历史
    c1->c2(pr-35)
    。我已签出
    c1
    。没有本地更改。然后我运行
    git checkout c1&&git merge--no commit pr-35
    。仍然看不到局部变化。我做错了什么?你能编辑你原来的帖子,提供完整的git日志和你提供的git命令吗?更新了问题