社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

Git交换机分支,丢失未跟踪的文件

Joshua Zastrow • 6 年前 • 1040 次点击  

我一直在做一个项目,我主要使用一个主分支,但也有一个开发分支,我做了很多工作。我切换到那个分支并切换回master,结果发现所有未跟踪的文件都不再在repo中了(env文件、数据文件夹以及其中的所有内容,config.json文件)。

似乎当我切换分支时,我的repo发生了变化,并放弃了.gitignore中的所有内容。有没有办法恢复所有这些文件?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30775
 
1040 次点击  
文章 [ 1 ]  |  最新文章 6 年前
torek
Reply   •   1 楼
torek    6 年前

我换了那个[ dev ]分支并切换回 master

最有可能的是那些文件 主人 并列入 .gitignore 目前 在小费中 DEV .

做:

git checkout dev

告诉你的Git: 将我的索引和工作树内容替换为提交到的内容 DEV 点。 因此,您的Git会找到冻结在特定提交中的所有文件,从该提交中提取它们,将它们放入索引中,然后将它们还原(解冻并解压缩)到您的工作树中。

这自然覆盖了 未跟踪的 工作树中的文件。但没什么大不了的,对吧?他们在承诺中。

然后你告诉Git: 将我的索引和工作树内容替换为提交到的内容 主人 点。 因此,您的Git会在 主人 ,提取它们,并像以前一样将它们放入索引和工作树中。这次,那些文件 不是 在承诺中。但它们被跟踪,并与提交的副本匹配,所以Git 移除 他们。

现在他们走了!

你可以在 DEV ,而不进行跟踪,使用 git show :

git show dev:file > file

这将提取提交时由 DEV ,生成输出到stdout,然后重定向到该文件。不幸的是它能让你得到一切 冻结在那个承诺中 不一定符合 在你的工作树上 当你跑 git checkout dev 原来。

通常,Git会在其中一个步骤中警告您这一点。如果您注意到这些警告并将文件移到一边,那么您已经将这些移到一边了。但是列出文件 吉蒂格诺 在某些情况下,具有给予Git的副作用 允许破坏其内容 . 所以有几个角落的情况下,Git会清除当前的内容,假设因为文件 吉蒂格诺 D,它们在任何方面都不珍贵。

恢复这些文件的唯一方法是在Git之外,使用诸如Mac上的Time Machine或系统备份。