git版本控制工具使用记录
博主也是第一次尝试使用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-****** -t rsa -C "[email protected]"
然后到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参数,后面就可以不用带参数了)