zoukankan      html  css  js  c++  java
  • Git笔记

    Git

    rebase 变基

    在使用rebase命令的时候, 要知道.
    rebase命令是为了最后的提交历史是单独一条清晰的线路

    #  把bugFix分支合并到master内
    git rebase master bugFix
    

    如果只传入一个参数的话,默认把当前分支合并到指定分支内.
    与上面的效果相同的情况下, 就是

    git checkout bugFix
    git rebase master
    

    如果是HEAD所在是将要合并进去的小分支, 可能会比较省事.
    作为管理方, 应该养成传双参的习惯.

    高级使用方法

    git rebase side3 master
    

    side3master在一条分支上的时候,使用rebase命令直接把后面branch拉到前面branch. 这个时候 两个分支的位置都在 branch1 的位置上. 且HEAD在后一个分支上.
    相当于

    git branch -f master side3
    git checkout master
    

    这个时候采用这种方式能节省一次切换开销, 更加方便省事.
    但是要注意, 前提是两个分支都在一条提交线上, 只有先后之分.

    checkout

    ckeckout 操作的是 HEAD游标

    branch

    branch 操作的是 <branch-name>分支名游标

    reset

    撤消提交, 清除之前的提交历史. 把之前的已提交退到暂存区.

    git reset master^
    
    1 ==> 2 
    撤消2, 则
    1 
    

    说明:
    此时2来到暂存区, 记录上没有2.
    此时的1和之前的1, 内容一样,且HEAD相同

    revert

    不撤消之前的提交记录, 生成新的提交记录, 在新的提交记录里删除之前的提交.

    git revert HEAD^
    
    1 ==> 2
    撤消2, 则
    1 ==> 2 == 1'
    

    说明:
    相当于又提交了一次, 这次提交里面是把上次的提交删除掉
    此时新的1'和之前的1, 内容一样,HEAD不同

    cherry-pick

    优选命令: 该命令是把 别的分支对应的提交记录添加到当前的分支之上

    使用场景:

    • 在多次提交之后, 只想要保留 其中个别提交记录的时候.

    rebase -i

    调节命令: 当需要调节 当前分支的提交记录的时候, 使用该命令. 会单独出现一个rebaseUI界面.(vim或其他文本)
    在这个界面里能做三个事

    • 调节顺序
    • 删除提交
    • 合并提交

    commit --amend

    当我们需要进行修改 上次的提交记录的时候, 就可以使用 commit --amend
    该命令的限制条件就是, 只能修改 上次提交的记录.如果不是,那么则无法修改.

    但是好在, 我们在上面的命令行里学到, rebase -i 是可以调整提交的顺序的.
    这样, 就可以通过rebase -i来更改对应的提交顺序, 之后调用 commit --amend, 来修改对应的提交内容. 之后再次调用 rebase -i 来还原对应的提交内容.

    fetch

    就是下载. 把远程仓库中有的, 而本地仓库中没有的东西下载下来.
    并且更新origin/master
    但不更新master
    所以下载的东西只在本地仓库有体现, 而工作区中是没有变化的.

    fetch和pull的区别

    fetch 只有一个动作: 下载 # HEAD保持原样不动
    pull 有三个动作: 下载, 合并(merge). # HEAD 发生改变 (同merge)

    历史偏移

    在使用git的时候, 最多的问题出现的节点在于. 你之前所拉的远程分支, 现在已经更新过许多次.
    你的origin/master已经是很古老的版本了.
    这种情况下, git是不会允许你直接push代码到远程仓库的.
    想要push
    需要先让本地的origin/master和远程的内容保持一致.
    所以需要的是, 先进行同步, 才推送.
    方法有两种:

    # rebase 方法(保持一条提交记录)
    git fetch & git rebase origin/master master & git push
    
    # 等同于
    git pull --rebase & git push
    
    
    # merge 方法(有两条合并记录)
    git fetch & git merge origin/master master & git push
    
    # 等同于
    git pull & git push
    

    远程跟踪

    remote tracking
    远程仓库和本地仓库的关联关系, 默认同名
    可以修改, 以实现某些分支策略.

    git checkout -b 本地分支 远程分支
    git branch -u 远程分支 本地分支
    

    例:

    git checkout -b foo origin/master
    # 或
    git branch -u origin/master foo
    

    此时本地分支foo关联远程master, 无论pull还是push, 都与远程的master互动.

    push

    git push <remote> <place>
    

    通常push的两个参数是省略的, 如何HEAD没有在需要推送的分支之上 , 则在使用的时候需要填写对应分支.

    :符号使用

    #  删除远程分支foo和本地的关联origin/foo
    git push origin foo:
    
    # 创建本地分支foo
    git fetch origin foo:
    
  • 相关阅读:
    [Linux]常用命令之【tar/zip/unzip/gzip/gunzip】
    [Git]解决: error: unable to create file src/main/webapp/xxxxxx/xxxx: Filename too long
    [Git]解决:error: The following untracked working tree files would be removed by checkout:
    [Linux]命令行分类
    [数据库/MYSQL]#解决缺陷#设置Unique索引时:"[Err] 1071
    [Java EE]辨析: POJO(PO / DTO / VO) | BO/DO | DAO
    [Java]遍历枚举类型为List
    【Vue】在Vue项目中调试Vue源码——修改Vue项目引入的vue文件
    【Vue】Vue源码解读之Component组件注册
    【Vue】驼峰命名法和短横线命名法的转换以及Vue源码中对驼峰式和大写式查找的支持
  • 原文地址:https://www.cnblogs.com/jrri/p/14099307.html
Copyright © 2011-2022 走看看