这周轮到我做技术分享了,思来想去,还是决定选择 git 作为本周技术分享的主题。原因有二,一是最近在使用 git 时出现了一些难题,具体下文会有提到。二是,尽管每天都在使用 git,但对于一些基础概念还是有模糊的地方,也想通过这次的分享进一步理解 git。
git 原理#
workspace: 工作区(当前的开发位置)
git pull
: 从远程仓库拉取最新的代码到工作区 =>git fetch
+git merge
git diff
: 查看修改但未暂存的文件
index: 暂存区
git add
: 工作区修改的内容提交到暂存区
repository: 本地仓库
git commit
: 将暂存区内容提交到本地仓库git fetch
或者git clone
: 从远程仓库拉取 / 克隆代码到本地仓库
remote repository: 远程仓库
git push
: 将本地仓库内容提交到远程仓库
常见问题#
- git push origin master 具体是在做什么事?
把本地master
分支上的内容,推一份到origin
这个地方,并且在origin
这个地方建立一个同名的master
分支
完整指令:git push origin master:master
=> git push <远程主机名> <本地分支名>:<远程分支名>
- git merge 和 git rebase 的区别
举例:把 test 分支合并到 master 分支
git merge
的结果
git rebase
的结果
最近遇到的问题#
- 本地项目运行出错,想要回退到之前的版本 => 本地仓库回退到之前的版本
git reset --hard/soft [需要回退的提交点]
- 撤销已经推送到仓库的提交 => 远程仓库回退到之前的版本
git reset --hard [需要回退的提交点]
git push origin HEAD --force