Git push 导致远程有未跟踪的文件

Git push 导致远程有未跟踪的文件

最近,我们的两个 Git 远程服务器(一个是生产服务器,另一个是暂存服务器)在推送更改时都出现了问题。

通常 :

当地的

git add <list of untracked files>
git commit -m <message>
git push <remote> <remote active branch>

偏僻的

git status
On branch <active branch>
Untracked files:
  (use "git add <file>..." to include in what will be committed)

.... all the files that have been committed ....

我们不确定最近几周发生了什么变化,因为之前一切都运行良好。

我们目前通过连接到删除服务器并执行来解决这个问题

git reset --hard HEAD

为什么会发生这种情况?我们该如何解决?

答案1

如果我正确理解了您的设置,您正在推送到非裸存储库。发生的情况是,当您执行此操作时,工作目录不会自动更新。您说得对,该命令git reset --hard修复了这个问题。钩子无法运行的原因是,在拉取过程中,工作目录和/或工作树可能未正确设置。要解决此问题,您可以明确设置它。有一个环境变量,GIT_DIRgit 为钩子设置了它。它对应于您的.git文件夹。使用它,我们可以正确设置您的 git 树。

下面是我之前针对这个场景使用过的脚本:

#!/bin/bash

git --work-tree "$GIT_DIR/.." reset --hard

如您所见,由于您的.git始终是 repo 根目录的子目录,这只是确保工作树是重置它的正确位置。

相关内容