我是git的新手,并且已经在一个项目中使用了几个月,并且决定在Github上提供它.我刚刚发现我的备份脚本几乎正常工作,所以我备份了一切,但它很草率.Pheww ......但我希望是B计划.
我意识到一些netCDF数据文件基本上是在版本控制(=大型.git
存储库)中复制的,所以我试图通过首先将这些文件扩展名(和一些测试/数据目录)添加到.gitignore
根目录中的文件来排除这些文件.这似乎只是忽略这些文件的版本控制,但仍然包含在.git
存储库中.然后我将它们添加到了.git/info/exclude
,我相信它完全从存储库中忽略它们.
每次发现,我都先做了一次
git pull [my_repo] master
Run Code Online (Sandbox Code Playgroud)
那么一个
git push [my_repo] master
Run Code Online (Sandbox Code Playgroud)
在第二次迭代之后(当我认为我只添加了.gitignore的东西时),我收到一条错误,指出我对需要合并的文件有一些问题.我首先创建了.gitignore
gitHub,这是不同的,我认为这是问题并开始合并.
在第三次迭代(已经添加了.git/info/exclude
文件),一切都很顺利,但我看到只有我想要的目录EXCLUDED出现在gitHub上.回到我的磁盘上,其他一切都消失了,包括netCDF数据文件......
我试过了git reset --hard master
,重置时一切都一样.
我似乎无法找到类似的问题; 但是,我想我不可能是第一个做到这一点的人.
编辑:TL; DR版本:
如果你在repo中找到了你想要被git忽略的文件:
只从git存储库中删除它
git rm --cached filesToIgnore
将文件或通配符规则(例如*.swp
)放在.gitignore
文件中.然后使用a保存存储库git commit
好吧,我没有将它们完全拼凑在一起但是让我们分解出错了:
1.有什么区别.gitignore
和.git/info/exclude
不同之处在于,前者被签入到资源库,并且项目特定文件忽略,而后者是环境特定的文件,如.swp
关于vim的临时文件的文件.
考虑到这一点,将文件放入.git/info/exclude
文件只会忽略新文件,而不是已经存储库的文件(我假设netCDF文件是)
第2位.使用git pull
,它首先git fetch
为远程存储库执行a操作,然后尝试合并远程存储库和本地存储库.为什么这有关系?因为如果您有任何本地未经检查的文件,它会抱怨.这是我猜你看到的错误.
3.由于您强制合并,您可能最终丢弃任何未签入的文件.这些都消失了.因为他们从未被检查过git,所以git不知道他们.
编辑:但是,正如cHao指出的那样,git提交中的任何先前文件仍然存在.查看您的存储库git log
并暂时检出它们中的任何一个git checkout <checksumNumber>
.用于git reset --hard <checksumNumber>
将存储库永久重置为该提交.
4.当您发现git存储库中要忽略正确进程的文件时,您需要做什么
git rm --cached filesToIgnore
这将从git仓库中删除它们,但不会从工作目录中删除它们.
然后将它们添加到.gitignore文件中,提交更改,你应该很高兴.
归档时间: |
|
查看次数: |
960 次 |
最近记录: |