目录
今天朋友推荐了一个学习git的可视化网站,我跟着重新学习了一遍git,相关目录做成了思维导到,接下来我们一起看一下吧
远程
远程分支
远程分支o/main
反映了远程仓库的状态(上次通信),远程分支的命名规范<remote name>/<branch name>
,
git fetch
- 从远程仓库下载本地确实的提交
- 更新本地的
o/main
git fetch
并不会改变你本地仓库的状态。它不会更新你的main
分支,也不会修改你磁盘上的文件
git pull
git pull == git fetch + git merge git pull --rebase == git fetch + git rebase
git push
git push不带任何参数的行为取决于git的一个名为push.default
配置有关
git push <orgin> <place>
连接远程仓库,把本地的place代表的分支提交推送上去,place
可以是source:destination
,代表本地的分支source推送到远程的destination分支
source如果为空则会删除远程分支
锁定的main
当分支被设置为只能通过pull request来更改,我们就不能直接push到main上,需要新建分支push后,再拉取push request(MR)。
锁定分支:在代码仓库-setting-branches-Lock branch
远程追踪
git checkout -b <branchname> <o/branchname>
新建本地分支并绑定远程的分支,一般不用第二个参数git branch -u <orginname> <localbranchname>
将本地的分支和远程分支对应
主要
交互式rebase
rebase命令后加--interactive
,缩写-i
,可以提供一个交互式UI界面,界面里可以进行如下操作:
- 调整提交记录的顺序(通过鼠标拖放来完成)
- 删除你不想要的提交(通过切换
pick
的状态来完成,关闭就意味着你不想要这个提交记录) - 合并提交。 遗憾的是由于某种逻辑的原因,我们的课程不支持此功能,因此我不会详细介绍这个操作。简而言之,它允许你把多个提交记录合并成一个。
cherry-pick
将某些提交复制到HEAD下面,比如git cherry-pick C1 C2
git commit
git commit --amend
修改最近的提交
git tag与git describe
git tag
一般用来打版本标识,在git里可以对hash进行标记,不可修改
git describe <branchname>
用来显示当前最近的标签和提交次数
移动HEAD
git checkout main~^2~2
,~代表向上,^后面加数字代表移动到其他父节点