9. Push
命令 | 作用 | 延展阅读 |
---|---|---|
git push --set-upstream origin release == git push -u origin release 为缩写版本 | 1. .git/config 配置文件会追加如下关联关系,[branch “release”] remote = origin merge = refs/heads/release 故后续可以直接执行 git push 2. .git\refs\remotes\origin 里会追加文件release | 链接 自证 |
1. git branch --set-upstream-to=origin/release2 release3 2. git push origin HEAD:release2 | 本地release3分支 和远程origin/release2分支 建立关联branch 'release3' set up to track 'origin/release2'. .git/config 新增关系[branch “release3”] remote = origin merge = refs/heads/release2 分支名不同时push代码的方式 | 自证 |
git push | 本地分支 和远程分支 建立起联系后,就可以用 git push 直接推送代码;关联关系体现在 ☞ .git/config 里有关联关系[branch “release”] remote = origin merge = refs/heads/release | 自整 |
git push origin release | 1. 本地release 和远程release 满足fast-forward 则可以合入2. 本地release 和远程release 不满足fast-forward 则被报错拦截3. .git/config 中未追加关联关系也可执行此操作;4. .git\refs\remotes\origin 里会追加文件 release | 链接 自证 |
git push 和git push origin release 区别 | 1. 当只关联一个远程,只有一个分支时,这两个命令没什么区别。 2. 当关联了两个多个仓库、有多个分支时, git push 可能会报错,因为它不知道要上传代码到哪里去; 而 git push origin master 指定仓库和分支,就不会报错。 | |
git push origin release --force | 强制推送,内容起到置换效果,慎用 | 自证 |
git push origin --all | 将本地所有分支 都推送给特定的远程仓库 | |
git push origin --tags | 当使用--all 选项推送所有本地分支时,tags 并不会被自动推送到远程仓库。故使用 --tags 选项来向远程仓库推送所有本地tags . |
场景1:一套向 中心仓库 发布 本地仓库变更 的标准流程
命令 | 作用 | 延展阅读 |
---|---|---|
1. git checkout dev 2. git fetch origin main 3. git rebase -i origin/main 4. # Squash commits, fix up commit messages etc. 5. git push origin dev | 1. 切到本地dev分支 ;2. 通过 git fetch 同步中心仓库main分支 在本地的副本,以确保本地副本是最新的;3. 通过 git rebase 操作将分支的修改变基 到远程main分支 的提交历史之上 ;( -i 表可交互的rebase 操作,同时也是在分享给其他团队成员之前,清理本地commit记录的好机会) 5. git push 命令将本地dev分支 发送中心仓库 ;(由于已确保本地的 main 分支是最新版本的,因此push 操作是能够快速前进的。此时git不会阻止push 操作) | 链接 |
场景2:–amend 提交
命令 | 作用 | 延展阅读 |
---|---|---|
1. make changes to a repo and git add 2. git commit --amend 3. update the existing commit message 4. push 方式1: git push --force origin main 方式2: git push -f | amend提交通常会修正并更新commit message ,或者增加新的修改 一旦一次commit被修正之后, git push 会 直接失败,因为Git认为修正之后的 commit 与远程仓库的commit 发生了偏离。修正之后的 commit 需要使用--force 选项才能推送到远程仓库 | 链接 |
场景3:本地分支
和远程分支
恰巧重名时 如何push?
命令 | 作用 | 延展阅读 |
---|---|---|
1. 本地新建test4 分支,远程仓库没有重名分支2. git checkout -b test4 3. date >> 1.txt && git add . && git commit -m "msg" 4. git push origin test4 | 1. 代码会被成功 push 到远程仓库2. .git/config 配置文件未追加关联关系 [branch "test4"] ,故此分支依旧不可以直接执行git push 3. .git\refs\remotes\origin 里会追加文件 test4 | 自证 |
1. 远程仓库有test6 分支,本地有test6 ,他们没有关联关系,恰巧重名时2. git checkout test6 3. date >> 1.txt && git add . && git commit -m "msg" 4. git push origin test4 | 1. 满足fast-forward 则可以合入2. 不满足 fast-forward 则被报错拦截3. .git/config 配置文件未追加关联关系 [branch "test4"] ,故此分支依旧不可以直接执行git push 4. .git\refs\remotes\origin 里会追加文件 test4 | 自证 |
拓展:Git常用命令汇总