zoukankan      html  css  js  c++  java
  • git重构提交树:分支、变基和挑拣提交的用法

    在Push时报错

    一种解决方案是

    git push remote-name --delete branch-name
    
    git push remote-name  branch-name
    

    删除远程仓库的远程分支,之后Push一个同名的分支,即可解决Push报错问题

    合并提交

    这个是用变基命令,重写历史的一部分。
    可以运用

    git rebase -i HEAD~num
    

    在通过指定pick squash等内容来实现合并几次提交。
    把出现在下方的提交,标记为squash,即可让这几次提交被合并。

    挑拣

    提交树依赖情况
    挑拣前

    git cherry-pick e43a6
    

    挑拣后
    挑拣后
    注意配合分支命令。branch 可以随时指定某个任意的提交id来创建分支,这非常方便和重要,参考可以自由在提交树上移动。在提交树上自由移动,参考游戏中学git

    提交多次但是合并请求审核时:审核者要求一次合并请求对应一次提交编译审核。

    可能会想到的解决问题的命令是revert reset rebase cherry-pick等等,但是其实用branch就可以
    因为branch 可以随时指定某个任意的提交id来创建分支,所以可以把这多次提交,指定为多个分支,push时创建并push到分别的远程分支上即可做到一次提交对应一个合并请求。

    移动到某次提交的状态

    这是在提交树上自由移动的一种延伸用法。

    git branch branch-name commit-id
    

    可以给某个提交id指定分支名,这样,就可以方便地切换到这一分支,也就是可以随时切换到某次提交的状态,便于将来可能的Push。

    重构提交树

    branch :随时给提交id指定分支名即创建对应分支
    cherry-pick: 随时挑拣需要的提交到当前分支
    rebase: 方便的变基
    以上三条命令,交替结合使用,可以非常方便的构建出自己想要的提交树形态

    git变基重写历史push前与push后

    代码提交到git上有一套规范。比如提交日志的写法。

    git push reponame branchname
    

    再提交 commit 之后,可能有点微调,可能就是想调整一下提交信息。

    那么使用

    git commit --amend
    

    就可以了。

    这个命令我理解为对 git rebase -i HEAD~ 的一种简单封装。

    想要干净的提交树。分以下两种情况。

    push之前重写历史

    这主要就是使用 git rebase -i 注意有的之前使用过 rebase 的,可能日志信息条数被压缩过。

    在push之前重写历史,是最容易的。在Progit 中文第二版242页中,有详细介绍,不赘述。

    push之后重写历史

    这是我的认知盲区,对分支使用不熟练,潜意识里不敢删除分支,其实在git里这种担心很没有必要,随时新建一个分支,删除一个分支。在 push 了一堆无效提交到远程仓库后,想要重建一个干净的提交树。

    那么在没有别人在使用 push 成果的情况下,可以直接

    git push reponame --delete branchname
    

    把本地通过 rebase 调整过的提交树 push 上去就可以了。

    git push reponame branchname
    

    附录

    在使用 rebase 重写历史的时候。

    注意处理冲突,处理完后要

    git rebase --continue
    

    继续确认提交日志信息。

    同时要确认清楚多个修改过的信息。

    同时,多用 git statusgit add 确认修改被git记录到。

    资料就是Progit中文第二版和交互式教程https://learngitbranching.js.org/?locale=zh_CN

  • 相关阅读:
    GCD
    vue中前进刷新、后退缓存方案收集
    vue cli3 项目配置
    CSS 多行省略失效 (-webkit-box-orient 失效) Second Autoprefixer control comment was ignored. Autoprefixer applies control comment to whole block, not to next rules.
    vue 设置当前页背景色
    vue history模式下的微信支付,及微信支付授权目录的填写,处理URL未注册
    h5 audio播放问题,audio获取缓存进度条
    h5页面ios键盘弹出收起后页面底部留白问题
    vue项目中引入vant 使用rem布局问题
    vue history模式下的微信分享
  • 原文地址:https://www.cnblogs.com/lingr7/p/13642644.html
Copyright © 2011-2022 走看看