|
|
不拘小节的羽毛球 · 【SpringBoot+MyBatisPlu ...· 1 年前 · |
|
|
刚失恋的炒面 · 生成式人工智能技术对教育领域的影响——关于 ...· 2 年前 · |
|
|
深情的山寨机 · BreadCrumb控件_mb63982c7 ...· 3 年前 · |
我设法在我本地的git库中创建了一个小混乱。我试图通过使用 following instructions 来修复一个中断的提交。在运行"git commit --amend“之前(以及在git rebase --interactive之后),我确定我的更改是不正确的,所以我执行了"git reset HEAD --hard”。我告诉你,这不是个好主意。
现在交互式的rebase似乎“卡住”了。Git将当前分支显示为(|REBASE-m)。每个命令(cd ..、ls、git rebase...)在我的存储库中出现以下错误:
rebase cat:.git/
-merge/head-name:没有这样的文件或目录
下面是git rebase --abort的样子:
$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory
下面是git rebase的结果--继续:
$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory
有什么想法吗?我想将情况重新设置为我开始深思熟虑的rebase操作之前的状态。
下面是git log --oneline显示情况的方式:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
这个很好。
我使用的是msysgit v1.7.0.2。
在Windows上,如果您不愿意或无法重新启动计算机,请参见下面的内容。
安装Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
在Process Explorer中,查找>文件句柄或DLL...
输入错误中提到的文件名(我的错误是'git-rebase-todo‘,但在上面的问题中是'done')。
Process Explorer将突出显示持有文件锁的进程(对我来说是'grep')。
杀死该进程,您将能够以标准方式中止git操作。
我被困在这里了。我创建了head-name文件,然后我遇到了另一个错误,说找不到onto文件,所以我创建了那个文件。然后我收到另一个错误,说无法读取‘.git/rebase-apply/ or’:没有这样的文件或目录。
因此,我查看了用于rebasing的git documentation ,发现了另一个命令:
git rebase --quit
这让我回到了我的分支上,没有任何变化,我可以重新开始我的rebase,像新的一样。
如果你的状态低于状态并且rebase不再起作用,
$ git status
rebase in progress; onto (null)
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
然后第一次运行,
$ git rebase -quit
然后从reflog恢复先前的状态,
$ git reflog
97f7c6f (HEAD, origin/master, origin/HEAD) HEAD@{0}: pull --rebase: checkout 97f7c6f292d995b2925c2ea036bb4823a856e1aa
4035795 (master) HEAD@{1}: commit (amend): Adding 2nd commit
d16be84 HEAD@{2}: commit (amend): Adding 2nd commit