
在当前节点是main的时候
git commit
git commit
git branch bugFix

git checkout bugFix
过关!

git branch bugFix;
git commit
git checkout main
git commit

git merge bugFix
这条指令会让指定分支合并到当前分支(新开一个节点)


根据之前的操作,可以很容易到达此阶段
接下来
git rebase main

HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。
如果想看 HEAD 指向,可以通过 cat .git/HEAD 查看, 如果 HEAD 指向的是一个引用,还可以用 git symbolic-ref HEAD 查看它的指向。
分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。HEAD 总是指向当前分支上最近一次提交记录。

git checkout C4

利用hash值很不方便(虽然只需要输入前几位)
使用相对位置,^可以向上移动一个提交记录,^^就是两个

git checkout C4^

~<num> 可以向上移动num个提交记录
例如:
git branch -f main HEAD~3
这种是强制main指向HEAD向上第三个节点

C6需要有(最底部的无法用^和~),所以先分离HEAD到C6
git checkout C6

接下来就是置换位置了
git branch -f main HEAD
git checkout C1
git branch -f bugFix HEAD~1


git reset main

git checkout pushed
git revert C2


git clone

git clone之后,我们的本地仓库多了一个名为 o/main 的分支, 这种类型的分支就叫远程分支。远程分支反映了远程仓库(在你上次和它通信时)的状态。在你检出时自动进入分离 HEAD 状态
<remote name(远程仓库名)>/<branch name(分支名)>
远程仓库名默认是:origin(git clone某个仓库时,自动将远程仓库的名称设置为 origin)

git commit
git checkout o/main
git commit

最后一次commit的时候,HEAD分离出来了。o/main 只有在远程仓库中相应的分支更新了以后才会更新。
fetch:获取
git fetch 完成了仅有的但是很重要的两步:
远程分支反映了远程仓库在你最后一次与它通信时的状态,git fetch 就是你与远程仓库通信的方式了。git fetch 通常通过互联网(使用 http:// 或 git:// 协议) 与远程仓库通信。
git fetch 并不会改变你本地仓库的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件。可以将 git fetch 的理解为单纯的下载操作(并没有修改你本地的文件)。

git fetch

全部自动下载
先抓取更新再合并到本地分支这个流程很常用,直接用git pull就可以。git pull 就是 git fetch 和 git merge 的缩写!

git pull

团队的协作会让远程仓库发生变化
这里给出假指令:
git fakeTeamwork <branch_name> <num>

git clone

git fakeTeamwork main 2

这时候你要和团队跟进进度
git fetch
git commit
git merge o/main

虽然也可以,但是指令数太多,可以将fetch和merge合并为pull
git fetch
git pull
git push 与 git pull相反,是一种成果的发布
变更上传到指定的远程仓库,并在远程仓库上合并新提交记录
git push 不带任何参数时的行为与 Git 的一个名为 push.default 的配置有关。它的默认值取决于你正使用的 Git 的版本

git commit
git commit
git push

在你提交之前别人就已经提交了,这时候要使工作基于最新的远程分支。有许多方法做到这一点
如果指令多,可以用 git pull(就是 fetch 和 merge 的简写),类似的 git pull --rebase 就是 fetch 和 rebase 的简写。
所以两种方案就变成了:

git clone

git fakeTeamwork
git commit

这就到了一个两难的境地。(偏离的提交历史)
git pull --rebase
git push

push之后报错
! [远程服务器拒绝] main -> main (TF402455: 不允许推送(push)这个分支; 你必须使用pull request来更新这个分支.)
原因是main是团队锁定了,应该按照流程,新建一个分支,推送(push)这个分支并申请pull request。
新建一个分支feature,推送到远程服务器,然后reset你的main分支和远程服务器保持一致,否则下次你pull并且他人的提交和你冲突的时候就会有问题。

git reset --hard o/main
–hard是直接指定
我们也可以用
git reset HEAD^

git checkout -b feature C2
-b 参数是创建并切换分支,刚好把C2这个引用(也就是我们之前修改但是不能提交的代码)重新使用起来。

git push origin feature
简单点就是
git push
