工具理论与使用
1. git
1).git add 与 gitstage 的区别
git stage 只是 git add 的同义词,所以在使用上没有区别
i)Git 仓库的三个组成部分:工作区(Working Directory)、暂存区(Stage)、历史记
录区(History)
ii)工作区:在 Git 管理的正常目录都算是工作区,我们平时编辑工作都是在工作区完
成。
iii)暂存区:临时区域。里面存放将要提交的文件快照。
历史记录区:git commit 后的记录区。
git add 和 git stage,其实这两个命令是同一个意思,是因为要跟 svn add 区分,两者的功
能是完全不一样的,svn add 是将某个文件加入版本控制,而 git add 则是把某个文件
加入暂存区,因为在 git 出来之前大家用 svn 比较多,所以为了避免误导,git 引入了
git stage,然后把 git diff --staged 做为 git diff --cached 的相同命令。基于这个原因,我
们建议使用 git stage 以及 git diff –staged.
2). git reset 、git revert 和 git checkout 有什么区别
共同点:用来撤销代码仓库中的某些更改
不同点:
i). git reset 可以将一个分支的末端指向前一个 commit。然后再下次 git 执行垃圾回收的
时候,会把这个 commit 之后的 commit 都扔掉;
ii). git reset 还支持三种标记。用来标记 reset 指令的影响范围;
-mixed:会影响到暂存区和历史记录区。也是默认选项
--soft:只影响历史记录区
--hard:影响工作区,暂存区和历史记录区
因为 git reset 是直接删除 commit 记录,从而会影响其他开发人员的分支,所以不要在公
共分支做这个操作
git checkout 可以将 HEAD 移到一个新的分支,并更新工作目录。可能会覆盖本地的修
改,所以执行这个指令之前,你需要 stash 或者 commit 暂存区和工作区的更改;
git revert 和 git reset 的目的是一样的,但是做法不一样,它会创建新的 commit 的方式来
撤销 commit,这样能保留之前的 commit 历史,比较安全。另外,同样因为可能会覆
盖本地的修改,所以执行这个指令之前,你需要 stash 或者 commit 暂存区和工作区的
更改;