[GIT]Learn Git Branching 闯关总结

[GIT]Learn Git Branching 闯关答案总结

今天再一个WX公众号偶然发现在推送这个网站,自己前段时间学习过git的相关命令,掌握的不是很扎实,借这个网站复习一下。
网站链接:
网上已经有前辈给出完整答案,但是自己想记录一下,留下一点痕迹。加了图。
参考过的博文

主要

基础篇

  1. git commit
git commit
git commit
//或者用一行
git commit;git commit

在这里插入图片描述

  1. git branch
git branch bugFix
git checkout bugFix

在这里插入图片描述
3. git merge

//创建新分支 bugFix:git branch bugFix
//用 git checkout bugFix 命令切换到该分支:git checkout bugFix
git checkout -b bugFix
//提交一次
git commit
//用 git checkout master 切换回 master
git checkout master
//提交一次
git commit
//用 git merge 把 bugFix 合并到 master
git merge bugFix

在这里插入图片描述

  1. git rebase
//新建并切换到 bugFix 分支
git checkout -b bugFix
//提交一次
git commit
//切换回 master 分支再提交一次
git checkout master
git commit
//再次切换到 bugFix 分支,rebase 到 master 上
git checkout bugFix
git rebase master

在这里插入图片描述

高级篇

  1. 分离head
git checkout c4

在这里插入图片描述
2. 相对引用^

//一行命令
git checkout bugFix^
//两行命令实现,自己用的就是这种方法,提示说用一行
git checkout bugFix
git checkout HEAD^

在这里插入图片描述
3. 相对引用~

git branch -f master c6
git branch -f bugFix c0
git checkout c1

在这里插入图片描述
4. 撤销变更

//git reset 通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
//虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!为了撤销更改并分享给别人,我们需要使用 git revert。
git reset HEAD^
git checkout pushed
git revert HEAD

在这里插入图片描述

移动提交记录

  1. Git Cherry-pick
//git cherry-pick <提交号>...
//如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。
git cherry-pick c3 c4 c7

在这里插入图片描述
2. 交互式rebase
//当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 —— 没有比这更简单的方式了。

//但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了
//交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i

//如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。

//在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。
//当 rebase UI界面打开时, 你能做3件事:

//1.调整提交记录的顺序(通过鼠标拖放来完成)
//2.删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
//3.合并提交。 遗憾的是由于某种逻辑的原因,我们的课程不支持此功能,因此我不会详细介绍这个操作。简而言之,它允许你把多个提交记录合并成一个。

git rebase -i HEAD~4
//出现UI界面,点击confirm 成功

UI界面:
在这里插入图片描述

在这里插入图片描述

杂项

  1. 本地栈式提交 ,只取一个提交记录

    来看一个在开发中经常会遇到的情况:我正在解决某个特别棘手的 Bug,为了便于调试而在代码中添加了一些调试命令并向控制台打印了一些信息。

    这些调试和打印语句都在它们各自的提交记录里。最后我终于找到了造成这个 Bug 的根本原因,解决掉以后觉得沾沾自喜!

    最后就差把 bugFix 分支里的工作合并回 master 分支了。你可以选择通过 fast-forward 快速合并到 master 分支上,但这样的话 master 分支就会包含我这些调试语句了。你肯定不想这样,应该还有更好的方式……
    实际我们只要让 Git 复制解决问题的那一个提交记录就可以了。跟之前我们在“整理提交记录”中学到的一样,我们可以使用

    git rebase -i
    git cherry-pick
    来达到目的。
    
git rebase -i HEAD~3
git branch -f master bugFix

在这里插入图片描述
2. 提交的技巧 #1

git rebase -i HEAD~2
//修改c2,c3的顺序
git commit --amend
git rebase -i HEAD~2
git branch -f master
  1. 提交的技巧 #2
git checkout master
git cherry-pick newImage
git commit --amend
git cherry-pick caption
  1. git tag
git tag v0 c1
git tag v1 v2
git checkout c2
  1. git describe
git describe <ref>
  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值