git - Git 在分支切换失败后删除了我的文件
问题描述
通常我会在一个名为的本地分支上工作,然后在功能完成test
后将该分支合并到。master
但是,由于某种原因,我丢失了最新的更改。
这是我所做的:
T:\Test [test × +4 ~3 -5 !]> git status
On branch test
Your branch is based on 'origin/test', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: jest.config.js
modified: ormconfig.ts
modified: src/index.ts
deleted: src/it-portal/entity/Kiwi.ts
deleted: src/it-portal/entity/Movie.ts
deleted: src/it-portal/entity/User.ts
deleted: src/resolvers/HelloWorldResolver.ts
deleted: src/resolvers/MovieResolver.test.ts
deleted: src/resolvers/MovieResolver.ts
deleted: src/tests/Interfaces/global.d.ts
deleted: src/tests/config/globalSetup.ts
deleted: src/tests/config/globalTeardown.ts
deleted: src/tests/config/setupFiles.ts
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/it-portal/entity/Account.ts
src/resolvers/AccountResolver.test.ts
src/resolvers/AccountResolver.ts
src/test-utils/
no changes added to commit (use "git add" and/or "git commit -a")
T:\Test [test × +4 ~3 -10 !]> git add .
T:\Test [test × +4 ~7 -6 ~]> git commit -am 'added Account entity and resolvers'
[test caaa67a] added Account entity and resolvers
17 files changed, 164 insertions(+), 183 deletions(-)
create mode 100644 src/it-portal/entity/Account.ts
delete mode 100644 src/it-portal/entity/Kiwi.ts
delete mode 100644 src/it-portal/entity/Movie.ts
delete mode 100644 src/it-portal/entity/User.ts
create mode 100644 src/resolvers/AccountResolver.test.ts
create mode 100644 src/resolvers/AccountResolver.ts
delete mode 100644 src/resolvers/HelloWorldResolver.ts
delete mode 100644 src/resolvers/MovieResolver.test.ts
delete mode 100644 src/resolvers/MovieResolver.ts
rename src/{tests => test-utils}/Interfaces/global.d.ts (100%)
rename src/{tests => test-utils}/config/globalSetup.ts (100%)
rename src/{tests => test-utils}/config/globalTeardown.ts (100%)
rename src/{tests => test-utils}/config/setupFiles.ts (100%)
create mode 100644 src/test-utils/helpers/axios.ts
T:\Test [test ×]> git checkout master
fatal: cannot create directory at 'src/resolvers': Permission denied
T:\Test [test × +3 ~3 -8 !]> git merge test
Already up to date.
T:\Tes [test × +3 ~3 -8 !]> git checkout master
error: Your local changes to the following files would be overwritten by checkout:
jest.config.js
ormconfig.ts
src/index.ts
Please commit your changes or stash them before you switch branches.
error: The following untracked working tree files would be overwritten by checkout:
src/it-portal/entity/Kiwi.ts
src/it-portal/entity/Movie.ts
src/it-portal/entity/User.ts
Please move or remove them before you switch branches.
Aborting
T:\Test [test × +3 ~3 -8 !]> git log
commit caaa67ae6643b5efa2c7f3bd65a3aa4317037367 (HEAD -> test)
Author: Me <bob@gmail.com>
Date: Thu Jun 18 14:25:10 2020 +0200
added Account entity and resolvers
commit 724bb33f38f3c380ac07666f0f6c3e5ca8648d8f (origin/master, master)
Author: Me <bob@gmail.com>
Date: Wed Jun 17 15:27:14 2020 +0200
T:\Test [test × +3 ~3 -8 !]> git status
On branch test
Your branch is based on 'origin/test', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: jest.config.js
modified: ormconfig.ts
modified: src/index.ts
deleted: src/it-portal/entity/Account.ts
deleted: src/resolvers/AccountResolver.test.ts
deleted: src/resolvers/AccountResolver.ts
deleted: src/test-utils/Interfaces/global.d.ts
deleted: src/test-utils/config/globalSetup.ts
deleted: src/test-utils/config/globalTeardown.ts
deleted: src/test-utils/config/setupFiles.ts
deleted: src/test-utils/helpers/axios.ts
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/it-portal/entity/Kiwi.ts
src/it-portal/entity/Movie.ts
src/it-portal/entity/User.ts
no changes added to commit (use "git add" and/or "git commit -a")
T:\Test [test × +3 ~3 -8 !]> git branch
master
* test
master
我注意到切换到分支时出了点问题。但是现在,虽然我在测试中做了正确的提交,并且仍然在分支上,test
但它并没有向我显示添加的文件,也没有向我Account.ts
显示删除的文件,比如Kiwi.ts
. 关于如何解决这个问题的任何想法?
还要检查以下内容,这显示了我不想发生的事情。
T:\Test [test × +3 ~3 -8 !]> git checkout test
Switched to branch 'test'
M jest.config.js
M ormconfig.ts
M src/index.ts
D src/it-portal/entity/Account.ts
D src/resolvers/AccountResolver.test.ts
D src/resolvers/AccountResolver.ts
D src/test-utils/Interfaces/global.d.ts
D src/test-utils/config/globalSetup.ts
D src/test-utils/config/globalTeardown.ts
D src/test-utils/config/setupFiles.ts
D src/test-utils/helpers/axios.ts
Your branch is based on 'origin/test', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
解决方案
怎么了:
git checkout master
失败的原因Permission denied
。您创建的新文件可能比您拥有更多特权的用户,或者这些文件的权限由于某些原因已被更改/损坏。
Git 无法执行所需的更改来切换分支并恢复分支的工作树master
。git merge test
没有任何效果。您从未切换过分支,并且您已经在test
分支上。第二个
git checkout master
警告您未提交的更改并停止 switch 分支命令。git log
向您展示了您所做的提交。这是保证您的工作不会丢失,并确认您在test
分支机构。git status
向您展示了一个混乱的工作树。
该工作树是第一个git checkout master
(在点 1)的结果。
在通常情况下,当git checkout
由于工作树脏而无法实现时,git 会停止操作,恢复工作树并向用户显示它无法更改分支的原因,就像在第 3 点(第二个git checkout
)中发生的那样。
最有可能的是,第一个git checkout
无法恢复工作树,因为它没有创建文件夹的正确权限,导致工作树混乱。
您有很多方法可以将工作树恢复到当前分支中的最后一次提交。
我建议您在尝试任何签出或合并命令之前git reset --hard HEAD
完全恢复您的分支的工作树并检查文件的任何权限问题并解决它。test
推荐阅读
- python - 如何在 python imap 中获取电子邮件附件大小
- python - Spyder IDE 绘图
- html - Angular 材质卡片分页器
- c# - Unity Shader Graph - 如何更改参数 --- 如何同时更改所有对象上的网格参数?
- java - Spring JPA:XML 配置 - 没有符合条件的存储库 bean/找不到元素“jpa:repositories”的声明
- java - 在 java 中使用 DateFormatter 获取 UTC 时间
- c - 米斯拉。写出例外的理由
- python - matplotlib:(自动)确保文本适合图
- javascript - 如果所有页面都作为 ajax 调用加载,如何在 Google Analytics 中跟踪页面浏览量
- c++ - 如何在 Arduino/C/C++ 中将带有布尔值的数组转换为字节?