下面是我从主分支中使用的命令
git branch experiment
git checkout experiment
然后我对我的文件做了一些更改,提交这些更改,并将新的分支推送到GitHub。
git commit . -m 'changed files'
git push -u origin experiment
后来,我决定将我的实验分支合并到主分支中。
git checkout master
git merge experiment
最后,我把这些改动推到了GitHub上。
git push -u origin master
一切都很顺利,直到我试图删除我的实验分支使用
git branch -d experiment
我得到了错误信息:
错误:分支'experiment'没有完全合并。
如果你确定要删除它,运行'git branch -D experiment'。
我对git有点陌生,我不知道我还能合并多少两个分支。我错过了什么?
公认的答案是正确的。在这里,我想补充三点:
这是如何发生的(经常发生在我身上)
举个例子
如何确保在通过-D强制删除之前不遗漏任何更改
我在GitHub上使用Rebase和merge作为默认的PR合并方法。这将为相同的更改创建新的提交(哈希)。
例如,当我跑步的时候
git log --graph --left-right --oneline add-theme-dark-2...main
在我的一个项目中,我得到了这个:
> fba6fce (HEAD -> main, tag: v2.0.9, origin/main) Refactored to semantic class names.
> 4e665bc Refactored to semantic class names. (1a)
....
> 8bd13a6 Added 'font-semibold' to title. (2a)
< 23f7b8a (add-theme-dark-2) Refactored to semantic class names.
< cf71814 Refactored to semantic class names. (1b)
....
< d3a774a Added 'font-semibold' to title. (2b)
(END)
注意1a/1b和2a/2b有不同的提交哈希值。
要确保您没有错过更改,请运行:
git log --graph --left-right --cherry-pick --oneline add-theme-dark-2...main
如果它返回一个列表,则每一行都以“=”开头:
= fba6fce (HEAD -> main, tag: v2.0.9, origin/main) Refactored to semantic class names.
= 4e665bc Refactored to semantic class names.
...
= 346770b Moved text size to component.
= 68cd471 Added theme-dark.
= 8bd13a6 Added 'font-semibold' to title.
使用以下命令可以安全地删除分支:
git branch -D add-theme-dark2