Git推送,提交合并,以及hint: Updates were rejected because the tip of your current branch is behind 我练习代码的仓库主分支main和我常使用的master分支落后太多版本了如何将master分支内容合并到main分支main分支再推送到远端仓库呢我本地的名称和远端一致。新建main分支并签出到main分支。Git命令是git checkout -b main然后就是将master分支合并到main分支中具体命令就是git merge master然后检查发现main分支的内容都同步的和master一样了。最后把内容推送到远端的main中就行Git命令是git push origin main由于是从最新的代码中签出的所以想要合并推送就很容易。但是如果出现冲突呢看我下一篇文章具体来说遇到的问题本质是本地main分支的基础版本落后于远端main分支远端有其他提交。你本地也有自己的提交可能是之前未推送的改动。直接git push会被拒绝因为 Git 要求本地必须是远端的直接后继fast-forward。个人开发或者小团体# 1. 拉取远端代码并将你本地的提交“垫”到远端最新提交之后 git pull --rebase origin main # 2. 如果变基过程中出现冲突解决冲突后执行 git add . git rebase --continue # 3. 推送由于变基改变了历史可能需要强制推送 git push origin main --force-with-lease企业开发git pull origin main # 这会自动 merge产生一个合并提交 git push origin main解决方案rebase的思路是用git pull --rebase将远端的提交先拉下来然后把你本地的提交逐个“垫”到远端最新提交的后面。这样你的本地历史就变成了“基于远端最新提交之上”的样子相当于你是在远端的最新基础上做的修改。此时本地分支已经是远端的直接后继理论上可以正常推送。但因为 rebase 改变了提交哈希Git 仍然认为这不是快进因为远端记录的哈希和本地不同所以需要用--force-with-lease来“告诉” Git我知道历史变了但我确认远端没有其他新提交请覆盖。另一种思路merge使用git pull --no-rebase即默认的git pull会将远端的提交和本地的提交合并成一个新的合并提交形成分叉再合并的历史。这样本地分支仍然是远端的后代因为有合并提交作为桥梁可以直接git push而不需要强制推送。代价是多了一个合并提交历史图会显得不那么线性。