所以去年我让我们的一位开发人员重组我们的git repo,移动文件等等。不幸的是,我没有仔细看他的工作,看起来他丢失了一些历史记录(即git rm / git添加了不同的提交或做了别的事情所以git没有识别重命名并将它们视为新文件)
几个月前,我将这次重组合并到了我一直致力于的分支机构中。我在这个分支上做了很多改动,其中一些改变了历史丢失的文件。
现在,我正试图弄清楚如何从这个混乱中恢复过来。我正在考虑的一个策略是创建一个新的分支,并挑选我想要的提交,然后自己进行重组。不幸的是,有100个提交,所以这将是非常耗时的。这是正确的策略,还是有一些明显我缺失的东西?
最大的问题是当我在生产分支中进行更改时。由于重命名/移动没有正确标记,我得到了很多“我们删除”的消息。 repo是一个ASP.NET站点。在旧的repo结构中,它只是该站点的根文件夹。我将所有这些移动到一个子文件夹中,并将一些依赖项移动到一个新文件夹。
所以,以前的结构:
Web.config
Default.aspx
Default.aspx.cs
Dependencies/
目前的结构:
Website/
Web.config
Default.aspx
Default.aspx.cs
Dependencies/
如果我在我们的实时分支上更改了Default.aspx,它仍然具有以前的结构,然后将其拉入这个麻烦的分支,我得到了这个:
Website/
Web.config
Default.aspx
Default.aspx.cs
Default.aspx (deleted by us)
Dependencies/
答案 0 :(得分:1)
在再次遇到问题之后,我终于想通了这与我的系统上没有正确设置的两个不同的git配置值有关。
即:
git config diff.renames true
git config merge.renamelimit 10000
设置这两个问题解决了问题,并且git正确检测到文件正在移动。