当前位置:   article > 正文

Git入门到精通_git从入门到精通pdf

git从入门到精通pdf

一. 什么是Git

Git官网地址https://git-scm.com/
Git源码https://github.com/git/git/

1.1 Git简介

  • Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
  • Git 是李纳斯·托沃兹( Linus Torvalds )为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
  • Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

1.2 Git的优点

  • 大部分操作在本地完成,不需要联网
  • 速度快、灵活
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与 Linux命令全面兼容

二. Git和Svn的区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

三. Git下载与安装

3.1 下载Git

Git管网下载https://git-scm.com/downloads


执行exe文件
一直点next

桌面鼠标右击,出现

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

四. Git结构

工作区:就是你在电脑里能看到的目录(写的代码存在工作区)。
暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件 (.git/index)中,所以我们把暂存区有时也叫作索引(index).(计划要提交的文件)
版本库:(本地库)工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

五. Git和代码托管中心

5.1 代码托管中心

代码托管中心的任务:维护远程库
局域网环境下:

  • GitLab服务器

外网环境下:

5.2 本地库与远程库

团队内部协作和跨团队协作

5.3 团队内部协作流程

5.4 跨团队协作

六. Git命令行

6.1 创建本地库

右键进入git bash here

mkdir blog  创建文件   
cd blog     进入blog
ll -A       查看隐藏的.git文件内容
git init    初始化一个 Git 仓库
ll .git/    表示查看.git 下的文件列表显示
cat .git/config     查看.git/config 内容   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:.git目录是存放本地库相关的目录和文件,不要对其进行修改和操作

6.2 设置签名

6.2.1 签名概述

  1. 签名的作用:用于标识不同的开发人员
  2. 项目级别(仓库):仅在当前本地库范围有效
  3. 系统级别:登录当前操作系统的用户范围
  4. 级别优先级:就近原则:项目级别优先级大于系统(用户)级别签名

注意:签名级别必须要设置,如果都不设置,GIT可能会导致命令出差。无法辨别

6.2.2 签名命令

项目级别(仓库):仅在当前本地库范围有效

 git config user.name zysheep
 git config user.email zysheep@163.com
 cat .git/config  查看设置结果
  • 1
  • 2
  • 3

系统级别:登录当前操作系统的用户范围

 git config –global user.name zysheep
 git config –global user.email zysheep@163.com
 cd ~  家目录
 ll –A | grep –i git   查看叫git的文件名称
 cat .gitconfig 查看文件内容
  • 1
  • 2
  • 3
  • 4
  • 5

在实际开发过程中,通常只需要设置系统级别即可。如果有特殊需要,再设置项目级别。

6.3 常用命令

 git tatus  用于显示工作目录和暂存区的状态
 git add    xxx.txt 将工作区写入暂存区
 git rm     命令用于从工作区和索引中删除文件。
 git commit -m '备注信息'  将暂存区提交到本地库
 git checkout   切换分支或恢复工作树文件
 git log        显示提交日志信息
 git log –-pretty=oneline 更优雅的显示(查看历史记录)
 Git log --oneline
 git reflog   //用于显示需要回退的步骤HEAD
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6.4 永久删除后找回

git rm 命令用于从工作区和索引中删除文件。

  1. 工作区创建文件,通过命令提交到本地库
 Vim d1.txt  
 git add d1.txt  
 git commit –m ‘上传到本地库d1.txt’ d1.txt
  • 1
  • 2
  • 3
  1. 执行命令进行删除:
git rm d1.txt 工作区删除后,提交到本地库
git commit –m ‘删除d1.txt’ d1.txt
  • 1
  • 2
  1. 通过日志git reflog 找回
$ git reset --hard 15d5002
ll查看即可
  • 1
  • 2

注意: git只要在本地库发生操作,都会进行版本记录。

6.5 文件比较

gid diff 将工作区中的文件和暂存区进行比较

vim git.txt    修改内容
git diff git.txt       用于显示提交和工作树等之间的更改
  • 1
  • 2

gid diff 暂存区中的文件和本地库进行比较

git add git.txt 将git.txt 工作区添加到暂存区 
git diff HEAD git.txt   HEAD代表本地库最新版本指针    
git diff  不加文件名
git checkout 文件名   退回修改  
  • 1
  • 2
  • 3
  • 4

七. 本地库和远程库的交互

7.1 初始化本地库与远程库建立连接

  1. git remote -v 查看当前所有远程地址别名

  1. git remote add [别名][远程地址]


  1. 推送 git push [别名] [分支名]

出现以上错误,是因为目录中没有文件,空目录是不能提交上去的。

