【问题标题】:Git rebase on Windows sometimes fails with inexplicable "your untracked working tree files would be overwritten" errorWindows 上的 Git rebase 有时会因莫名其妙的“您未跟踪的工作树文件将被覆盖”错误而失败
【发布时间】:2014-02-21 02:09:50
【问题描述】:

当我们的一些开发人员使用 rebase 进行拉取时,这偶尔会影响到他们。例如,在本地向 master 提交 5 次后,它们运行:

git pull --rebase origin master

在推送之前使他们的历史线性化。大多数情况下这工作正常,但时不时地,在“重新应用你的提交”阶段,大约有几个提交时,rebase 会因错误而停止:

The following untracked working tree files would be overwritten by merge

并列出由已应用的提交修改的文件。

我已经看到很多关于这个问题的报告,例如this question,但他们都在谈论 OSX 而我们是在 Windows 上。不过我们尝试设置:

git config --global core.trustctime false

但这并没有帮助。我们已确保防病毒软件没有监控源代码控制的目录,并且没有运行备份程序...在变基操作期间不应触及这些文件。

有没有其他人遇到过这个问题并找到了原因?

【问题讨论】:

  • 这真的很烦人,并且使 rebase 没有应有的用处。
  • 当您检查这些文件时,是否有任何差异/差异标记等。IIRC 您应该能够使用 :1: :2: :3: 文件阶段命名来进行差异。也就是说,“更改”只是一些快速的状态错误,还是存在真正的代码差异?

标签: git msysgit


【解决方案1】:

您能否确定是否没有未跟踪的文件。如果存在,您需要在执行 git rebase 之前先 git checkout 他们。

更好的做法是执行以下步骤。

假设你有一个新的 git 克隆存储库

创建并结帐到您自己的新本地分支。

git checkout -b <MyLocalBranch>

根据需要进行更改。那么。

git add .
git commit -m <message>
git review/push

一旦你推送了你的更改,回到你的主人那里并做一个 git pull

git checkout master
git pull

回到你的本地分支并重新设置它。

git checkout <MyLocalBranach>
git rebase -i master

现在您已经熟悉本地分支并准备在本地分支上进行更改。此外,通过这样做,您可以拥有多个本地分支,而不会与您的 master 产生冲突。

【讨论】:

  • 即使使用没有未跟踪文件的新克隆存储库也会发生这种情况。不理解变基不是问题...当后台进程访问git正在使用的文件时,这似乎是一个已知问题,尤其是在备份进程不断监视文件的OS X下,有时在程序使用独占文件锁的Windows下.它似乎已在新版本的 git for Windows 中得到修复。
猜你喜欢
  • 2021-12-02
  • 2011-03-11
  • 2012-12-23
  • 2012-12-16
  • 1970-01-01
  • 2013-08-02
  • 2011-05-26
  • 2014-10-13
  • 1970-01-01
相关资源
最近更新 更多