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

标签 git reset git-checkout

我使用 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/

相关文章:

Git忽略除子文件夹以外的所有内容

logging - 如何将 Golang 的日志输出设置回控制台?

javascript - 为什么在此页面上回发后 form.reset() 不起作用?

git checkout 自动 merge 本地修改

git - 'git checkout HEAD^' 的反义词是什么?

git - 从私有(private) GitHub 存储库 checkout 标签

git - 在 Git 中跨多个分支区分单个文件

python - virtualenvwrapper 的问题

git surgery - 将单个存储库拆分为多个存储库

r - 如何在 R 中重置 par(mfrow)