gpt4 book ai didi

git - git commit --amend 究竟是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 00:57:46 24 4
gpt4 key购买 nike

我看过 'git commit --amend' in detached HEAD state 。这个问题要求答案比需要的更复杂。

我想了解 git commit --amend 在正常的 HEAD 情况下是如何工作的。

最佳答案

假设您处于干净的工作状态并且您的存储库如下所示:

Enter image description here

如果你然后运行

git commit --amend

写一个提交消息,保存并退出你的编辑器,发生以下情况:

  1. 您的暂存区域(如果您没有暂存任何新更改,它将与提交 f42c5 相同)用于创建新提交:31b8e。它的父级将与您正在修改的提交的(那些)相同:f42c5
  2. master 分支引用已移动以指向该新提交 (31b8e)。
  3. HEAD 引用在 master 之后。

Enter image description here

请注意,修改后的提交 (f42c5) 现在无法从您的存储库中的任何引用访问(因此在我的图表中它是“透明”样式)。它仍然存在于您存储库的对象数据库中,但当 Git 运行其定期内务处理时,或者如果您通过运行 git gc(垃圾收集)明确触发它,它最终将被永久删除。


附录(基于 Jason Baker's comment ):请注意,只要修改后的提交 f42c5 仍然存在于您的存储库中并且您有办法找到取出它的提交 ID(例如,通过从 master 分支的 reflog 中取出它),您仍然可以检查它。运行

git checkout master # just to be sure that master is the current branch
git reset --hard f42c5

或者(假设您在此期间没有对 master 进行任何新提交、重置 master 或以其他方式移动 master 分支引用)

git checkout master # just to be sure that master is the current branch
git reset --hard master@{1}

会让你处于以下情况:

Enter image description here

但是现在,提交 31b8e 将变得无法访问。


关于git - git commit --amend 究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26050327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com