博主也是第一次尝试使用git,下面内容如有错误望指正。
因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
git add
状态变为
Staged
.
Modified
. 如果使用
git rm
移出版本库, 则成为
Untracked
文件
git add
可进入暂存
staged
状态, 使用
git checkout
则丢弃修改过, 返回到
unmodify
状态, 这个
git checkout
即从库中取出文件, 覆盖当前修改
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为
Unmodify
状态. 执行
git reset HEAD filename
取消暂存, 文件状态为
Modified
- false - 不做任何检查
- warn - 在提交时检查并警告
- true - 在提交时检查,如果发现混用则拒绝提交
和一个自动转换换行符的功能(core.safeautocrlf),配置自动转换换行符的模式
- true-在提交时转换为LF,检出时转换为CRLF
- input-提交时转换为LF,检出时不转换
- false-提交检出均不转换
里面的换行符用的就是LF我们可以换个编辑器看下
理解工作区与暂存区的区别?
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
我们前面说过使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
使用git log 来查看历史记录
修改文件
给文件添加内容(这个文件是重新弄的,前面的不小心没保存截图清了一些)
上面的文件第一次提交时空文本,第二次修改是如下内容
使用 git diff 查看当前目录文件和暂存区文件不同,这个命令还有一些其他参数可以比较其他目录的一些文件,之后再做了解
这时我们在查看文件状态,文件现在是被修改的状态
这时我们可以使用git add来讲修改的文件名保存到暂存区,或者是使用git checkout --来回退修改内容
git add 之后 再次提交,保存到分支。
这时我们看日志
觉得这里东西太多的话,可以用git log --pretty=oneline 这样每个记录就只有单行了
还有前面在git add 提交到暂存区时,还有另一个选项是 git checkout -- filename
这里我们在来做一次修改,来试试git checkout -- filename这里注意 要加--,不然会新建分支(ps:我没试过,对分支还搞的不是很清楚。)
修改文件
这时我们选择git checkout -- test.txt
查看有什么变化
又回到了没修改之前的版本
还有一种情况就是,一共修改了两次,第一次修改后提交到暂存区,第二次修改之后撤销了修改,那么这个时候,就回到了第一次修改后提交到暂存区那时候的状态。
删除文件:
这里我们添加两个文件
aaa.txt bbb.txt
删除文件,我们可以直接在目录下删除,也可以使用rm 文件名删除
想从版本库删除,这里在git commit 就ok了
如果删除后,还没提交,想从版本库里在恢复出来可以如下操作
版本回退:
现在我们多做几次提交,多形成几个版本
这里我在上面的基础上提交了上次
现在我想回到上一个版本version 2
git reset --hard HEAD^
如果返回上上个版本 name在head^多加个^
但是如果想返回100个版本呢,这样显然是不合适的,这里我们可以用git reset --hard HEAD~100来简便操作
这就回到了最开始新建那时候的版本了
那么还有一个问题,我想回到version 3呢
git reset --hard 版本号
版本号可以通过git reflog来查看
这样就ok了
提交到github远程仓库
首先生成ssh秘钥(有了则不用,用户目录下找到.ssh目录,里面有秘钥就不用了)
在~目录下执行 ssh-keygen -t rsa -C "youremail@example.com"
然后到github上面setting里设置ssh keys,将刚刚生成的id_rsa.pub的内容复制到下面
添加就秘钥就加好了
然后
new一个版本库
把这个url复制过来
在本地添加远程版本库,推送到远程版本库
必须配置好user 和email 前面有
git remote add origin https://github.com/zw574150903/gitTest.git
git push -u origin master(第一次有-u参数,后面就可以不用带参数了)