gpt4 book ai didi

Git checkout 失败,因为本地更改...没有本地更改?

转载 作者:太空狗 更新时间:2023-10-29 13:42:18 31 4
gpt4 key购买 nike

我使用 Git 2.7.4 对分支进行了一些更改。提交并推送到分支。

[user:~/terraform] mybranch ± git status
On branch DIC-98-rhel-lb0
nothing to commit, working directory clean
[user:~/terraform] mybranch ±


[user:~/terraform] mybranch ± git push origin mybranch
Everything up-to-date

当我尝试切换到master

[user:~/terraform] mybranch ± git checkout master
error: Your local changes to the following files would be overwritten by checkout:
azure-openshift/.gitignore
azure-openshift/bastion.tf
azure-openshift/bootstrap.sh
azure-openshift/bootstrap.tfvars
azure-openshift/cns.tf
azure-openshift/infra.tf
azure-openshift/master.tf
azure-openshift/openshift.auto.tfvars
azure-openshift/openshift.variables.tf
azure-openshift/revproxy.tf
Please, commit your changes or stash them before you can switch branches.
Aborting
[user:~/terraform] mybranch 1 ±

我也可以先做git reset,结果一样。

我错过了什么?

最佳答案

很可能这些文件在您当前的分支 (mybranch) 中被忽略了,但它们是 master 分支的一部分(也许它们是在某个时候不小心提交的?) .因此,虽然您当前的分支是干净的,但 check out master 会覆盖这些文件并有丢失该数据的风险。

如果您知道覆盖这些文件是安全的,那么您可以告诉 git 您确定要使用 -f 标志 check out master :

git checkout -f master

如果您不确定,那么您可以尝试将 master rebase 或 merge 到您的问题分支并解决任何冲突等。


例如,假设您不小心在 master 分支中包含了一个名为 foo.temp 的文件,这是一个在您运行构建时生成的日志文件。

然后您创建一个新分支 remove_foo,并将 foo.temp 添加到您的 .gitignore。您构建(从而修改 foo.temp),提交并将您的更改推送到服务器。

一切看起来都很好。 git status 返回干净。

然后您尝试 check out master 并收到错误:foo.temp 将被 master 中的版本覆盖。 Git 正在努力保护您的工作。

幸运的是,您知道这是一个临时问题,所以您使用 git checkout -f master 因为您知道如果 foo.temp 被覆盖也没关系。

最终,remove_foo 将被同行评审并 merge 到 master 中,这个小烦恼将消失。


如果您试图删除一些不小心包含在存储库中的文件,那么您可能会发现这很有帮助:

Remove a file from a Git repository without deleting it from the local filesystem

关于Git checkout 失败,因为本地更改...没有本地更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51446801/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com