当前位置:   article > 正文

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

git闯关

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


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

"主要"的关卡

第一关 : 提交git commit

# 1、提交
git commit
# 2、提交
git commit
  • 1
  • 2
  • 3
  • 4

第二关: 新建分支git branch

  • 例子:新建分支

    git branch bugFix

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

    git checkout

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

第三关: 分支合并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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第四关:合并分支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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第五关: 在提交树上移动

  • 例子:查看 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
  • 2

第六关: 相对引用-1

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

    git log

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

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

    git checkout master~3

# 1
git checkout bugFix^
  • 1
  • 2

第七关: 相对引用-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^
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第八关: 撤销变更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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

    git cherry-pick c2 c4

# 1
git cherry-pick c3 c4 c7
  • 1
  • 2

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

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

第十一关: 本地栈式提交

    • 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第十二关:提交的技巧-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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第十三关:提交的技巧-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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

第十四关: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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

第十五关:Git Describe

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

# 4
git commit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

第十六关:多分支 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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

# 1
git branch bugWork HEAD^^2^
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

  • 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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

目前已完成的为:

  1. "主要"中的:

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

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

待续。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/831359
推荐阅读
相关标签
  

闽ICP备14008679号