赞
踩
# 基于当前分支创建分支bugFix
git branch bugFix
# 切换到bugFix分支
git checkout bugFix
# 以上两步等同于
git checkout -b bugFix
git分支合并(当前分支main)
# 将bugFix上的提交合并到main分支上
git merge bugFix
git checkout bugfix
git rebase main
# 将main分支指向bugfix
git checkout main
# 因为此时的bugfix基于main,所以只是简单的将main指向bugfix
git rebase bugfix
上面我们一直在checkout [分支名], 其实我们还可以checkout [hash]。之所以可以这么做,是因为其实有一个叫做HEAD的指针指向分支名,当我们checkout [hash]时,HEAD将直接指向hash提交节点,我们再进行commit时,HEAD 将移动到最新的提交hash,但之前的分支指针是没有移动的。
git checkout C4
# 做一些内容,然后提交,便形成了下图,可以看到bugFix的指向是没有动的
git commit
# 通过^,不用指定hash,就可以指向bugFix分支所指hash的上一个hash
git checkout bugFix^
# 通过~3,不用指定hash,就可以指向bugFix分支所指hash向上3个所在的hash
# 将main分支强制移动到HEAD的上一个节点
git branch -f main HEAD^
# 将main分支强制移动到HEAD的上3个节点
git branch -f main HEAD~3
# 将main分之强制移动到指定的hash
git branch -f main [hash]
原始的分支如下所示:
# 将local回退到main,C3将被丢弃
git reset main
# 撤销C2的提交(适用于远程推送,reset不可用于远程推送)
git checkout pushed
git revert C2
结果为:
# 最开始我们的HEAD指向main指向C5,然后使用cherry-pick
git cherry-pick C2 C4
# 则有以下的提交树
# 最近4个提交进行处理
git rebase -i HEAD~4
# 可以对近四个提交进行:调整顺序,删除不想要的提交,合并提交等操作,调整后将形成新的提交
以上所有都是在本地进行操作,后续会有操作远程仓库的方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。