Git学习笔记
第一篇
此篇博客用于我自己的学习总结与感悟,如有问题欢迎指正与批评
一.对Git的理解
Git是一种分布式版本控制系统,简单地说是一种能记录库内文件修改地内容、时间等信息的系统,能方便我们对数量较多的项目的管理,它还具有能删除项目、回溯以前的版本等功能。
Git分为三部分:工作区、版本库,版本库又包含暂存区和分支,系统会自动为我们创建一个分支master。对文件的修改进行于工作区,然后通过$ git add fileName提交到暂存区,最后通过$git commit -m "~"提交到分支,有关分支的内容会在下一篇中写到。
二.基础操作
- 创建一个空的库
$ mdkir folderName //创建一个名为folderName的空文件夹
$ cd folderName //将操作目录选择为该文件夹
$ git init //将当前目录初始化为一个库
$ pwd //查看当前目录的路径
创建完空的库后,文件夹内会出现一个隐藏的文件夹名为.git,用于存储各种配置信息等。
- 向仓库内添加文件
$ git add fileName //将文件添加进git的暂存区
$ git commit -m "..." //将暂存区的文件提交到库
$ git status //查询当前库的状态
$ git add fileName_1 fileName_2 ... //同时提交多个文件时文件与文件之间用空格隔开
注意:
(1) 文件提交时一定要写明文件后缀名
(2)在库的目录中如果有未存入暂存区的文件会出现(在分支master中有未追踪的文件):
(3)在库的目录中如果有在暂存区且未提交到库内的文件会出现(更改将要被提交):
(4)使用命令提交到库内后会提示:
- 对库内文件的处理
(1).$ git diff fileName //查看文件当前的版本和工作区的区别
例如上述图片截取的部分html文件,我在红色的一行做了修改,绿色之后的为修改之后的内容
$ git head -- <fileName> //查看工作区与最后一次提交到库中的区别
注意:
head 意为当前版本,在修改为 head^ 之后,意为上一个版本,也可以将语句中的版本换位 head^ 查看上一个版本与工作区的区别,以此类推,head……(n个^)意为以前的第n个版本,但是到了一百甚至更大的数字,我们不会没事干打那么多符号,因此习惯用head~n来表示。
(2).回溯到原来的版本
$ git log //能查看当前文件的修改日志
$ git reset --hard 版本号 //回溯到指定版本号的版本
$ git log --pretty=oneline //精简显示版本修改日志
那一串很长的看不懂的字符就是版本号,版本回溯时只需要版本号的前几位即可。
(3).
$ git checkout -- fileName //撤销全部文件的修改
$ git reset HEAD fileName //把暂存区的文件修改退回到工作区
注意:
第一条语句有两种情况:一自修改之后存入暂存区的文件会回溯到与版本库相同的状态,二自修改之后添加到库的会回溯到暂存区时的状态
(4).删除文件
$ rm fileName //通过文件管理器删除工作区的文件
$ git rm fileName //删除库内文件
$ git checkout -- fileName //回复误删的文件
注意:
第一条语句只会删除工作区的文件,不会修改暂存区和库内的文件。通过$ git status检查的话会提示:
删除之后也要像添加一样,提交修改
- Git与Github
(1)连接Github并将本地库文件同步到远程仓库
$ ssh-****** -t rsa -C "emailAddress" //在用户目录没有.ssh文件或在该文件夹下没有id_rsa和id_rsa.pub时使用(emailAddress为注册时的邮箱)
下一步是在Github注册账号并添加SSH Key
将用户目录/.ssh/id_rsa.pub内的内容复制进入Key的文本框内。
$ git remote add origin [email protected]:userName/..../... .git //绑定本地库和远程库
第一次连接远程库会出现以下情况:
只需键入yes并确认即可
$ git remote remove origin //解除远程库和本地库的绑定
$ git push -u origin master //将本地修改后的最新的库提交到远程仓库
(github也支持http传输协议但是相对较慢)
(2)从远程仓库同步到本地库
$ git clone [email protected]:userName/.../... .git //从远程仓库同步到本地仓库