我在我的存储库中做了一些工作,发现文件有本地更改.我不再想要它们所以我删除了文件,以为我可以签出一份新的副本.我想做Git相当于
svn up .
Run Code Online (Sandbox Code Playgroud)
使用git pull
似乎没有用.一些随机搜索引导我到一个有人推荐做的网站
git checkout HEAD^ src/
Run Code Online (Sandbox Code Playgroud)
(src
是包含已删除文件的目录).
现在我发现我有一个超然的头.我不知道那是什么.我怎么撤消?
所以我在存储库中做了一些工作,当我即将提交时,我意识到我目前不在任何分支上.
在使用子模块时,这种情况发生了很多,我能够解决它,但这个过程很繁琐,而且我一直在想必须有一个更简单的方法来做到这一点.
有没有一种简单的方法可以回到分支上,同时保持变化?
我想从我的git存储库的历史中恢复整个目录(递归).
只有一个分支(主).
我知道包含错误的提交.
我可以使用父提交的sha1哈希来恢复目录的状态,因为它是在包含错误之前的状态吗?
我想过这样的事情:
git checkout 348ce0aa02d3738e55ac9085080028b548e3d8d3 path/to/the/folder/
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
reflog vs GITK http://siteroller.net/archive/images/Forums/headless%20GIT.png
顶部图像是输出:git reflog.
底部是GIT GUI(msysgit)中的GITK在查看所有分支历史时向我显示的内容.
最后几次提交没有在GIT GUI上显示.
第一个问题很重要 - 我想开始了解GIT的想法.在这一点上,它比逻辑更具神谕性.
这是我通常做的:
$ git add . -Av
$ git commit -m "I want this to be master"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试推送到远程时,“一切都是最新的”并且最新的提交不是主提交。
$ git branch
* (HEAD detached from f0efe1a)
added_mongodb_auth
master
serviceworkers_branch
Run Code Online (Sandbox Code Playgroud)
我怎样才能让最新的提交成为大师?
在过去的20-30次提交中,我一直处于超级头状态:
> git status
HEAD detached from ac83503
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
我最初没有注意到我处于这种状态.现在我希望这个独立的头部成为我的主要分支,所以我给它起了个名字
> git branch the-good-one
Run Code Online (Sandbox Code Playgroud)
最后一个命令没有提供任何反馈,但看起来它现在可以了:git log | head -1
显示:
fc876a2 Tue Mar 7 23:10:14 2017 (HEAD, the-good-one) This is the commit message.
Run Code Online (Sandbox Code Playgroud)
然而git status
仍然回复:
HEAD detached from ac83503
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
是否指定了一个不足以撤消分离头状态的git分支名称?