git 命令训练营 learngitbranching


目前公司用的代码管理工具是 SVN,用久了倒是有点记不清 git 的用法了,趁着这几日空了回顾回顾,果真发现了个好玩的网站 learngitbranching,还补上了以前钻研不会的知识盲区,记录下答案~

下面代码块为 learngitbranching 提供的答案(使用 show solution 命令就可以看到),视频是我自己写的答案,有些对不上,不过倒是殊途同归

基础篇

Git Commit

$ git commit
$ git commit

Git Branch

$ git branch bugFix
$ git checkout bugFix

Git Merge

$ git checkout -b bugFix
$ git commit
$ git checkout main
$ git commit
$ git merge bugFix

Git Rebase

$ git checkout -b bugFix
$ git commit
$ git checkout main
$ git commit
$ git checkout bugFix
$ git rebase main

高级篇

分离的 HEAD

$ git checkout C4

相对引用(^)

$ git checkout bugFix^

相对引用2(~)

$ git branch -f main C6
$ git checkout HEAD~1
$ git branch -f bugFix HEAD~1

撤销变更

$ git reset HEAD~1
$ git checkout pushed
$ git revert HEAD

移动提交记录

Git Cherry-pick

$ git cherry-pick C3 C4 C7

交互式 rebase

$ git rebase -i overHere
# 选择 C3 C4 C5,然后调换 C4 C5 的位置

杂项

只取一个提交记录

$ git rebase -i main 
# 只选择 C4
$ git rebase bugFix main

提交的技巧 #1

$ git rebase -i HEAD~2
# 调换 C2 C3 的位置
$ git commit --amend
$ git rebase -i HEAD~2
# 调换 C3' C2'' 的位置
$ git rebase caption main

提交的技巧 #2

$ git checkout main
$ git cherry-pick C2
$ git commit --amend
$ git cherry-pick C3

Git Tag

$ git tag v1 side~1
$ git tag v0 main~2
$ git checkout v1

Git Describe

$ git commit

高级话题

多次 Rebase

$ git rebase main bugFix
$ git rebase bugFix side
$ git rebase side another
$ git rebase another main

两个 parent 节点

$ git branch bugWork main^^2^

纠缠不清的分支

$ git checkout one
$ git cherry-pick C4 C3 C2
$ git checkout two
$ git cherry-pick C5 C4 C3 C2
$ git branch -f three C2

Push & Pull —— Git 远程仓库!

Git Clone

$ git clone

远程分支

$ git commit
$ git checkout o/main
$ git commit

Git Fetch

$ git fetch

Git Pull

$ git pull

模拟团队合作

$ git clone
$ git fakeTeamwork 2
$ git commit
$ git pull

Git Push

$ git commit
$ git commit
$ git push

偏离的历史提交

$ git clone
$ git fakeTeamwork
$ git commit
$ git pull --rebase
$ git push

锁定的 Main

$ git reset --hard o/main
$ git checkout -b feature C2
$ git push origin feature

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

推送主分支

$ git fetch
$ git rebase o/main side1
$ git rebase side1 side2
$ git rebase side2 side3
$ git rebase side3 main
$ git push

合并远程仓库

$ git checkout main
$ git pull
$ git merge side1
$ git merge side2
$ git merge side3
$ git push

远程追踪

$ git checkout -b side o/main
$ git commit
$ git pull --rebase
$ git push

Git push 的参数

$ git push origin main
$ git push origin foo

Git push 的参数2

$ git push origin main^:foo
$ git push origin foo:main

Git fetch 的参数

$ git fetch origin main~1:foo
$ git fetch origin foo:main
$ git checkout foo
$ git merge main

没有 source 的 source

$ git push origin :foo
$ git fetch origin :bar

Git pull 的参数

$ git pull origin bar:foo
$ git pull origin main:side

一点碎碎念——弄视频真是要了老命
视频是用远程控制软件录屏做的,直接上传到B站报 P1-该视频数据有误,请检查并修复视频数据后重新上传,网上查到导入视频编辑软件再导出就可以了,试了下果然行~
把三十几个视频重新生成好,因为是尊贵的非正式会员所以一天只能上传五个视频,so ~~


文章作者: April-cl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 April-cl !
  目录