我在一家小公司工作,我们的Git回购有点混乱。我刚做了一个git pull,我今天早些时候所做的改变已经过去了!
当我在主分支上工作时,git log显示了它历史上最后一次提交b94940c63ef965ce45b0d64ccfba4359134d2552。
现在,如果我对丢失更改的有问题的文件执行git log filename,则不会显示提交(只显示前面的提交)。
在执行git log --follow filename时,我的提交b94940c63ef965ce45b0d64ccfba4359134d2552显示为最新的。
如果我这么做的话:
git checkout b94940c63ef965ce45b0d64ccfba4359134d2552
git log filename然后显示提交,并且我的更改在文件中!
换句话说,我所做的提交显示在分支历史记录中(阻止分支合并),但是单个已修改的文件在其历史记录中没有提交!(除非我显式签出提交)。
问题:
发布于 2011-08-05 02:42:23
好吧,找到问题了。当一个同事退出的时候,他遇到了一些冲突。他没有解决,而是重新设置了每个阶段的文件。这类似于对单个旧文件执行git签出old_version。因此,主程序最终引用了一些具有old_version的文件。
现在我要手动恢复他吹出的东西。
故事的寓意:修改git操作(结帐、重置等)在个人档案上是相当危险的。
发布于 2011-08-05 02:00:55
这应该只是一个评论,但很难读懂。退房后师父:
git checkout master的输出是什么
git status和
git whatchanged -m -p <path>和
git log --graph --oneline b94940c63ef965ce45b0d64ccfba4359134d2552..master发布于 2011-08-05 00:53:45
首先,您应该掌握Git命令的功能以及存储库中存储的数据。
git pull做了两件事:它从远程存储库中检索新的提交,并将远程存储库的头与当前的头(在当前分支中)合并。因此,考虑到这一点,你可能需要在未来更加小心。不使用git pull,您可以执行git fetch并手动合并需要合并的内容。这样你就可以控制你所做的编辑。
至于你目前的情况,我不认为Git正在丢失数据。你说过你的档案还在历史上。因此,现在您可能需要做一些创造性的重置(恢复到旧版本)或补丁(可能是手动的),以使您的项目文件达到您希望的状态。
https://stackoverflow.com/questions/6950196
复制相似问题