向远程仓库推送提交记录。

    image.png

    git push
    什么都没有发生,命令失败。因为你最新提交的 C3 基于远程分支中的 C1。而远程仓库中该分支已经更新到 C2 了,所以 Git 拒绝了你的推送请求。

    如何解决?
    使你的工作基于最新的远程分支。

    举个例子:
    image.png

    git fetch
    git rebase o/main
    git push
    image.png
    上面的三条命令等价于 git pull --rebase ; git push

    git fetch
    git merge o/main
    git push
    image.png

    image.png

    git push origin feature
    image.png
    向远程仓库提交当前 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>