git rebase --interactive |重命名路径失败

git rebase --interactive | fails renamed path case

我尝试对一些提交进行交互式变基。 我的 git-log 看起来像这样

A - Files added  
B - Some commit  
C - Some commit  
D - Renamed path from A (dir/dir/dir => Dir/Dir/Dir)  
E - Some commit  
F - Some commit  

我可以毫无问题地变基 E、F,但是 A-D 中的任何内容都无法删除、压缩、编辑。

错误:

error: The following untracked working tree files would be overwritten by checkout:  
*** list of files contain the lowercase pathes ***
error: could not detach HEAD

忽略大小写配置值

$git config --global core.ignorecase
false

从D提交(有多个文件)

rename from php/software/utils/GlobalManager.php
rename to php/software/Utils/GlobalManager.php
similarity index 100%

我做错了什么,我该如何相处。

一个愚蠢的尝试:在当前分支的顶端添加一个额外的提交,在这里您将有问题的路径重命名为不会冲突的路径:

# from your current HEAD :
git mv php/software/Utils php/software/Utils-wip
# rename other folders if necessary
git commit

之后,运行 你的交互式变基:

git rebase -i HEAD~41

看看它是否有效。

无论出现什么问题,您都可以在之后恢复额外的提交:

git reset --hard HEAD~
# that or drop the last commit from your `rebase -i` list

我也遇到过这种问题,我所做的只是还原 rebase git 还原 并再次执行以下步骤:-

git rebase -i Head~3 // no of commit we want to rename

then change the Pick to reword

pick f7f3f6d Change my name a bit
pick 310154e Update README formatting and add blame
pick a5f4a0d Add cat-file

像这里一样,我想重命名所有 3 个 commis,所以我将 pick 前缀更改为 reword

reword f7f3f6d Change my name a bit
reword 310154e Update README formatting and add blame
reword a5f4a0d Add cat-file

然后保存继续:wq!.

然后所有提交都将变基,系统会提示您编辑提交消息名称,在那里您可以更改 commit.if 的名称,只要添加和 运行 就有任何冲突git commit --ammend.

因此这些提交消息重命名 window 将提示您等于您要更改的提交名称的数量。这就是您可以更改提交名称的方法。

希望对您有所帮助。

我不确定这是否是正确的解决方案,但它对我有用:

$ git rebase -i HEAD~2
...
error: could not detach HEAD

我也这样做了:

$ git reset --soft HEAD~
$ git commit --amend

成功了,2 次提交被压缩为 1 次