Git学习笔记
主要命令
提交
git commit创建新分支
git branch xxgit checkout xxgit checkout -b xx合并分支
git merge xx线性合并分支
git rebase xx
相对引用
分离Head
git checkout C4相对引用
git checkout main^main~<num>强制修改分支位置
git branch -f main HEAD~3将 main 分支强制指向 HEAD 的第 3 级父提交撤销变更
git reset xxgit revert xx
移动提交记录
将一些提交(除HEAD上游))复制到当前所在的位置(HEAD)下面的话
git cherry-pick <提交号> ...交互式的rebase,将提交重新排序以及删除
git rebase -i HEAD~4
杂项
本地栈式提交
git rebase -igit cherry-pick C3 C4 C2 ...对提交做一些小修改
git commit --amend永远指向某个提交记录的标签(锚点)
git tag v1 <哈希值>省略则指向HEAD所指向的位置描述离当前位置最近的锚点
git describe <ref>查找产生Bug的提交记录的指令
git bisect
高级话题
多分支 rebase
git rebase xx yy选择父提交记录
git check HEAD^<num>支持链式操作git branch bugWork HEAD~^2~2
Git 远程仓库
在本地克隆远程仓库
git clone远程分支 origin/main特性自动进入分离HEAD状态
git checkout o/main从远程仓库获取数据,将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态,但不会更新main分支
git fetchhttp://git://将变化更新到本地的工作中 (先抓取更新再合并到本地分支)
git pull或者git fetch; git merge o/main将本地变更上传到指定的远程仓库,并在远程仓库上合并新提交记录
git push在远程仓库变更了以后更新我们的工作
git fetch; git rebase o/main; git push或者git fetch; git merge o/main; git push或者git pull --rebase; git push远程服务器拒绝,策略配置要求 pull requests 来提交更新,需要新建一个分支, 推送(push)这个分支并申请pull request,推送到远程服务器. 然后reset你的main分支和远程服务器保持一致,否则下次你pull并且他人的提交和你冲突的时候就会有问题。
Git 远程仓库高级操作
- 合并特性分支
TBC...
参考
- https://learngitbranching.js.org/