【发布时间】:2020-10-15 11:42:31
【问题描述】:
我是 Git 新手,我想我不知道自己在做什么。
我正在编辑一堆文件,包括新文件。由于有很多更改,我想在失去工作之前提交并推送它们。
所以我用了:
git add .
git commit -m "Blablabla"
答案如下:
[detached HEAD b5c9786] Blablabla
29 files changed, 794 insertions(+), 265 deletions(-)
然后:
git push
有了答案
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push origin HEAD:<name-of-remote-branch>
发现上次拉取时忘记回特性分支,所以切换到特性分支。
git branch feature
这显然加载了上次推送后的状态。
在我恐慌并做一些愚蠢的事情之前,我的最后一次提交应该在本地的 .git 文件夹中的某个地方,对吧?
我有以下文件:
COMMIT_EDITMSG
HEAD
config
hooks
info
objects
refs
FETCH_HEAD
ORIG_HEAD
description
index
logs
packed-refs
COMMIT_EDITMSG 和 HEAD 在我最后一次提交前后有时间戳。
【问题讨论】:
-
哈哈哈!!!我喜欢你的帖子。一切都在 Git 本地更改中可用。 git 最好的部分是你永远不会丢失任何东西。
-
这能回答你的问题吗? What to do with commit made in a detached head 特别看this 回复。
-
感谢您的回复。我已经离开了分离的分支,我不知道如何回到那个分离的分支。如果我做位分支,我只有 master 和 feature,而不是分离的。
-
顺便说一句,“有很多更改,我想在失去工作之前提交并推送它们”并不是 Git 的真正用途(尽管它可能适用于某些用例) .您实际上是在使用 Git 作为备份解决方案,而擅长的是版本控制。您的提交应该以原子为目标,这意味着您每次进行单个“单元”更改时都要提交。所以例如如果你修改了两个不相关的函数,它们都应该出现在各自的提交中。通过这种方式,您可以判断哪个提交更改了哪些内容,并在需要时轻松恢复任何“单元”的任何版本。
标签: git