说明
- "~" 跟 "^" 区别
- ^ caret ~ tilda
- git checkout HEAD^^^和git checkout HEAD~3等价,都代表当前版本的前3个版本
- 区别在于3和~3代表不同概念,3代表回退一个版本,以第三条graph线为准。
- 操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个父提交。
- 当head没有指到任何本地分支上就会脱离。
- git bisect start [终点] [起点]
- 二分法排错,"终点"是最近的提交,"起点"是更久以前的提交。它们之间的这段历史,就是差错的范围。
- git bisect start HEAD 5d67e3
- 使用git bisect good 和 git bisect bad来标识,直到找到xxx is the first bad commit
- git bisect reset # 退出查错,回到最近一次的代码提交,就可以进行改错了
本地操作
git rebase cat # 把目前分支叠在cat分支后面
git rebase cat dog # 把dog分支叠在cat分支后面
git rebase -i 互动式rebase
git checkout -b 分支名 # 切换分支,如果分支不存在则建立
git checkout -b 分支名 commitID # 切换分支,如果分支不存在则以commitID建立
git checkout -b temp origin/master # 如果temp分支不存在,则新建分支temp,并关联到origin/master
git branch 分支名 commitID # 建立分支
git branch -f 分支名 commitID # 对于存在的分支强制还原到某次提交
git branch -u o/main notMain # 关联本地notMain分支到远程分支o/main
git tag tag名 commitID # 打tag
git cherry-pick c1 c2 c3
git merge # 产生一次合并记录
git revert # 产生一次撤销记录
远程仓库操作
git pull 到头来就是 fetch 后跟 merge 的缩写。你可以理解为用同样的参数执行 git fetch,然后再 merge 你所抓取到的提交记录。
git pull origin <place>
git pull origin <source>:<destination>
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
git push origin <place> # 远程分支不存在会自动创建,下同
git push origin <source>:<destination> # 这里的source指的是本地分支,destination是远程分支
git push origin :foo # source留空,代表删除远程仓库分支foo
git fetch # 下载远程仓库文件到本地,更新本地的所有远程分支
git fetch origin <place> # 本地分支不存在会自动创建,下同
git fetch origin <source>:<destination> # 这里的source指的是远程分支,destination是本地分支
git fetch origin :foo # 如果source为空,则在本地以当前HEAD创建一个foo分支
标签:origin,git,rebase,本地,小教室,fetch,分支
From: https://www.cnblogs.com/reamd/p/16856382.html