首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Git正在丢失单个文件的历史/内容。

Git正在丢失单个文件的历史/内容。
EN

Stack Overflow用户
提问于 2011-08-05 00:34:45
回答 4查看 2.7K关注 0票数 8

我在一家小公司工作,我们的Git回购有点混乱。我刚做了一个git pull,我今天早些时候所做的改变已经过去了!

当我在主分支上工作时,git log显示了它历史上最后一次提交b94940c63ef965ce45b0d64ccfba4359134d2552。

现在,如果我对丢失更改的有问题的文件执行git log filename,则不会显示提交(只显示前面的提交)。

在执行git log --follow filename时,我的提交b94940c63ef965ce45b0d64ccfba4359134d2552显示为最新的。

如果我这么做的话:

代码语言:javascript
运行
复制
git checkout b94940c63ef965ce45b0d64ccfba4359134d2552
git log filename

然后显示提交,并且我的更改在文件中!

换句话说,我所做的提交显示在分支历史记录中(阻止分支合并),但是单个已修改的文件在其历史记录中没有提交!(除非我显式签出提交)。

问题:

  1. 这到底是怎么回事?
  2. 我该怎么解决呢?(我们在回购中遇到了多个文件的问题)
EN

回答 4

Stack Overflow用户

发布于 2011-08-05 02:42:23

好吧,找到问题了。当一个同事退出的时候,他遇到了一些冲突。他没有解决,而是重新设置了每个阶段的文件。这类似于对单个旧文件执行git签出old_version。因此,主程序最终引用了一些具有old_version的文件。

现在我要手动恢复他吹出的东西。

故事的寓意:修改git操作(结帐、重置等)在个人档案上是相当危险的。

票数 5
EN

Stack Overflow用户

发布于 2011-08-05 02:00:55

这应该只是一个评论,但很难读懂。退房后师父:

代码语言:javascript
运行
复制
git checkout master

的输出是什么

代码语言:javascript
运行
复制
git status

代码语言:javascript
运行
复制
git whatchanged -m -p <path>

代码语言:javascript
运行
复制
git log --graph --oneline b94940c63ef965ce45b0d64ccfba4359134d2552..master
票数 1
EN

Stack Overflow用户

发布于 2011-08-05 00:53:45

首先,您应该掌握Git命令的功能以及存储库中存储的数据。

  • 获取一个历史可视化工具(如咯咯笑或Gitk )来查看提交历史记录,并查看基于什么提交的提交。
  • git pull做了两件事:它从远程存储库中检索新的提交,并将远程存储库的头与当前的头(在当前分支中)合并。

因此,考虑到这一点,你可能需要在未来更加小心。不使用git pull,您可以执行git fetch并手动合并需要合并的内容。这样你就可以控制你所做的编辑。

至于你目前的情况,我不认为Git正在丢失数据。你说过你的档案还在历史上。因此,现在您可能需要做一些创造性的重置(恢复到旧版本)或补丁(可能是手动的),以使您的项目文件达到您希望的状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6950196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档