当前位置:   article > 正文

【git】git教程(2)常用命令_git merge 把 bugfix 合并到 main

git merge 把 bugfix 合并到 main

git分支管理(当前分支main)

# 基于当前分支创建分支bugFix
git branch bugFix
# 切换到bugFix分支
git checkout bugFix

# 以上两步等同于
git checkout -b bugFix
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

git分支合并(当前分支main)

# 将bugFix上的提交合并到main分支上
git merge bugFix
  • 1
  • 2

git merge

git分支变基(当前分支main)

git checkout bugfix
git rebase main
  • 1
  • 2

在这里插入图片描述

# 将main分支指向bugfix
git checkout main
# 因为此时的bugfix基于main,所以只是简单的将main指向bugfix
git rebase bugfix
  • 1
  • 2
  • 3
  • 4

git 分离HEAD

上面我们一直在checkout [分支名], 其实我们还可以checkout [hash]。之所以可以这么做,是因为其实有一个叫做HEAD的指针指向分支名,当我们checkout [hash]时,HEAD将直接指向hash提交节点,我们再进行commit时,HEAD 将移动到最新的提交hash,但之前的分支指针是没有移动的。

git checkout C4
# 做一些内容,然后提交,便形成了下图,可以看到bugFix的指向是没有动的
git commit 
  • 1
  • 2
  • 3

在这里插入图片描述

# 通过^,不用指定hash,就可以指向bugFix分支所指hash的上一个hash
git checkout bugFix^

# 通过~3,不用指定hash,就可以指向bugFix分支所指hash向上3个所在的hash
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

git 移动分支名到指定节点

# 将main分支强制移动到HEAD的上一个节点
git branch -f main HEAD^
# 将main分支强制移动到HEAD的上3个节点
git branch -f main HEAD~3
# 将main分之强制移动到指定的hash
git branch -f main [hash]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

git reset 和 git revert

原始的分支如下所示:
在这里插入图片描述

# 将local回退到main,C3将被丢弃
git reset main

# 撤销C2的提交(适用于远程推送,reset不可用于远程推送)
git checkout pushed
git revert C2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果为:
在这里插入图片描述

自由修改git提交树

  • 使用cherry-pick
# 最开始我们的HEAD指向main指向C5,然后使用cherry-pick
git cherry-pick C2 C4
# 则有以下的提交树
  • 1
  • 2
  • 3

在这里插入图片描述

  • 使用git rebase -i 交互式
# 最近4个提交进行处理
git rebase -i HEAD~4
# 可以对近四个提交进行:调整顺序,删除不想要的提交,合并提交等操作,调整后将形成新的提交
  • 1
  • 2
  • 3

在这里插入图片描述
以上所有都是在本地进行操作,后续会有操作远程仓库的方法。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号