我们在目录中添加一个文件,使用git add加入到暂存区,git commit提交到本地库中。

可能要设置签名(设置全局签名吧,否则设置项目级别的前面,后面再创建本地仓库,又得重新设置),设置完成后,再git commit,最后再git push

这是因为github上的远程库与本地库版本不一致导致的。我们根据提示先pull,再push

git pull origin master
git push origin master
  • 1
  • 2

git pull 失败 ,提示:fatal: refusing to merge unrelated histories,这是因为两个根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并。有两种解决方法:

  • 第一种:从远端库拉下来代码, 本地要加入的代码放到远端库,然后提交上去,这相当于是一种更新;
  • 第二种:强制拉取git pull origin master --allow-unrelated-histories

总结: 创建远程仓库,本地仓库初始化后,使用git pull拉取,保持本地库与远程库版本一致。

7.2 克隆与远程库建立连接

git clone [远程地址]
  • 1

克隆操作为我们做了这些事情:

  • 完整的把远程库下载到本地
  • 创建远程库地址别名:origin
  • 初始化本地库

如果已经找到远程库,推荐使用克隆来与远程库建立连接

7. 3 切换远程库

方式一:修改远程仓库地址

git remote  -v  #  查看远程仓库的地址

git remote set-url origin Url  # 更换远程仓库地址,Url为新地址。
  • 1
  • 2
  • 3

方式二:先删除远程仓库地址,然后再添加

git remote rm origin   # 删除现有远程仓库
git remote add origin url   # 添加新远程仓库
  • 1
  • 2

八. 分支

8.1 分支概念

  1. 什么是分支?
    在版本控制过程中,使用多条线同时推进多个任务。

  1. 分支的好处?
  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任
    何影响。
  • 失败的分支删除重新开始即可

8.2 分支命令

  1. 创建分支
git branch develop
  • 1
  1. 查看本地分支:
git branch
  • 1

注: 名称前面加* 号的是当前的分支

  1. 查看远程分支:

加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话)

git branch -a
  • 1
  1. 切换分支
git checkout branch_name
  • 1
  1. 删除本地分支
git branch -d branch_name
  • 1
  1. 删除远程分支
git branch -r -d origin/branch-name  
git push origin :branch-name 
  • 1
  • 2
  1. 如果远程新建了一个分支,本地没有该分支。

可以利用 git checkout --track origin/branch_name ,这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name。

git checkout --track origin/branch_name
  • 1
  1. 如果本地新建了一个分支 branch_name,但是在远程没有。

这时候 push pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用 git push --set-upstream origin branch_name ,这样就可以自动在远程创建一个 branch_name 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。

git push --set-upstream origin branch_name
  • 1
  1. 合并分支到master上
    首先切换到master分支上
git  checkout master
  • 1

如果是多人开发的话 需要把远程master上的代码pull下来

git pull origin master
  • 1

然后我们把dev分支的代码合并到master上

git  merge dev
  • 1

然后查看状态

git status
  • 1

示例 :合并分支

  1. 在分支hot_fix 上修改git.txt文件,并提交到本地库
  2. 需要合并分支。让master上的git.txt同步

切换到接受修改的分支上master(将hot_fix内容同步到master

git checkout master   //切换到接受修改的分支上
  • 1

执行merge命令,git merge命令用于将两个或两个以上的开发历史加入(合并)一起。

git merge hot_fix   //hot_fix 被合并的分支名称
  • 1

7.3 合并分支(冲突)解决

问题:将两个分支内的文件分别进行修改.(且改变的是同一位置)进行合并。

1、查看分支信息:

 git branch -v
  • 1

2、在master下修改某行文件内容。然后进行提交。

vim git.txt  
git add git.txt
git commit –m ‘master 提交’ git.txt
  • 1
  • 2
  • 3


3、查看分支信息

git branch -v
  • 1


4、在hot_fix下修改某行(master)同行文件内容。然后进行提交

git checkout hot_fix
vim git.txt
git add git.txt
git commit –m ‘hot_fix提交’ git.txt
  • 1
  • 2
  • 3
  • 4


查看版本信息:

合并:

git merge master  //在hot_fix中向master中合并代码

Automatic merge failed; fix conflicts and then commit the result.(自动合并失败;修复冲突,然后提交结果。)
  • 1
  • 2
  • 3


查看文件(冲突的):
cat git.txt

处理冲突:

  • 由人为沟通解决。
  • 进行文件编辑

修改文件:

vim git.txt   // (将冲突的符号清除。进行修改内容)
git add  git.txt
git commit –m ‘冲突已修复’//不需要带文件名称
  • 1
  • 2
  • 3

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号