git的相关知识
工作区和暂存区
工作区
例如我们创建一个本地仓库 名字gitProject 如图,这个gitProject就是一个工作区
版本库
上图我们看到工作区里面还有一个目录.git
,而它并不算是工作区,而是git的版本库。
git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
我们知道把修改的内容提交到git 分两步执行的 git add 和git commit
git add
把文件添加进去,就是把文件修改添加到暂存区;
git commit
提交更改,就是把暂存区的所有内容提交到当前分支。
在我们创建git版本库时,git自动为我们创建了唯一一个master
分支,git commit
就是往master
分支上提交更改。
现在我们操作一下
下面我们在ViewController.m 中加入一个NSLog(@"!!!!!!!!!!!!!");
查看下状态 git status
git add . 下 然后查看下状态
git add . 就是将你想要提交的内容放到暂存区中
然后git commit 下 然后查看下状态
清空了暂存区 提交到了分支上面
我们对git的管理实际上就是修改,不管你做什么样的操作就是一个修改 。
下面我们看下 git checkout --
gitProject/gitProject/ViewController.m
cat gitProject/gitProject/ViewController.m
查看ViewController.m 内容 如图
查看ViewController.m 内容 如图
然后我们添加一行 NSLog(@"?????????");
cat gitProject/gitProject/ViewController.m 查看文件内容如图
![](https://img2018.cnblogs.com/blog/733550/201810/733550-20181018155904710-525140152.png)
git checkout --
gitProject/gitProject/ViewController.m 就是把
文件在工作区的修改全部撤销,让这个文件回到最近一次git commit
或git add
时的状态。
然后我们看看git checkout -- 之后的文件内容
![](https://img2018.cnblogs.com/blog/733550/201810/733550-20181018160242902-1538282267.png)
文件内容果然复原了。
git checkout -- file 是撤销
,如果没有--
,就变成了切换到另一个分支的命令了
然后 我们看下 git reset HEAD <file> 这个命令可以把你add 到暂存区的修改撤销掉
git add . 之后 执行 git reset HEAD /gitProject/gitProject/ViewController.m
然后git commit 后会提示没有可提交的内容
下面讲讲删除文件
例如 现在创建一个ssss.h 和ssss.c 文件 然后提交到仓库
1 我们可以直接去仓库目录下吧你想删除的文件给删除了 然后 提交下
2 或者用命令行 git rm 文件名 然后提交
但是如果你发现删错了,只要咱们版本库里面还有,我们就可以把误删的文件恢复到最新版本:使用
git checkout -- gitProject/gitProject/ViewController.m
参考
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758392816224cafd33c44b4451887cc941e6716805c000