我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于

svn up .

使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站

git checkout HEAD^ src/

(src是包含已删除文件的目录)。

现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?


当前回答

由于“分离的头状态”使您处于临时分支,所以只需使用git checkout,这将使您处于上一个分支。

其他回答

处于“分离头部”意味着head指的是特定的未命名提交(与命名分支相对)(cf:https://git-scm.com/docs/git-checkout部分分离的头部)。实际上,这意味着您签出了一个提交,但没有与之关联的分支名称。

您可以选择只创建与提交相关联的新分支

gitbranch新的分支名称。

这允许您将当前状态保存在名为new branch name的新分支中,而不再处于分离的头部状态。

或者,如果您希望返回到以前的状态,则需要选择之前选择的分支

git结帐@{-1}

由于“分离的头状态”使您处于临时分支,所以只需使用git checkout,这将使您处于上一个分支。

当我开始使用git时,这对我来说是一件令人困惑的事情,后来我明白了为什么会发生这种情况,以及处理这种情况的最佳方法是什么。

出现这种情况的根本原因是,通常gitHEAD总是指向某个分支,当您试图将HEAD指向某个特定的提交时,就会将HEAD置于分离的HEAD状态。

HEAD连接时的状态-

cat .git/HEAD     # output--> ref: refs/heads/master or ref: refs/heads/main

当HEAD处于分离状态时-

cat .git/HEAD     # output--> b96660a90cad75867453ebe1b8d11754bbb68b0e <commit hash>

解决方案-

git stash           # Temporarily shelves (or stashes) changes
git branch          # Find your default branch
git switch master   # Point HEAD to master or main branch
git stash pop       # Apply all the changes you had previously
git pull origin master

对我来说很有用。它只是明确地给出了远程和分支名称。

吉特告诉我怎么做。

如果键入:

git checkout <some-commit_number>

保存状态

git add .
git commit -m "some message"

然后:

 git push origin HEAD:<name-of-remote-branch>