git rebase --交互式 |重命名路径失败的情况

问题描述 投票:0回答:4

我尝试交互式变基一些提交。 我的 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%

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

git rebase
4个回答
1
投票

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

# 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

0
投票

我也遇到过这种问题,我所做的只是恢复 rebase git revert 并再次按照以下步骤操作:-

git rebase -i Head~3 // 我们要重命名的提交数量

然后将“Pick”更改为“reword”

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

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

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

然后保存继续:wq!.

然后所有提交都会一一变基,系统会提示您编辑提交消息名称,您可以更改提交的名称。如果有任何冲突,只需添加并运行git commit --ammend

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

希望能有所帮助。


0
投票

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

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

所以我这么做了:

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

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


0
投票

我所做的是 Git 删除了具有初始名称的文件。我的问题是我将

abcFile.py
重命名为
ABCFile.py
。因此,当我收到该错误消息时,我知道我想保留
ABCFile.py
,所以我执行了此命令。

git rm `path/to/abcFile.py`

Git 在仅更改大小写的情况下命名/重命名文件时存在一些问题。

© www.soinside.com 2019 - 2024. All rights reserved.