Git 如何在不更新分支的情况下软重置到上一个提交
我正在本地审查PRs。为此,我使用IDEA的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
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 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命令吗?更新了问题