一、git介绍
git
Git(读音为/gɪt/。),是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
作用:更好的管理我们的程序,比如你原来提交过的内容,后面虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原。现在很多其他自由软件项目中也使用了 Git,
如 :很多 Freedesktop 的项目迁移到了 Git 上。
二、github介绍
gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。(远程仓库)
它是一个非常适合程序员交流的网站,很多国际上的技术大牛都在github上有自己的开源代码,其他人只要申请账号就可以随意的看到这些大牛写的程序。同时国内的很多互联网公司如百度,阿里等,也在github上公布有开源的代码。
git可以认为是一个软件,能够帮你更好的写程序,
github则是一个网站,这个网站可以帮助程序员之间互相交流和学习。
三、术语
1、版本控制:一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看历史记录,备份以便恢复以前的版本软件工程技术。
优点: (1)实现跨区域多人协同开发
(2)追踪和机载一个或多个文件的历史记录
(3)组织和保护你的源代码和文档
(4)统计工作量
(5)并行开发,提高开发效率
(6)跟踪记录整个软件的开发过程
(7)减轻开发人员的负担,节省时间,同时降低人为错误
(理解为:用于管理多人协同开发项目技术)
2、仓库:受版本控制所有文件修订历史的共享数据库或文件
3、工作空间:本地硬盘或linux用户账户上编辑的文件副本
4、 工作区 /工作树:工作区中包含了仓库的工作文件,可以修改内容和提交更改。
5、暂存区:暂存区是工作去用来提交更改( commit) 前可以暂存工作区的变化
工作区(git add)---------- 暂存区(git commit)-------版本库
6、签出(checkout):从仓库中将文件的最新修改版本复制到工作空间
7、签入(checkin):将新版本复制回仓库
8、提交 (commit):对各自的工作副本做更改,并将这些更改提交到仓库
9、冲突(conflict):多人对同一个文件的工作副本进行修改,并将这些更改提交到仓库
10、合并(merge):将某分支上的更改连接到主干分支;
11、分支(branch):从主线上分开的副本,默认分支叫master
12、锁(lock):获得修改文件的专有权限
13、头(HEAD):头是一个象征性的参考,最常用以直系那个当前选择的分支
四、常见的版本控制器
git、svn、cvs、vss、tfs
五、Git 与 SVN 区别
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是
2、Git 把内容按元数据方式存储,而 SVN 是按文件
3、Git 分支和 SVN 的分支不同
4、Git 没有一个全局的版本号,而 SVN 有
5、Git 的内容完整性要优于 SVN
六、git 安装:
七、git使用:
7.1、git的设置
——进入git界面(选择git bash):进入时,显示默认进入home目录
选择git bash的原因:可以使用linux命令来进行git的操作
——进入d盘,并在d盘创建一个git目录做练习
cd /
cd d
mkdir git
——进入git目录,并在git目录下创建版本库,创建好的版本库会在git目录下产生一个隐藏文件夹,此文件夹即版本库;
cd git 进入创建的目录
git init 建仓库
——进入git目录,并在git目录下创建版本库,创建好的版本库
会在git目录下产生一个隐藏文件夹,此文件夹即版本库;
——进行用户设置(没有弹出任何提示则为设置成功,在git config --local --list最后查询)
用户名和用户邮箱(使用我们github 注册的账号和邮箱)
git config user.name “xlh123123”
git config user.email “[email protected]”
git config --local --list 查看仓库当前配置
7.2、git的使用
——创建一个文件aa,并编辑,用于练习使用git文件版本管理
Touch aa
Vim aa
Cat aa
(注:用cat命令查看我输入了多少行数据,共三行)
——开始添加至缓存区
Git add aa
——用git stauts 查看aa文件的状态
Git status
(注:可以看到提示,有新文件(new files)添加了,但是没有提交(not commit yet))
——把aa文件进行提交至我们创建的版本库
Git commit -m aa
(注:提示我们提交成功,1个文件已改变,新增三行数据,此时aa文件已提交到版本库)
(注2:git add命令仅把文件添加到缓存,但并未实际提交到版本库)
(注3:git commit命令会把在缓存区的所有文件提交到版本库);
关系如图:
——提交完成后,我们回头看看aa文件的状态
(注:这里提示我们,本地文件夹和版本库的aa文件是一致的,不需要提交,工作树是干净的)
7.3 、git与github的连接
Github介绍:https://github.com/
(注:github像一个程序代码图书馆,很多程序员把他们写的代码上传到github,公开并供别人下载,我们的操作就是连接好后,把自己写的文档上传至自己的github上)
——先进行注册在hub上的账户;
——注册完毕后登录;建立个人的存储库
或者
——在我的存储库下建立一个新的存储库:
git和github 连接需要秘钥:
——填写资料,填完后,告诉我们创建成功:
(注:这就是我们的存储库url([email protected]:dayday001/-sir-.git),通过url我们可以让我们的git连接到我们的版本库)
——在git上获取密钥
Ssh-keygen (输入后连按三次回车)(箭头指向为密钥在所在路径)
——去对应路径下找到密钥,用记事本打开
——进入github添加我们的密钥
以上git与github的连接就成功了。
7.4git与github之间互传文件
——将git与github上前面新创建的存储库连接(我的url:[email protected]:dayday001/-sir-.git)
Git remote add origin [email protected]:dayday001/-sir-.git
——将提交的aa文件上传至github
Git push -u origin master
此时github上面已有我们上传的文件
——拉取github上的文件
git pull origin master
——下载整个存储库(可以复制自己的,也可以复制别人的公开存储库,复制自己的其实和git pull命令差不多作用,在这里演示如何下载别人的存储库下来)
mkdir bb
在
在github上随便找个别人的存储库
复制别人存储库url
使用命令: git clone 别人的url
Git clone [email protected]:TheAlgorithms/Python.git
可以看到D盘的git文件下的bb目录下,已经下载到了我在github上随便找到的存储库文件夹
7、5版本回退与撤销:
——版本回退(类似于word文档编辑后的撤销操作,但版本回退命令是回退commit后版本库)
首先我们对aa进行编辑,新增几行数据(aaa bbb ccc)
添加到缓存库,并提交至版本库
假设现在突然发现插的三行的写错了,需要变回原样,用版本回退命令:
Git reset --hard head^
可以看到插入的三行已消失
——撤销修改(和版本回退有所不同,撤销修改撤销的是在缓存区的修改后文件)
首先对aa文件编辑,插入 xxx yyy zzz三行,并添加到缓存区,但不提交
这个时候缓存区的aa和版本库的aa有差别(因为我没有commit) ,差了三行,我们可以用命令来查看
Git status
我们看下差异在哪里:
Git diff HEAD
我们看下差异在哪里:
Git diff HEAD
现在撤销掉xxx yyy zzz这三行:
Git reset HEAD aa
再看文件状态:git status aa
(添加后,modifed是绿色的,现在我们已经撤销修改,modified变成了红色,表示我们的本地库aa文件已经修改,但是没有添加到缓存
7.6分支管理
——查看当前分支:git branch
——创切换到一条分支:git checkout -b xiaosir
——我们在xiaosir分支下对aa文件进行修改(增加ppp qqq )
——我们在master分支下查看 aa文件,可以看到master没有刚刚添加的内容:
Git checkout master
(注:这充分解释了:分支即工作线,即如果你在一条工作线进行文档修改编辑工作,那是不会影响到另一条工作线的,其中,一般以master为主分支)
——把xiaosir分支的修改结果合并到master分支上;
Git merge xiaosir (注:需要在master分支下
——合并分支过程产生的冲突:
上面的步骤只是单独对一条分支进行修改并合并,但是在两条分支修改并合并的时候,会有冲突产生;
在xiaosir分支下修改编辑:git checkout xiaosir;
在xiaosir分支下添加并提交:
切换至master再进行修改并添加提交:
此时,我们知道,我们在xiaosir分支增加了一行文字,master分支也增加一行文字(文字内容与xiaosir分支上的不同),也就是我们在不同分支上做了不同修改,现在我们对这个操作进行合并:
Git merge xiaosir (该命令在master分支下操作)
现在来看合并的结果:
可以看到,内容有合并,但是用<<<<<<< ========== >>>>>>>>>分隔符分开了;
Git status 命令也告诉我们冲突了
——合并冲突修复:
Git add aa
Git commit -m “conflict fixed”
——合并冲突修复:
Git add aa
Git commit -m “conflict fixed”
Git报错:
1
2、
git config --local --list 查看配置是否成命令
3、
解决方案:先删除
1、git remote rm origin
2、再次执行添加就可以
4、
5、
方法一:git 强制拉取远程代码覆盖本地
1、git fetch --all
2、git reset --hard origin/master
3、git pull
方法二:退回版本
git reset --hard HEAD
标签:aa,sir,Git,文件,github,git,版本,___
From: https://www.cnblogs.com/xiaolehua/p/16629820.html