【问题标题】:Git : Why are my files overwritten by checkout?Git:为什么我的文件被结帐覆盖?
【发布时间】:2021-02-21 01:02:55
【问题描述】:

我是 git 新手。 我在 git checkout 后收到错误消息 error: Your local changes to the following files would be overwritten by checkout:

我从 Stack Overflow here 发现了一个很好的问题。

但我仍然感到困惑。 为什么我的文件被跟踪到我想要签出的分支? 我希望文件保留在 local 分支中,我可以简单地移动到 dev 分支而没有文件。


我的情况

local branch that I'm focusing(all files are committed)
- add => new_file.java
- delete => deleted_file.java
- modify => modified_file.java

git checkout dev
=> error: Your local changes to the following files would be overwritten by checkout:

编辑

我知道发生了什么。对不起,我上面的解释是错误的。

admin : is local branch that I'm focusing(all files are committed)
- add => new_file.java
- delete => deleted_file.java
- modify => modified_file.java

someone removed origin/admin branch, and created origin/admin/dev branch.
- my local
ㄴadmin

- origin
ㄴadmin (removed)
ㄴadmin/dev (created)

I tried checkout origin/admin/dev branch!
git checkout origin/admin/dev

- my local
ㄴadmin
ㄴadmin/dev (checkout failed)

它可能会失败。 因为我本地分支的名称“admin”和远程分支的名称“admin/dev”都崩溃了。 如果分支的名称崩溃,则结帐失败并且文件仍然是我的工作区! Using the slash character in Git branch name

抱歉解释有误。

【问题讨论】:

  • 也许您还有未提交的文件?可能你的舞台不干净。
  • 是的,文件仍未提交。所以我把它们藏起来了。谢谢你的评论

标签: git checkout overwrite git-checkout


【解决方案1】:

当您提交文件时,文件将保留在分支中。鉴于它们没有提交,好吧,通常 git 会移动到您想要签出的分支 if 在工作树上修改的文件 not 在您的当前位置和你想去的地方。鉴于情况并非如此,git 会警告您。你能做什么?您可以通过提交这些更改来结束新修订,也可以将它们存储起来,以便稍后返回分支并继续您正在做的事情

git stash save -m "will come back later (or whatever you want to say)"
git checkout another-branch
# do lots of things
# when you are ready to go back:
git checkout the-branch-where-i-was
git stash pop

然后你又回到了原来的位置。

【讨论】:

  • 谢谢!你的评论对我很有帮助。问题只是我的第一个解释是错误的:(我误解了情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2014-07-06
  • 2015-07-31
相关资源
最近更新 更多