dcsxlh

导航

 
一、git介绍
git
Git(读音为/gɪt/。),是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
作用:更好的管理我们的程序,比如你原来提交过的内容,后面虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改,可以进行还原。现在很多其他自由软件项目中也使用了 Git,
如 :很多 Freedesktop 的项目迁移到了 Git 上。
 
 ----------------------------------------------
二、github介绍
gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。(远程仓库)
 
它是一个非常适合程序员交流的网站,很多国际上的技术大牛都在github上有自己的开源代码,其他人只要申请账号就可以随意的看到这些大牛写的程序。同时国内的很多互联网公司如百度,阿里等,也在github上公布有开源的代码。
git可以认为是一个软件,能够帮你更好的写程序,
github则是一个网站,这个网站可以帮助程序员之间互相交流和学习。

 

 

------------------------------------------------
gitlab
 

 

 ------------------------------------------------

 

 

 

三、术语
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 安装:

1、https://git-scm.com/download/win  git官网下载

 

 

 64位

 

 

 2、

 

 

 

 

七、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 “812462278@163.com”

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 、gitgithub的连接

Github介绍:https://github.com/  

(注:github像一个程序代码图书馆,很多程序员把他们写的代码上传到github,公开并供别人下载,我们的操作就是连接好后,把自己写的文档上传至自己的github上)

——先进行注册在hub上的账户;

 

——注册完毕后登录;建立个人的存储库

或者

 

 

 

 

——在我的存储库下建立一个新的存储库:

 

 

 

 

 

 

 

git和github 连接需要秘钥:

 ——填写资料,填完后,告诉我们创建成功:

(注:这就是我们的存储库url(git@github.com:dayday001/-sir-.git),通过url我们可以让我们的git连接到我们的版本库)

 

——在git上获取密钥

Ssh-keygen (输入后连按三次回车)(箭头指向为密钥在所在路径)

——去对应路径下找到密钥,用记事本打开

 

 

 

 

 

 

 

——进入github添加我们的密钥

 

 

以上git与github的连接就成功了。

7.4gitgithub之间互传文件

——将git与github上前面新创建的存储库连接(我的url:git@github.com:dayday001/-sir-.git)

Git remote add origin git@github.com: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 git@github.com: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
 
posted on 2022-08-27 09:17  多测师_肖sir  阅读(135)  评论(0编辑  收藏  举报