美文网首页
Git 合并的两种方式

Git 合并的两种方式

作者: yangjingqzp | 来源:发表于2019-04-20 16:57 被阅读0次

    Merge 和 Rebase 比较

    merge 合并。
    如 要合并分支 branch_a 到 master :

    1. 切换到要合并到的分支: git checkout master
    2. 合并指定分支到本分支: git merge branch_a
      原理:
      以 branch_a 和 master 两分支的共同祖先 commit1 为基础,将 branch_a 分支的提交合并到 master 分支,可能会产生一个新的提交(当两个分支都在共同祖先 commit1 中发生了变化时),合并后 branch_a 分支上的历史提交信息在 master 上得到保留。

    Rebase 变基
    如 要将分支 branch_a 变基到分支 master :

    1. 切换到需要变基的分支: git checkout branch_a
    2. 对当前分支进行变基: git rebase master
    3. 切换到需要变基到的分支: git checkout master
    4. 合并变基后的分支到本分支: git merge branch_a
      原理:
      以 branch_a 和 master 两分支的共同祖先 commit1 为基础,将 branch_a 分支的所有修改,在 master 分支按顺序重新做一次提交。
      这里分为了 2 步:
    5. 对要合并的分支进行变基。可以简单理解为变更了 branch_a 分支的基础(从 commit1 变为了 master ),此时是将 branch_a 分支在 commit1 后的提交重新在 master 上进行一次提交
    6. 然后将变基后的分支合并到 master

    其他命令回顾

    备忘

    仓库操作

    1. git init
      初始化 git 仓库。
    # 初始化仓库(默认为当前目录)
    git init
    
    1. git config
      用来配置本地的 git
    # 配置 git 使用的用户名(可以指定为全局)
    git config user.name <name>
    git config --global user.name <name>
    git config --global user.email <email>
    
    1. git clone
      克隆仓库到本地。
    # 克隆指定git仓库到指定目录(默认为仓库名称),-o 指定克隆到本地的主机名(默认为 origin )
    git clone -o <版本库地址> <本地目录名>
    
    1. git remote
      列出所有远程主机
    # 列出远程主机,包含主机地址
    git remote -v
    # 查看远程主机的信息
    git remote show <主机名>
    # 添加主机
    git remote add <主机名> <版本库地址>
    # 删除主机
    git remote rm <主机名>
    

    常用本地基本操作

    1. git add
      添加指定的内容到 git 的索引库中,当使用 git commit 时,git 将依据索引库中的内容来进行文件的提交。
    # 添加所有的修改到索引库
    git add *
    # 添加指定文件夹或文件到索引库
    git add <path>
    
    1. git commit
      将本地的索引库中的内容添加到本地仓库中
    # 提交并指定提交信息
    git commit -m "commit message"
    
    1. git stash
      保存当前工作区内容存储到暂存区。
    # 查看暂存区当前的所有暂存内容
    git stash list
    # 从暂存区恢复最近的内容(或者指定的内容)
    git stash pop [stash_id]
    # 查看当前暂存区的修改内容
    git stash show
    

    使用场景:当前开发还未完成,不能提交,但是又需要去做其他事情时。

    1. git status
      查看当前工作区和暂存区的状态信息

    2. git log
      查看git提交的历史记录信息

    # 用图像,并在一行显示一条记录
    git log --graph --pretty=oneline
    # 显示本地所有的 git 操作记录
    git reflog
    

    分支操作

    1. git branch
      列出分支
    # 列出本地所有分支
    git branch -a
    # 列出远程所有分支
    git branch -r
    # 在当前所在提交上新建分支,并切换到新建的分支
    git branch -b <new_branch_name>
    # 删除分支
    git branch -d <branch_name>
    
    1. git checkout
      切换分支;查看旧版本;舍弃工作区的修改
    # 切换到 dev 分支
    git checkout dev
    # 以远程文件覆盖本地指定文件
    git checkout <file>
    
    1. git reset
      重置当前分支到指定的提交
    # 重置当前分支到上一次提交,这里会丢失上次提交的内容
    git reset --hard HEAD
    
    参数 作用
    --soft 暂存区和工作区会留下被重置提交的修改
    --mixed 工作区被重置到指定提交,暂存区会留下被重置的提交内容
    --hard 暂存区和工作区都重置到指定提交,被重置的提交全部丢失
    1. git revert
      通过提交一个新的提交来重置到指定的提交
    # 创建一个提交,来重置到前2个提交
    git reset HEAD~1
    
    1. git cherry-pick
      遴选:复制指定的提交,并在当前分支做一次完全一样的提交
    # 将提交 commit-n 复制出在,并在当前分支做一次一样的提交
    git cherry-pick commit-n
    

    使用场景:在某一个分支上做的一次修改需要单独先提交的 master 分支

    远程相关操作

    1. git fetch
      获取远程版本库的分支信息,更新到指定当前主机名
    # 获取主机名对应的远程版本库的指定分支信息,如果无指定分支名时获取所有的分支信息
    git fetch <主机名> <分支名>
    
    1. git pull
      获取远程主机某个分支的更新,并合并到本地指定分支(如果远程分支与当前分支合并,可不指定本地分支名)
    git pull <远程主机名> <远程分支名>:<本地分支名>
    

    git pull master 相当于 git fetch origin master 和 git merge origin master.

    1. git push
      将本地分支的更新,推送到远程主机
    git push <远程主机名> <本地分支名>:<远程分支名>
    

    相关文章

      网友评论

          本文标题:Git 合并的两种方式

          本文链接:https://www.haomeiwen.com/subject/lqskgqtx.html