KS1-S06-Git-LearnGitBranching_沙盒操作闯关记录

2021-05-25_LearnGitBranching_沙盒操作闯关记录


闯关地址:https://oschina.gitee.io/learn-git-branching/?NODEMO

"主要"的关卡

第一关 : 提交git commit

# 1、提交
git commit
# 2、提交
git commit

第二关: 新建分支git branch

  • 例子:新建分支

    git branch bugFix

  • 例子:切换到新的分支上——(git checkout -b )

    git checkout

# 1、创建一个分支 bugFix 并且切换到此分支上
git checkout -b bugFix;

第三关: 分支合并git merge

  • 例子:把 bugFix 分支合并到 master 里

    git merge bugFix

  • 例子:把 master 分支合并到 bugFix 里

    git checkout bugFix; git merge master

# 1
git checkout -b bugFix; git commit;
# 2
git checkout master; git commit;
# 3
git merge bugFix;

第四关:合并分支git rebase

  • 例子:把 bugFix 分支里的工作直接移到master分支上

    git rebase master

  • 例子:更新 master

    git rebase bugFix

# 1
git checkout -b bugFix; git commit;
# 2
git checkout master; git commit;
# 3
git checkout bugFix;
# 4
git rebase master;

第五关: 在提交树上移动

  • 例子:查看 Head 指向

    git .git/HEAD

  • 例子:若 HEAD 指向的是一个引用

    git symbolic-ref HEAD

  • 例子:

    git checkout C1;git checkout master; git commit;git checkout C2

# 1、取出 HEAD 的内容
git checkout c4

第六关: 相对引用-1

  • 例子:查看提交记录的哈希值

    git log

  • 例子:使用 ^向上移动 一个提交记录

  • 例子:使用 ~<num>向上移动多个提交记录,如

    git checkout master~3

# 1
git checkout bugFix^

第七关: 相对引用-2

  • 例子:将 master 分支强制指向 HEAD 的第 3 级父

    git branch -f master HEAD~3

# 1
git branch -f master  c6
# 2
git checkout HEAD~1
# 3
git  branch -f bugFix HEAD^

第八关: 撤销变更git reset and git revert

  • 例子:Git 把 master 分支移回到 HEAD的父

    git reset HEAD~1

  • 例子:新提交记录 C2' 引入了更改 —— 这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2' 的状态与 C1 是相同的。

    git revert HEAD

# 1
git reset HEAD^
# 2
git checkout pushed
# 3
git revert HEAD

第九关: 整理提交记录git cherry-pick <提交号> `

  • 例子:提交记录 C2C4,所以 Git 就将被它们抓过来放到当前分支下了

    git cherry-pick c2 c4

# 1
git cherry-pick c3 c4 c7

第十关: 交互式的 rebasegit rebase -i

  • 例子:git rebase -interactive HEAD~4
    • 调整提交记录的顺序(通过鼠标拖放来完成)
    • 删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
    • 合并提交。
# 1
git rebase -i HEAD~4

第十一关: 本地栈式提交

    • git rebase -i
    • git cherry-pick
# 1
git rebase -i master
# 2
git rebase bugFix mater

or
# 1
git checkout master
# 2
git cherry-pick c4

第十二关:提交的技巧-1

  • 需要在之前的版本中进行小修改。并且再次回到主分支中
    • 先用 git rebase -i 将提交重新排序,然后把我们想要修改的提交记录挪到最前
    • 然后用 commit --amend 来进行一些小修改
    • 接着再用 git rebase -i 来将他们调回原来的顺序
    • 最后我们把 master 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!
# 1
git rebase -i HEAD~2
# 2
git commit --amend
# 3
git rebase -i HEAD~2
# 4
git branch -f master caption 
# 4 or
git rebase caption master

第十三关:提交的技巧-2

  • 需要在之前的版本中进行小修改。并且再次回到主分支中
    • 先用 git rebase -i 将提交重新排序,然后把我们想要修改的提交记录挪到最前
    • 然后用 commit --amend 来进行一些小修改
    • 接着再用 git rebase -i 来将他们调回原来的顺序
    • 最后我们把 master 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!
# 1
git checkout master
# 2
git cherry-pick newImage
# 3
git checkout c1
# 4
git cherry-pick master 
# 5
git branch -f master HEAD
# 6
git checkout master
# 7
git cherry-pick caption

or
# 1
git checkout master
# 2
git cherry-pick newImage
# 3
git commit --amend
# 4
git cherry-pick caption

第十四关:Git Tags

  • 有没有什么可以永远指向某个提交记录的标识呢,比如软件发布新的大版本,或者是修正一些重要的 Bug 或是增加了某些新特性,有没有比分支更好的可以永远指向这些提交的方法呢?
  • git tag v1 c1
    • 我们将这个标签命名为 v1,并且明确地让它指向提交记录 C1,如果你不指定提交记录,Git 会用 HEAD 所指向的位置。
# 1
git tag v0 c1
# 2
git tag v1 c2
# 3 
git checkout v1 

or

# 3 
git checkout c2 

第十五关:Git Describe

  • git describe <ref>
    • 用来描述离你最近的锚点(也就是标签)
# 1
git describe master
# 2
git describe side
# 3 
git describe bugFix

# 4
git commit

第十六关:多分支 rebase

  • git bisect <ref>
    • 一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令
# 1
git rebase master bugFix
# 2
git rebase HEAD side
# 3
git rebase side another
# 4
git rebase another master

第十六关:选择父提交节点

  • git checkout master^
    • 在我们的图示中,第一个父提交记录是指合并提交记录正上方的那个提交记录。
  • git checkout HEAD~^2~2
# 1
git branch bugWork master^^2^
    
or

# 1
git branch bugWork HEAD^^2^

第十七关:纠缠不清的分支

  • git checkout master^
    • 在我们的图示中,第一个父提交记录是指合并提交记录正上方的那个提交记录。
  • git checkout HEAD~^2~2
# 1
git checkout one
# 2
git cherry-pick c4 c3 c2
# 3
git checkout two
# 4
git cherry-pick c5 c4 c3 c2
# 5
git branch -f three c2

目前已完成的为:

  1. "主要"中的:

    • 基础篇
    • 高级篇
    • 移动提交记录
    • 杂项
    • 高级话题
      在这里插入图片描述
  2. “远程”中的:

    • Push & Pull —— Git 远程仓库
    • 关于 origin 和它的周边—— Git 远程仓库高级操作

待续。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值