一 git简介
1. 概念
git 是一种分布式版本管理工具。
git 支持的平台:
2. git与svn的区别
(1)git是分布式的,而SVN是集中式的。Git是没有中心服务器的,每个人机器上都是一个完整的库,我们平时开发代码时的中央服务器其实和我们自己机器上的库内容是完全一样的。
(2)git把内容按元数据方式存储,而svn是按文件:因为git目录是处于个人git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
(3)GIT分支和SVN的分支不同:svn会发生分支遗漏的情况,而git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件。
(4)GIT没有一个全局的版本号,而SVN有
(5)GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
参考链接:https://jingyan.baidu.com/article/676629976401a154d51b8430.html
二 git的下载和安装
1. 下载地址
https://git-scm.com/downloads(注意下载的版本的位数与自己电脑一样)
2. 安装
双击.exe安装程序,按默认选项完成安装。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!此时右击鼠标,发现多了几个选项,如图所示。
注意运行git bash的方式,
(1)直接在桌面右击鼠标选择git bash,使用cd命令切换至仓库所在位置。(也可更改git bash的默认路径)
(2)先在本地磁盘上建好仓库,在仓库所在的位置右击鼠标,执行操作即可。
三 git的基本使用
1.创建版本库
(1)初始化一个仓库:git init
完成这个步骤后,会在本地仓库中生成一个.git文件夹。(注意:若未看到.git,可使用ls -a命令查看隐藏文件,或设置windows显示隐藏文件及文件夹)
(2)添加文件到git仓库,分两步:先git add,后git commit。
(2-1)可能遇到的问题:在commit文件时需要验证个人信息,出现如下图的提示消息:please tell me who you are. 这时需要我们按照提示运行命令,完成用户名和邮箱的配置,之后就可以正常commit文件了。
(2-2)注意事项:
a.使用git add 命令需要指明具体add哪个文件,git add .代表将仓库中所有待添加的文件都添加进来。
b.无论新增还是修改文件,想要将提交文件到本地仓库都需要add和commit两个步骤;
c. commit-m中的m(message)是本次提交的说明;
2.文件状态变化
下面就用具体的示例来模拟这些状态的变化。
1、首先在本地仓库所在文件夹新建一个文件(如:git_file.txt)。
2、使用git status查看仓库当前状态
3、按照提示信息添加文件git_file.txt,并查询状态
4、commit文件,并查询状态
对应为文件标识为:
4、修改文件git_file.txt,并查看文件状态。
5、使用git diff 查看具体的修改内容。
6、再次修改文件并查询具体修改内容。
7查看日志git log(注意:信息量大时,可以使用git log --pretty=oneline 来简化输出。)
说明:
(1)git log 清晰地展示了提交的版本号(commit id)、描述信息(description)、提交者(Author)及提交时间(Date,精确到秒s)。
(2)HEAD -> master表名当前所处的分支为master
(3)你看到的commit后面跟着个一大串是commit id(版本号),它是使用SHA-1计算出来的用十六进制表示的数。
3.git版本回退与‘前进’
可以回退到上一个版本的前置条件,就是你还没有把自己的本地版本库推送到远程!!!
(1)版本回退
结合上小节git log中的图对比着看。
在Git中,用HEAD表示当前版本,也就是最新的提交64c44c4(它是截取了commit id的前七位),上一个版本就是HEAD^,上上一个版本就是HEAD^^。(感觉版本回退就是指针位置的变动)
说明:目前我们的git_file.txt共有两个版本,第一个为空文件。当我们使用reset命令回退至第一个版本时,查看仓库中文件git_file.txt中的内容也变为第一版的了。此时我们继续回退版本,就会发现文件git_file在仓库中消失了。(虽然文件git_file只有两个版本,但是这个关注的是仓库的版本哦!)
(2)版本‘前进’
注意查看此时的仓库状态为 文件git_file为unstaged状态,而不是staged。(不理解???是不是这时提交的话,就不用先git add了,直接git commit 就是ok 了?)
4、撤销修改与删除文件
(1)撤销修改的命令 git checkout -- <filename>,适用于以下两种情况:
a.自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
b.已经添加到暂存区后,而且又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
说明:使用时注意:--前后都需要加空格。
(2)删除文件
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
版本回退、撤销修改 都要注意应用场景小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。:
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
四. git工作流程
Workspace :即work directory /working tree,工作目录
Index/Stage:暂存区(Staging area)
Repository:本地仓库
Remote:远程仓库
五.使用git将项目上传到github
1.进入Github首页,点击New repository新建一个项目
2.填写相应信息后点击create即可
3.点击Clone or dowload会出现一个地址,copy这个地址备用
4.接下来就到本地操作了,首先右键你的项目,选择Git Bash Here进入如下界面,在本地创建ssh key。(错误示例)
$ ssh-keygen -t rsa -C"your_email@youremail.com
新生成的公钥和密钥文件如图所示:
4.接下来就到本地操作了,首先右键你的项目,选择Git Bash Here,进入如下界面。(正确示例)
5.接下来就要把github上面的仓库克隆到本地 .完成后你的本地项目文件夹下面就会多出个名为‘你github上面的项目名’的文件夹,如图我多出了个git_work_2文件夹,我们把本地项目文件夹下的所有文件(除了新多出的那个文件夹不用),其余都复制到那个新多出的文件夹下,接着继续输入命令 cd git_work_2,进入该文件夹
8.接下来依次输入以下代码即可完成其他剩余操作:
9.上传成功后,如下图所示。
方法
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
六、分支管理
1、分支简介
1-1 分支分类及常用分支
1-2 git是保存数据的方式
有些传统的版本管理软件,分支操作实际上会生成一份现有代码的物理拷贝,而Git只生成一个指向当前版本(又称"快照")的指针,因此非常快捷易用。
在进行提交操作时,Git 会保存一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照的指针。还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。
2、案例说明
2-1.案例准备:新建一个版本库,并创建一个开发分支。
上图可见,第一行显示了当前项目所有分支,HEAD -> develop-1表明当前所处分支为develop-1。
推荐参考网址:
git 分支管理 http://blog.codingplayboy.com/2017/04/06/git_branch/
官方文档 https://git-scm.com/docs