git - 如何安全地将 master 中的更改重新设置为分离的 HEAD

标签 git branch git-detached-head

直到现在我才意识到我一直在独立的 HEAD (a32b42b123) 分支上工作。这个分支落后于master很多。我做了以下操作, git checkout master && git pull origin master git checkout a32b42b123 && git rebase master 将此分支与 master 同步,并注意到我在该分支中所做的大部分更改都消失了。现在我明白什么是超然的头脑了。但是我怎样才能在这里执行 git rebase master 安全性而不清除我所做的更改呢?

最佳答案

Git 中的提交是不可变的。如果您从 a32b42b123 开始并进行更改,则分支的尖端将不再是 a32b42b123,而是不同的提交。当您签回该提交时,如您所见,您会丢失在其基础上所做的更改。

当然,你可以使用独立的头部,但这只会让生活变得困难,没有(好的)理由,特别是当分支如此便宜时。只需从该提交创建一个命名分支并在其中进行更改即可:

$ git checkout a32b42b123 -b mybranch 
# make some changes, commit
$ git fetch origin
$ git rebase origin/master

关于git - 如何安全地将 master 中的更改重新设置为分离的 HEAD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405107/

相关文章:

git clone 命令不起作用?

Git 查找历史上的所有二进制文件

android - 尝试访问 android 存储库时出现 "Error: Python not found"

ruby-on-rails - 在 Rails 中切换分支时,我应该如何处理数据库架构更改?

git - 使旧的 git 分支不可见而不使它们无法访问?

git - 推送失败 - 使用 GitKraken 在远程服务器上清空存储库

Git子模块分离头状态

Git 在分离的 HEAD 所在的位置创建分支

Git - 运行更新后子模块 HEAD 总是分离?

regex - "one or more occurrence"的 gitignore 等价物是什么?