使用Team City从Git Repo checkout (Gitlabs,如果有必要)
从空的生成目录开始。得到以下错误:
致命错误:无法将"core.filemode"设置为"false"
(在Windows计算机上运行,如果这很重要的话)
团队城市运行的用户被更改为管理员以防万一。
此命令退出时,. git目录不是有效的存储库。
清除整个"work"目录没有帮助。
它随机地来了又去...
与这个:git配置--全局--替换所有核心. fileMode假
没有做任何有用的事情--不管有没有--replace-all,并以管理员或另一个用户的身份运行(如果您将"false"更改为"true",您会得到相同的错误,如果您将其更改为"falseCD",它会将错误更改为无效值--所以很明显,它正在更改它。
有人有什么想法吗?
6条答案
按热度按时间wljmcqd81#
在我的例子中,使用“sudo”对我很有效,例如:
在做了一个“sudo”之后,我可以让它工作:
57hvy0tb2#
我不想成为那样的人,但我通过重新启动Windows解决了这个问题。
vohkndzv3#
Traderhunt游戏将此追溯到一些杀毒软件,这是有道理的,原因与Git用来更新配置条目的进程有关。
当
git config
运行并被告知更改一个或多个配置key = value
字段(例如将core.filemode
更改为false
)时,它实现此操作的方式是使用三步过程:1.使用创建文件的操作系统服务调用创建一个新的空文件(
.git/config.lock
),如果文件已存在则失败。如果此步骤失败,则表示另一个git config
(或等效)命令 * 已在运行 ,我们必须等待它完成,然后再执行自己的git config
。1.读取现有的配置文件,一次读取一个
key = value
条目。如果键是我们关心的键,则写入 newkey = value
值,否则复制现有的key = value
。这里有一些花哨的键,允许重复,与键,应该只出现一次;请参阅
git config
的--replace-all
和--unset-all
选项以了解详细信息。注意,git config
本身对大多数键和值对几乎一无所知,您可以创建自己的键/值对,只要您选择Git现在不使用,将来也不会使用的键。(我不知道你怎么知道Git在2043年会用什么,不会用什么。:-))主要的例外是一些core.*
的值,git config
* 不 * 理解这些值,其他几个Git命令可能会自己设置。(Note
--unset
的处理方式与replacing非常相似。与非all
replace一样,它只会取消设置 * 第一个 * 匹配的key = value
对。取消设置只需 * 不写入 * 给定键即可实现,而不是写入替换key = value
。由于git config
只是逐行处理文件,因此很容易做到。此外,如果你的key = value
是全新的,Git会阅读所有的行,注意到它没有替换任何现有的key
,因此会 * 添加 * 一个新的key = value
行(这有点复杂,因为键是逐段列出的,但逻辑本身足够简单)。1.最后,在通读了整个现有配置并完全写出新配置(根据需要使用
fflush
、fsync
和fclose
等)后,git config
调用操作系统服务来 * 重命名 * 文件,以便将.git/config.lock
重命名为.git/config
。这就是在此特定情况下流程失败的地方。如果重命名成功,则会使新配置生效 * 并 * 删除锁定文件,所有这些操作都是一个原子操作:任何其他Git命令要么看到原始
.git/config
文件中的完整旧配置,要么看到新.git/config
文件中的完整新配置,新.git/config
文件在构建过程中称为.git/config.lock
。另一个StackOverflow问题是:Will we ever be able to delete an open file in Windows?accepted answer包含以下语句: 未启用完全共享(包括删除)打开文件的防病毒产品存在缺陷。* 如果是这种情况,也就是说,如果此特定防病毒软件无法使用“允许删除”标志打开,并且如果此类软件存在缺陷,则此特定防病毒软件存在问题,并且存在缺陷。
mw3dktmi4#
当我通过桑巴舞在windows共享驱动器上运行
git init
挂载到linux时,我遇到了这个错误。我使用sudo进行init,然后chown回到原始用户,从那以后一切都很好:zwghvu4y5#
对我来说,这是一个在**/etc/nsswitch.conf**中注解掉两行的问题
我注解掉的行是:
然后关闭并重新打开Cygwin
mqkwyuun6#
这个错误出现在Windows WSL中,当我尝试先创建一个
newuser
,然后从windows树下的文件夹创建git init .
时。newuser
能够在其linux主目录中创建git仓库。在WSL中,重新启动Windows并不能解决这个问题。在我的用例中,我需要从Windows命令行发出
wsl --shutdown
。在此之前,我在WSL linux中创建了/etc/wsl.conf
,其内容如下,灵感来自https://stackoverflow.com/a/50856772:并将
newuser
加入到Sudo基团中当文件夹不属于
newuser
时,为了不仅能够使用git init .
,而且能够使用给定的git仓库,newuser
必须运行