Git在添加了一个.gitignore后,将随机的东西拉到了我的另一台机器上,从而消灭了我本地回购协议的一半
编辑:所以有两种可能性:Git在添加了一个.gitignore后,将随机的东西拉到了我的另一台机器上,从而消灭了我本地回购协议的一半,git,Git,编辑:所以有两种可能性: 我在.gitignore文件中使用通配符的方式(即使用单亲条目)揭示了意外行为 我是个坏孩子,从一台两周没有更新过的机器上推过来:我运行Arch,这是一台便携式机器,所以我只在冒险时使用它。我做了一个完整的系统更新,但它没有更新git,所以不确定atm 我将用一些虚拟回购测试笔记本电脑,并尝试用.gitignore破坏git。早上会回来报到,现在是睡觉时间 第二次编辑: 我不能用一台旧机器或一台看似异常的机器来复制这个问题。我能得出的唯一模糊结论是,不知何故,我那台略显
build
build/*
CMSIS
CMSIS/*
FreeRTOS
FreeRTOS/*
tags
然后,我将更改推到另一台笔记本电脑上。随机的东西没有被拉出来,比如半个文件之类的东西。。。然后我去查看我的makefile并发现:
#
# makefile
# <username>, 2019-06-02 16:16
#
all:
@echo "makefile needs your attention"
#vim: ft=make
#
首先,您的gitignore可能只是:
build/
CMSIS/
FreeRTOS/
不需要通配符
其次,如果这些文件夹已被跟踪,则需要取消跟踪它们。例如:
git rm --cached -r build/
第三,在原始存储库中执行git status
,查看是否有任何文件被删除。执行git show以准确查看上次提交时记录的内容。您可能还希望尝试以下忽略已提交内容的操作:
git update-index --assume-unchanged build/
好的,很酷。这能解释为什么在我拉取时src/host/efm32zg222f32文件夹中的文件被更新了一半吗?因为那是weird@BitShift不确定:您在问题中没有确切提到什么是半更新的。但是,
git show
将向您显示录制的内容:您可以检查它是否包含src/host/efm32zg222f32
files.Cool。是的,一切都更新得很好。我一次添加一个文件,并正确地执行操作。听起来好像git现在是垃圾,或者.gitignore产生了意外行为。@BitShift您可以使用git check ignore-v local/path/to/file
(repo的本地)检查是否忽略了一个文件(您认为该文件应该被跟踪,并且在克隆中丢失了)。是否有人在推/拉操作之间截获了该代码?我记得看到一些用户在GitHubYeh上被黑客攻击完全有可能。不过我在机器上使用了vpn,所以可能不太可能。我会做一个git log-all-p
来手动检查提交历史记录并确保它有意义
git update-index --assume-unchanged build/