我尝试交互式变基一些提交。 我的 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 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。
因此这些提交消息重命名窗口将提示您等于您要更改的提交名称的数量。这就是您可以更改提交名称的方法。
希望能有所帮助。
我不确定这是否是正确的解决方案,但它对我有用:
$ git rebase -i HEAD~2
...
error: could not detach HEAD
所以我这么做了:
$ git reset --soft HEAD~
$ git commit --amend
成功了,2 个提交被压缩为 1 个
我所做的是 Git 删除了具有初始名称的文件。我的问题是我将
abcFile.py
重命名为 ABCFile.py
。因此,当我收到该错误消息时,我知道我想保留 ABCFile.py
,所以我执行了此命令。
git rm `path/to/abcFile.py`
Git 在仅更改大小写的情况下命名/重命名文件时存在一些问题。