[英]git rebase merge conflict mistake, selected deleted instead of created file
在git rebase origin/main
期间,我遇到了合并冲突。 本地分支中不存在文件,但在主分支中。 然后我运行git mergetool
它问我想做什么:
Merging:
src/CMakeLists.txt
Deleted merge conflict for 'src/CMakeLists.txt':
{local}: created file
{remote}: deleted
Use (c)reated or (d)eleted file, or (a)bort? d
我选择了(d)eleted file ,这是错误的。 在我继续 rebase 之后,我发现文件丢失了。
然后我使用git checkout origin/main src/CMakeLists.txt
丢失的文件,这样我就可以恢复文件。 但是,提交历史现在有一个意外的额外提交,如果可能需要进一步的 rebase,这可能会导致问题。 我只想撤消我的决定,以便提交历史记录与我首先选择正确答案一样。
如果只是在您的所有历史记录中保留CMakeLists.txt
的origin/master
版本:
git rebase -i origin/master
break
指令,保存并退出git rebase
停止时,运行git checkout origin/main -- src/CMakeLists.txt
git rebase --continue
git checkout origin/master -- src/CMakeLists.txt
来恢复该版本git rebase
停止,因为没有为特定提交留下任何更改,在这种情况下运行git rebase --skip
以跳过重播该提交另一方面,如果您对要保留和恢复的文件进行了修改:
git reflog
或git reflog my/working/branch
git rebase
git reset --hard <sha>
git rebase origin/master
git reset --hard
上的一般警告:
在干净的工作树上运行它,它是 git 中为数不多的命令之一,可以从磁盘中删除一些文件或修改,而不会将它们存储在 git 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.