我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
我在我的存储库中做一些工作,注意到一个文件发生了本地更改。我不再需要它们了,所以我删除了文件,以为我可以签出一份新的副本。我想做的Git相当于
svn up .
使用git pull似乎不起作用。一些随机搜索让我找到了一个有人推荐的网站
git checkout HEAD^ src/
(src是包含已删除文件的目录)。
现在我发现我有一个分离的脑袋。我不知道那是什么。我怎么撤销?
当前回答
补遗
如果您希望返回的分支是最后一次签出,则可以简单地使用checkout@{-1}。这将带您返回上一次结账。
此外,您可以将此命令别名为,例如,git global--config alias.prev,这样您只需键入git prev即可切换回上一个签出。
其他回答
git pull origin master
对我来说很有用。它只是明确地给出了远程和分支名称。
使用gitrebase,您可以将HEAD移动到所需的提交
假设您的分支处于分离状态,如下所示:
* bfcb8f9 Commit 4
* 540a123 Commit 3
* 4356d64 Commit 2
| * fecb8d2 Commit 2
|/
| * 8012f45 Commit 2x
|/
| * 6676d15 (HEAD -> master) Commit 2 --amend
|/
* 1818f91 Commit 1
分离的头部是通过错误地重新定基而创建的,指向一个分离的提交,该提交之前是通过gitcommit--modify命令创建的。
如果要将HEAD ref移动到最近的提交,请使用要指向的所需HASH提交应用重基。在本例中,哈希是最近的提交:
git rebase bfcb8f9
这将使分支的HEAD指向所需的提交(在本例中是最近的):
* bfcb8f9 (HEAD -> master) Commit 4
* 540a123 Commit 3
* 4356d64 Commit 2 --amend
| * fecb8d2 Commit 2
|/
| * 8012f45 Commit 2x
|/
| * 6676d15 Commit 2
|/
* 1818f91 Commit 1
分离头部是指:
你不再在树枝上,您已在历史记录中检出一次提交
如果没有更改:可以通过应用以下命令切换到master
git checkout master
如果您有要保留的更改:
在分离HEAD的情况下,提交工作正常,除非没有命名分支得到更新。若要使用已提交的更改更新主分支,请在您所在的位置创建一个临时分支(这样,临时分支将具有您在分离的HEAD中所做的所有已提交更改),然后切换到主分支并将临时分支与主分支合并。
git branch temp
git checkout master
git merge temp
分离的HEAD表示您当前不在任何分支上。如果您想保留当前的更改并简单地创建一个新分支,您可以这样做:
git commit -m "your commit message"
git checkout -b new_branch
之后,您可能希望将此新分支与其他分支合并。git“a dog”命令总是有用的:
git log --all --decorate --oneline --graph
通常HEAD指向分支。当它不是指向分支,而是指向像69e51这样的提交散列时,这意味着你有一个分离的HEAD。你需要指出两个分支来解决这个问题。你可以做两件事来解决它。
git checkout other_branch//当您需要提交哈希中的代码时不可能创建一个新分支,并将提交哈希指向新创建的分支。
HEAD必须指向分支,而不是提交哈希是黄金法则。