git无法提交解决方案--! [rejected] master -> master (non-fast-forward)
使用git上传自己的代码时,是否有小伙伴遇到过,以上的报错情况。
以下是我的解决方案
解决方案
git add 文件名/目录名/.
git commit -m "XXXX"
git push
输入你git的账号
输入你git账号的密码
输入
git merget --no-ff
即可解决
git merget --no-ff介绍
git merge --no-ff是 Git 中用于合并分支的命令,它强制执行普通的合并(创建合并提交),即使当前分支的提交历史是快进(fast-forward)模式。以下是详细说明:
快进合并与普通合并
快进合并(Fast-Forward Merge):如果当前分支的提交历史是线性的,没有分叉,Git 会直接将当前分支的指针移动到目标分支的最新提交,不会创建新的合并提交。这种方式简单高效,但会丢失分支的独立历史记录。
普通合并(Non-Fast-Forward Merge):即使当前分支的提交历史是线性的,git merge --no-ff也会创建一个新的合并提交,将目标分支的最新提交合并到当前分支。这种方式保留了分支的独立历史记录,便于追踪和管理。
使用场景
假设你有一个项目,包含两个分支:main 和 feature。main分支的提交历史为 A → B → C,feature分支从 B 分叉,提交历史为 B → D → E。
- 不使用 --no-ff:如果 main分支当前在 C 提交,合并 feature分支时,Git 会执行快进合并,将main 分支指针移动到 E 提交,合并后提交历史为 A → B → C → D → E。
- 使用 --no-ff:合并时,Git 会创建一个新的合并提交 F,合并后提交历史为 A → B → C → F(合并提交,包含 D 和 E)。这种方式保留了 feature分支的独立历史记录,便于后续的分支管理和代码审查。
总结
git merge --no-ff用于强制执行普通合并,保留分支的独立历史记录,适用于需要追踪分支开发过程或进行代码审查的场景。