最新版Git快速通关教程:一文掌握

目录

一、版本控制介绍

二、Git介绍

三、常用linux目录文件命令

四、Git配置

五、工作原理

六、工作流程

七、分支管理

八、Git标签

九、连接码云或GitHub


一、版本控制介绍

1、版本控制(Revision control)

  • 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

  • 管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

  • 用于管理多人协同开发项目的技术

2、主流版本控制器分类

1、本地版本控制 RCS

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用

2、集中版本控制 SVN、CVS、VSS

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改

3、分布式版本控制 Git

有服务器端的仓库,用来同步各开发者的私有仓库。在分布式版本控制系统中,每个参与者的本地也会有一个完整的仓库

3、优缺点

1、VSS

Visual Source Safe作为一款历史悠久的版本管理工具,在早期扛起了版本管理系统方面的大气,能帮助解决一部分版本控制方面的问题,也在一定程度上帮助解决代码共享方面的难题。但是依旧存在一些不足,比如:

1. 文件大多会以独占的形势进行锁定。如果一个人在修改的时候其他人没有办法进行修改。

  1. VSS只支持Windows版本,且只兼容微软的开发工具。

  2. 文件存储,服务器必须共享文件夹,对文件的安全性没有足够保障。

2、SVN

Subversion是一个开源的版本控制系统。和VSS相比,除开最基本的代码和文件管理功能外,主要的革新是提供了分支的功能,从而解决了VSS文件独占的问题。

优点:

  1. 管理方便,逻辑明确,操作简单,上手快。

  2. 易于管理,集中式服务器更能保证安全性。

  3. 代码一致性非常高。

  4. 有良好的目录级权限控制系统。

缺点:

  1. 对服务器性能要求高,数据库容量经常暴增,体量大。

  2. 必须联网。如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等。

  3. 不适合开源开发。

  4. 分支的管控方式不灵活

3、Git

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

优点:

  1. 适合分布式开发,每一个个体都可以作为服务器。每一次Clone就是从服务器上pull到了所有的内容,包括版本信息。

  2. 公共服务器压力和数据量都不会太大。

  3. 速度快、灵活,分支之间可以任意切换。

  4. 任意两个开发者之间可以很容易的解决冲突,并且单机上就可以进行分支合并。

  5. 离线工作,不影响本地代码编写,等有网络连接以后可以再上传代码,并且在本地可以根据不同的需要,本地新建自己的分支。

  6. hash算法保证文件完整性

缺点:

  1. 每个人都拥有全部的代码,拥有安全隐患!

二、Git介绍

1、Git历史

在 Linux 开源的初期,Linux 开源项目的代码是 linus 本人通过 linux 命令 diff 和 patch 两条命令手动完成。随着 Linux 代码越来越壮大,靠 Linus 一个人来手动合并已经不现实。2002 年,Linus 选择了一个商业版本控制系统 BitKeeper 作为 Linux 内核的代码管理工具(BitKeeper 的开发商 BitMover 授权 linux 社区免费使用)。但是,免费使用是有很多的限制的,因此 linux 社区的大佬开始破解 BitKeeper。其中,samba 的作者 andrew 破解成功了。但是被 BitMover 公司发现,收回免费使用权。  迫不得已,Linus 选择了自己开发一个分布式版本控制工具以替代 BitKeeper。linus 闭关一个月,写出了 Git。在一个月后,Git 成功接管了 Linux 社区的版本控制工作,并且开始开源。

2、软件下载

淘宝镜像下载,选择下面最新版本,按对应系统下载即可

3、软件安装

按照默认安装即可,自动添加系统环境路径,此路径可手动删除,方便卸载。

安装完毕后,在任意文件夹右键都可以使用git命令,即安装成功。

4、启动git

任意文件夹右击,或通过开始菜单打开

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多

Git CMD:Windows风格的命令行

Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

三、常用linux目录文件命令

1、目录切换 cd

命令:cd=catalog directory
cd          目录
cd /        切换到根目录
cd /usr     切换到根目录下的usr目录
cd ../      切换到上一级目录 或者  cd ..
cd ~        切换到home目录
cd -        切换到上次访问的目录

2、目录查看 ls

命令:ls=list
​
ls                查看当前目录下的所有目录和文件
ls -a            查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l 或 ll       列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls /dir            查看指定目录下的所有目录和文件   如:ls /usr

