Git缺少提交

时间:2016-06-03 12:32:06

标签: git git-commit git-log

我是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次提交

2 个答案:

答案 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