0. 为什么需要Git
Git是分布式的版本控制工具,可以提供代码同步,开发分支管理,版本控制等在团队协作的过程中需要使用的功能。。 学习网站 learngitbranching.js.org/
1. 远程同步
当我们进行团队开发时,需要共同维护一份项目代码,Git为我们提供了一种集中管理代码的方式,我们可以讲代码托管到第三方仓库中,在本地存储一份代码的克隆,在本地仓库进行开发,然后适时将代码同步到远程仓库中,完成代码共享。 我们可以借助
git clone url的命令获取到远程仓库的代码。
而对于个人的本地仓库,git提出了工作区与暂存区的概念。
本地仓库的代码状态
通过上面的图解,我们可以得知,我们PC上或者工作区的文件,需要先经过git add命令加入工作区;
之后,借助git commit提交到缓存区;
最后,我们可以通过git push命令将暂存区的代码推送到我们的远程仓库。
2. 节点与版本控制
在Git中,每一次的git commit操作都会在现在所在的节点下生成一个新的版本节点,此外,每个节点都有一个nodeHash值做唯一标识。
上图中main后面紧跟的*标志是指我们现在所在的节点,我们可以通过git checkout nodeHash的方式切换到nodeHash所在的节点。
3.分支控制
很多时候,在同一版本下,我们需要多个人同时开发各自的功能,之后再将各自的工作合并到一起,这时就会用到分支管理的功能。 我们可以通过
git branch name的方式,在当前节点创建一个分支;
之后,我们可以通过git checkout name的方式切换我们所在的分支;
切换完成,在进行git commit时就是在新分支上创建节点了。
分支的合并命令时git merge branchName与git rebase branchName;
git merge branchName时会在当前分支生成一个节点并且合并branchName的内容;
git rebase branchName会在branchName分支下生成一个节点并且合并当前分支的内容。
4. 常用命令
# 仓库基本操作
git add [filename / .] # 提交工作区代码到暂存区
git commit -am “log” # 存入本地仓库
git push # 推送到远程仓库
# 分支管理
git branch branchName # 在当前分支基础上创建分支
git branch -f branchName nodeHash # 将branchName分支移动到nodeHash节点
git checkout nodeHash[^/~num] # 移动HEAD到nodeHash节点,^符号是指nodeHash的父提交,~num是指nodeHash的上num个节点
git merge branchName # 将当前分支连接到branchName
git rebase branchName # 将当前分支接到branchName下
git rebase -i nodeHash # 从nodeHash开始调整节点结构 c
# 分支回退
git reset nodeHash # 在本地回退到nodeHash节点
git revert nodeHash # 新建一个节点,撤销nodeHash的修改re
git cherry-pick ...nodeHash # 在当前分支下提交...nodeHash节点信息
# 标签
git tag tagName nodeHash # 在nodeHash节点上创建tagName标签
git describe [ref] # 返回距离ref最近的tag信息
git status # 查看文件的状态,会显示多少文件未提交或者缓存