git rebase-i错误:您对以下文件的本地更改将被签出覆盖,无法分离头
我尝试使用git rebase-i错误:您对以下文件的本地更改将被签出覆盖,无法分离头,git,Git,我尝试使用squash减少历史记录中的提交次数。我一个人工作,工作流是最简单的。除了master之外,我没有创建任何分支 以下是代码和结果: $ git rebase -i 9852344 error: Your local changes to the following files would be overwritten by checkout: smtp_credentials.ini Please commit your changes or stash them be
squash
减少历史记录中的提交次数。我一个人工作,工作流是最简单的。除了master
之外,我没有创建任何分支
以下是代码和结果:
$ git rebase -i 9852344
error: Your local changes to the following files would be overwritten by checkout:
smtp_credentials.ini
Please commit your changes or stash them before you switch branches.
Aborting
error: could not detach HEAD
您是否有未提交的更改?-不
我不明白系统要我做什么。请解释一下。文件
smtp\u credentials.ini
位于gitingore中。它在本地和github上有不同的版本。您一直说设置\ U凭据.ini
在.gitignore
中;这不会改变什么。.gitignore
所做的唯一一件事就是防止意外地将未跟踪的文件添加到索引中;此文件已在索引中,因此.gitignore
对其没有影响
更重要的是,正如其他人所指出的,错误消息非常明确。它告诉您该文件中的更改是问题所在,并告诉您如何修复(隐藏或提交更改)。由于您试图
.gitignore
这些更改,我假设您不打算提交它们;所以把它们藏起来。让我们把答案明确地贴出来。我认为这对很多人都有用
文件smtp_credentials.ini位于.gitignore中;这改变不了什么
这对于git
初学者来说并不明显。我在网上的任何地方都找不到。这个错误消息没有多大帮助
我认为将文件添加到.gitignore
并执行git rm--cached smtp\u credentials.ini应该足够了,但这还不够
在操作过程中将文件移到一边并放回原处
完成时
它成功了,用户的评论帮助很大。该错误消息非常明确地说明了问题所在。您对smtp\u凭据.ini
进行了未限制的更改。这些更改将丢失,因此git拒绝执行重基。执行它告诉您的操作不起作用吗?@SerhiiKushchenko显然您确实有未限制的更改,即在smtp\u credentials.ini
中。如果它已经被跟踪,那么它被列在你的.gitignore
中是不相关的。这是否回答了你的问题?如果您希望在回购协议中保留该文件,但同时将其忽略,那么正如您所看到的那样,这样做并不是很好。人们通常做的是跟踪smtp_凭据.ini.template
并忽略smtp_凭据.ini
(实际使用的凭据)。我认为您必须在操作期间将文件移到一边,完成后可以将其放回。“对于git初学者来说,这并不明显。首先,医生说:“指定有意忽略未跟踪的文件“那又怎么样?我在本地和GitHub上的文件中有不同的内容。很长一段时间都没有问题,直到我想重新整理提交历史记录。因此,无论是否在.gitignore
中列出文件,文件都是跟踪的,不能忽略。是的,但在您努力学习之前,它并不明显。这就是为什么我说文件名.gitignore
,是错误的文件名。正确的文件名类似于。如果这些文件是未跟踪的文件,git不要抱怨它们,也不要通过大量的添加操作自动添加它们。在这种情况下,要么是,要么是类似于这些行的操作。但是这个文件名太可笑了,所以他们用了一个较短但有误导性的文件名。