3 、目录操作

  1. 创建目录 mkdir

    命令:mkdir 目录
    ​
    mkdir    aaa            在当前目录下创建一个名为aaa的目录
    mkdir    /usr/aaa    在指定目录下创建一个名为aaa的目
  1. 删除目录或文件 rm

    命令:rm=remove rf=remove file
    ​
    删除文件:
    rm 文件        删除当前目录下的文件
    rm -f 文件    删除当前目录的的文件(不询问)
    ​
    删除目录:
    rm -r aaa    递归删除当前目录下的aaa目录
    rm -rf aaa    递归删除当前目录下的aaa目录(不询问)
    ​
    全部删除:
    rm -rf *    将当前目录下的所有目录和文件全部删除
    rm -rf /*    【自杀命令!慎用!慎用!慎用!】将根目录下的所有文件全部删除
    ​
    注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包

  1. 目录修改 mv 和 cp

    1. 重命名目录

      命令:mv = move
      mv aaa bbb    将目录aaa改为bbb
      ​
      注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行重命名的操作
    1. 移动目录

      mv /usr/tmp/aaa /usr    将/usr/tmp目录下的aaa目录剪切到 /usr目录下面     
      注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作
    1. 拷贝目录

      命令:cp -r 目录名称 目录拷贝的目标位置   -r代表递归
      cp /usr/tmp/aaa  /usr      将/usr/tmp目录下的aaa目录复制到 /usr目录下面     
      注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不用写-r递归
    1. 搜索目录【查】find

      命令:find 目录 参数 文件名称
      示例:find /usr/tmp -name 'a*'    查找/usr/tmp目录下的所有以a开头的目录或文件

4、文件操作命令

  1. 新建文件【增】touch

    命令:touch 文件名
    touch  aa.txt     在当前目录创建一个名为aa.txt的文件
  1. 2删除文件 【删】 rm

    命令:rm -rf 文件名

5、其他命令

clear       清屏
#           注释
reset       重置
history     查看历史
help        帮助
exit        退出

四、Git配置

常用命令 (任意文件夹都可以打开)

#查看配置 
git config -l
​
#查看系统config
git config --system --list 
​
#查看当前用户(global)配置
git config --global  --list

设置用户名与邮箱(用户标识,初次使用必要)

git config --global user.name "jasin"  #名称
git config --global user.email 939282975@qq.com   #邮箱

五、工作原理

  • git add files 把当前文件放入暂存区域。

  • git commit 给暂存区域生成快照并提交。

  • git reset -- files 用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件。

  • git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。

六、工作流程

一、一般工作流程

  1. 克隆 Git 资源作为工作目录。

  2. 在克隆的资源上添加或修改文件。

  3. 如果其他人修改了,你可以更新资源。

  4. 在提交前查看修改。

  5. 提交修改。

  6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

二、Git步骤

  1. 仓库初始化

git init            #初始化一个 Git 仓库
​
git init newrepo    #指定目录作为Git仓库

或者使用clone镜像到本地目录

git clone git://github.com/schacon/grit.git 
​
git clone <repo> <directory>

        2. add到暂存区

git add .           
​
git add README.txt  

        3.commit到本地git资源库

git commit -m '初始化项目版本'
#-m后面是注释,linux用单引号,必须填写

        4.第一次需要连接远程仓库

git remote add origin git@192.168.1.119:ndshow

        或者前面使用clone镜像到本地目录

git clone git://github.com/schacon/grit.git 
​
git clone <repo> <directory>

        5.push到远程仓库

git push .

三、Git常用的其他命令

git checkout        #检出到工作区、切换或创建分支,从库中取出文件, 覆盖当前修改,用于回滚或者改错
​
git log     #查看历史提交记录
​
git blame <file>    #以列表形式查看指定文件的历史修改记录
​
git status  #查看仓库当前的状态,显示有变更的文件
​
git diff    #比较文件的不同,即暂存区和工作区的差异。
​
git reset   #回退版本。
​
git rm      #删除工作区文件。
​
git mv      #移动或重命名工作区文件
​
git fetch   #从远程获取代码库

四、文件的状态

  1. Untracked 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

  2. Unmodified文件已经入库,未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

  3. Modified文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态,

  4. Staged暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

五、忽略文件

必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

#规则
#自动忽略文件中的空行或#开头文件
​
#使用linux通配符
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class
# 不排除.gitignore:
!.gitignore

七、分支管理

一、分支使用

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

git-br-initial

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

git-br-create

对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

git-br-dev-fd

dev上的工作完成了,就可以把dev合并到master

git-br-ff-merge

合并完分支后,甚至可以删除dev分支

git-br-rm

#常用命令
​
git branch name     #创建分支
git brach           #列出分支
git branch -r       #列出远程分支
git branch -d name  #删除分支
​
git checkout name       #切换分支
git checkout -b name    #新建并切换到分支
​
git merge name          #合并分支到当前分支

二、冲突与解决

  1. 冲突产生

两个本地库对同一分支在不同时间做出了更改,并且合并,master分支和其他分支各自都分别有新的提交,变成了这样:

git-br-feature1

  1. 解决冲突

  1. git pull最新分支,与当前分支合并。

  2. 打开冲突文件,商量保存有用部分

  3. 重新提交合并

git-br-conflict-merged

八、Git标签

达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

​
git tag                 #查看所有标签
git tag <name>          #打一个新标签
git tag v0.9 f52c633    #给commit id创建标签
git show <tagname>      #查看标签信息
​

九、连接码云或GitHub

1、一般连接(gitee码云)

  1. 创建码云用户

  2. 新建码云仓库

  3. 根据地址在本地clone仓库(会提示输入账户密码)

2、建立ssh安全连接

  1. 设置本机绑定ssh公钥,任意文件夹

ssh-keygen -t -rsa

  1. 生成后在本地打开路径C:\Users\jasin\.ssh,用编辑器打开id_rsa.pub文件,复制粘贴到码云ssh公钥

        2. 连接完成,不用输入密码

参考文档

Git教程 - 廖雪峰的官方网站

Git 教程 | 菜鸟教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值