学习平台
https://learngitbranching.js.org/
基础
git commit
提交一次记录git branch < name>
新建分支git checkout < name>
当前目标切换到< name>分支上
- 创建一个新的分支同时切换到新创建的分支的话,可以通过
git checkout -b < name>
- git merge < name>
把name分支合并到当前base的分支 - git rebase < name>
将当前分支切换合并到< name>上,创造更线性的提交历史
高级
HEAD
HEAD总是指向当前分支最近一次提交记录
分离HEAD:让HEAD指向具体的提交记录,而不是分支名相对引用
使用一个^
,表示向前一个提交记录
想向前多个就使用~< num>
撤销变更
git reset < num>本地用,回退到某一分支
git revert 远程分支中合作用
git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;
远程
- git fetch
将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。并不会改变你本地仓库的状态。它不会更新你的 main 分支
- 从远程仓库下载本地仓库中缺失的提交记录
- 更新远程分支指针(如 o/main)
当在本地给o/main添加新的提交时, o/main 也不会更新。这是因为 o/main 只有在远程仓库中相应的分支更新了以后才会更新。 o/main的更新只是反映了远程的状态。
git pull
先抓取更新再合并到本地分支
git pull 就是 git fetch 和 git merge 的缩写
git pull --rebase 就是 fetch 和 rebase 的简写git push
将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录! [远程服务器拒绝] main -> main (TF402455: 不允许推送(push)这个分支; 你必须使用pull request来更新这个分支.)
- 远程服务器拒绝直接推送(push)提交到main, 因为策略配置要求 pull requests 来提交更新.
- 解决:新建一个分支feature, 推送到远程服务器. 然后reset你的main分支和远程服务器保持一致。
说实话
个人感觉这个平台适合当前面临需求的时候学习,我练了几个关卡感觉还是一头雾水😟(我太菜了),结合下面这个视频看更好
https://www.bilibili.com/video/BV1pX4y1S7Dq/?spm_id_from=333.337.search-card.all.click&vd_source=5cef5968d539682b683e7d01b00ad01b
https://www.bilibili.com/video/BV1db4y1d79C/?vd_source=5cef5968d539682b683e7d01b00ad01b