向远程仓库推送提交记录。
git push
什么都没有发生,命令失败。因为你最新提交的 C3
基于远程分支中的 C1
。而远程仓库中该分支已经更新到 C2
了,所以 Git 拒绝了你的推送请求。
如何解决?
使你的工作基于最新的远程分支。
举个例子:
git fetch
git rebase o/main
git push
上面的三条命令等价于 git pull --rebase
; git push
git fetch
git merge o/main
git push
git push origin feature
向远程仓库提交当前 feature
分支
Git 是通过当前工作分支的属性来确定远程仓库以及要 push 的目的地的。这是未指定参数时的行为,我们可以为 push 指定参数,语法是:git push <remote> <place>
git push origin main
切到本地仓库中的“main”分支,获取所有的提交,再到远程仓库“origin”中找到“main”分支的跟踪分支,将远程仓库中没有的提交记录都添加上去。
我们通过“place”参数来告诉 Git 提交记录来自于 main, 要推送到远程仓库中的 main的跟踪分支。它实际就是要同步的两个仓库的位置。
需要注意的是,因为我们通过指定参数告诉了 Git 所有它需要的信息, 所以它就忽略了当前工作分支的属性!
place不仅可以只有源分支,还可以包含目的分支。要同时为源和目的地指定 git push origin <source>:<destination>