git总结
一、本地仓库
-
本地仓库的提交:git commit.
-
创建分支:git branch newImage(分支名)。
-
切换分支:git checkout newImage(分支名)。
-
合并分支:
git merge bugFix(将现在定位的分支合并到bugFix分支上)。
git rebase bugFix(将现在定位的分支合并到bugfix分支上)。
区别:
- git log 中的区别:merge命令不会保留merge分支的commit,rebase会保存。
- 操作符:
- ^:切换到父节点上。eg:切换到main的父节点上:git checkout main^
- ~[num]:后退。eg:一次后退4步:git checkout HEAD~4
- 强制修改分支位置:git branch -f (分支名) (分支名)。eg:强制修改main分支后退3步: git branch -f main HEAD~3
7.撤销:
- git reset (分支名)。eg:撤销到父节点: git reset HEAD^.【注意:仅对本地仓库有效】
- git revert (分支名)。eg:撤销更改并分享给别人: git revert HEAD .【注意:撤销记录后多了一个新提交记录,新提交记录引入了更改,针对远程仓库】
- 抓取分支上的任意提交到当前分支:git cherry-pick 节点1,节点2…… eg: 抓取分支上c2,c4节点的提交到当前分支:git cherry-pick c2 c4
- 交互式rebase:git rebase -i HEAD~4 (将提交重新排序)。
- 标签:git tag。(标识某个特定的位置)eg:将c1节点提交命名为v1: git tag v1 c1
- 标签描述: git describe .eg: 获取main的标签描述:git describe main。
二、远程仓库
-
克隆远程仓库:git clone。
-
远程分支:o/main分支:o表示远程仓库名,main为分支。
-
从远程仓库获取数据:git fetch
-
从远程仓库上下载数据:git pull。(实际上就是执行了:1.git fetch。2. git merge o/main合并分支 这两个步骤)
-
将本地仓库数据上传到远程仓库。
-
出现历史偏离现象。(基于旧代码不与新代码匹配):git push 已经不起作用了。
解决方案:
- git fetch; git rebase o/main; git push ;可简写成:git pull --rebase; git push;
- git fetch;git merge o/main; git push;可简写成:git pull ;git push;
-
远程服务器拒绝:直接推送(push)提交到master,因为策略配置要求pull request来提交更新。
解决办法:新建分支,推送到服务器,然后reset你的master分支和远程服务器保持一致,否则下次你pull并且他人的提交和你冲突的时候就会有问题。
-
快速更新main分支并推送到远程:
- 将我们的工作rebase到远程分支点最新提交记录。 git pull --rebase;
- 向远程仓库推送我们的工作。git push;
-
远程追踪分支:
- git branch -u o/main foo;
- git checkout -b foo o/main; git pull; (git checkout -b foo o/main;git commit ; git push;)
-
push 的参数。
- eg:将本地分支点main分支上传到远程分支foo: git push origin main:foo
- eg: 将本地分支的main分支上传到远程分支:git push origin main
-
将远程分支的foo分支下载到本地: git fetch origin foo
将远程分支的main分支下载到本地foo分支,并与本地foo分支合并:
git pull origin main:foo ==git fetch origin main:foo ; git merge main;