我是git的新手,偶然发现了一个奇怪的问题
所以我做了一些提交到我的本地存储库并使用git log查看它们并且工作正常。 一段时间后,我检查了一个较旧的提交,后来我想跳回到我最近的提交继续我的工作。所以我做了另一个git日志。 但是现在没有显示最新的3-4次提交。 打字' git checkout master'带我到第二个日志命令的最新提交,但没有提到我描述的第一个提交。 这是一个问题,还是我必须输入另一个命令才能回到最新的提交?
我希望我的问题是可以理解的。
我输入的所有命令都是正确的顺序:
Git add public /
Git commit -m“Fo”
(这里没有错误)
Git log --oneline。
输出:8次提交
Git结帐“旧提交的ID”
Git log --oneline。
输出:4次提交
答案 0 :(得分:4)
运行git checkout sha1
后,您处于分离的HEAD状态。使用git reflog
查找您之前的HEAD和git checkout
HEAD或git reset --hard
到该HEAD。
如果你在一个指定的分支上,你可以简单地git checkout <branch name>
回去。如果您使用的是分离的HEAD,请改用git reflog
。
答案 1 :(得分:1)
我认为没有人能得到你正在问的东西,但我想你可能会把你的变化藏起来。
类型:
git stash list
它在那里展示了什么,有什么信息吗?
如果有这样的话
stash@{0}: WIP on master: 049d078 added the index file
您可以输入:
git stash apply // for the last stash to be applied
git stash apply stash@{1} // for the second from last stash
此外,您可以尝试:
git stash pop // apply the stash and then immediately drop it from your stack
以上这些之间的区别在于pop会丢弃堆栈中的存储,但是apply会保留它以备将来重用。
如果你的提交在日志或藏匿中丢失,你可能已经重置了HEAD。
从现在开始,为你的工作做下一个程序,以免搞乱任何事情。
从更新后的主程序中检出您的分支
git checkout -b your_branch_name
在您完成某项工作后
git add "name of your file" or git add * (to add all files)
Git add命令使用工作树中找到的当前内容更新索引,以准备为下次提交暂存的内容
git commit -m "Your message here"
将其推送到远程来源
git push origin your_branch_name