Git版本管理

Git是分布式版本控制系统,GitHub网站为开源项目免费提供Git存储

·

Git两大特点:

版木控制:可以解决多人同时开发的代码问题,也可以解决我回历史代码的问题。

分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器"仓库克隆一份到自己的电脑上,并且各自把各白的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub.网站。

·

Git配置

在安装好Git后, 还需要进行一步配置:

$ git config --global user.name “Your Nmae”
$ git config --global user.email “email@example.com”

注:git config 命令的 --global 参数,用了这个参数表示这台机器山所有的Git仓库都会使用这个配置,也可以对某个仓库指定不同的用户名和Email地址。

GIt是分布式版本控制系统,所以每台机器都必须向Git指明自己的信息

Git基本操作

● 创建一个版本库(初始化仓库)

$ git init

在这里插入图片描述

● 创建一个版本

$ git add 文件
$ git commit -m ‘说明’

在这里插入图片描述

● 查看版本记录

$ git log
$ git log --pretty=oneline (简化显示)

在这里插入图片描述

● 查看仓库当前状态

$ git status

在这里插入图片描述

·

● 增加记录修改版本后

在这里插入图片描述

·

● 版本回退

Git中有一个指针HEAD指着最新的版本内容
那么当前版本可以用HEAD来表示,上一个版本用HEAD^ 表示,前两个版本就可以用HEAD^^表示
当版本比较多的时候可以用 HEAD~数字,表示前多少个版本(HEAD~1前一个版本)
或者使用

$ git reset --hard HEAD^ -------回到前一个版本

在这里插入图片描述
·

当回到版本1时,并不代表版本2被删除了,版本2依然在仓库中可以回到版本2,通过命令:

$ git reset --hard 版本编号(可只取前几位)

在这里插入图片描述
·

当git log中没有版本2的版本编号时,想回到版本2可以用git reflog来查看历史log记录

$ git reflog

在这里插入图片描述
·

● Git的工作区和版本库

当前目录中是属于工作区,而当前目录下的.git文件中属于版本库,版本库里存在一个暂存区,当在工作区对文件做好修改后输入git add 文件1,文件2命令则会把工作区的文件1,文件2添加到暂存区,在工作区输入git commt命令后会把暂存区的所有待提交文件提交到当前分支也就是 创建版本记录
在这里插入图片描述

·

● 撤销修改

$ git checkout – 文件名

1)当多次修改但都并未添加到暂存区时,输入git checkout -- 文件 会将该文件返回到初始时候的状态(即在上次提交到版本库后的样子或上次添加到暂存区后的样子),并不会只撤销一次修改会撤销到该文件上次提交到版本库后(或上次添加到暂存区后)所有在工作区的修改

2)当多次修改后添加到暂存区了,可以使用命令git reset HEAD 文件 把暂存区的该文件删除,重新放回工作区再进行撤销修改,回到上次提交到版本库后的状态

例1:在这里插入图片描述
·

例2:
在这里插入图片描述

·

● 对比文件不同

$ git diff HEAD HEAD^ 文件

例:
在这里插入图片描述
例:
在这里插入图片描述
·

● 删除文件

删除文件也是属于在工作区的修改,可以通过撤销修改恢复文件

通过命令git rm 文件名 将删除此文件的命令添加到暂存区

$ git rm 文件名

在这里插入图片描述

·

·

·

Git分支管理

master指向主线,HEAD指向master,每次提交后主线会越来越长,master自动指向主线最后一次提交
在这里插入图片描述

Git创建分支非常快速,当创建分支dev后,dev自动指向主线最后一次提交,HEAD则指向dev
在这里插入图片描述
此后再进行提交,master不动,dev会随着主线的变长跟随指向最后一次提交,
在这里插入图片描述

当在dev分支上的任务完成后,可以让dev合并到master上,即直接让master指向dev所指向的地方,HEAD执指向master则完成了合并。在这里插入图片描述

创建并切换到一个分支

$ git checkout -b 分支名

在这里插入图片描述
·

● 查看当前分支的数量

$ git branch

在这里插入图片描述

● 切换分支

$ git checkout 要切换的分支名

在这里插入图片描述

● 合并分支

$ git merge 分支名

默认合并是快速合并 Fast-forward

在这里插入图片描述

● 删除分支

$ git branch -d 分支名

在这里插入图片描述

● 解决合并分支的冲突

当切换分支,在分支和master中对同一文件都进行处理了并进行提交后,在合并时会出现合并冲突

在这里插入图片描述

此时打开双方都修改的文件可以看到,在分支dev中对该文件添加了” bye “, 在当前HEAD指向的master中对该文件添加了” nihao “
在这里插入图片描述
将文件中多余的标示符号去掉保存后,在主线中进行一次提交即可解决冲突,此时可以直接删除分支dev

·

查看分支的图

$ git log --graph --pretty=oneline

在这里插入图片描述
·

分支管理策咯(手动非快速合并)

分支合并三种情况:

1)分支上做了改动,master上未做改动,通过git merge 分支名可以进行快速合并

2)分支上和master对同一文件都做了改动并且提交后进行合并,合并冲突,需解决冲突后,才能删除分支

3)分支上做了改动,master也做了改动但并未对同一文件进行改动,通过命令git merge --no-ff -m '说明' 分支名进行非快速合并

·

● 2)解决合并分支的冲突

当切换分支,在分支和master中对同一文件都进行处理了并进行提交后,在合并时会出现合并冲突

在这里插入图片描述

此时打开双方都修改的文件可以看到,在分支dev中对该文件添加了” bye “, 在当前HEAD指向的master中对该文件添加了” nihao “,git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
在这里插入图片描述
将文件中多余的标示符号去掉保存后,在主线中进行一次提交即可解决冲突,此时可以直接删除分支dev

·

查看分支的图

$ git log --graph --pretty=oneline

在这里插入图片描述
·

● 3)非快速合并分支

当分支上做了改动,master也做了改动并未对同一文件进行改动时,进行快速合并,会出现下面界面:

在这里插入图片描述
·

在这种情况中应该使用非快速合并

$ git merge --no-ff -m ‘说明’ 分支名

在这里插入图片描述

·

·

保存与恢复现场

当事情处理到一半突然有其他紧急的任务需要切换分支时,可以保存现场,等处理完其他紧急任务回来后再恢复现场。

$ git stash

在这里插入图片描述
·

$ git stash list

在这里插入图片描述

·

$ git stash pop

在这里插入图片描述

与Github的交互

● 添加ssh账户

(1)点击账户头像后的下拉三角,选择’settings’

如果某台机器需要与github上的仓库交互,那么就要把这台机器的ssh公钥添加到这个github账户上

在这里插入图片描述

点击’SSH and GPG keys’,添加ssh公钥。

在这里插入图片描述

·

(2)在ubuntu的命令行中,回到用户的主目录下,编辑文件.gitconfig,修改某台机器的git配置。

在这里插入图片描述

(3)使用如下命令生成ssh密钥。

$ ssh-keygen -t rsa -C “邮箱地址”

在这里插入图片描述

·

(4)进入主目录下的.ssh文件,下面有两个文件。

公钥id_rsa.pub
私钥id_rsa

查看公钥内容,复制此内容

在这里插入图片描述

·

(5)回到浏览器中,填写标题,粘贴公钥

在这里插入图片描述

·

·

● 克隆项目

(1) 复制git地址

在这里插入图片描述

(2) 在主机上使用命令

$ git clone 复制的git地址

(3) 克隆出错时使用以下红框内的命令

在这里插入图片描述

·

·

● 上传分支

$ git push origin 分支名称

将该分支上的所有本地提交推送到远程库,推送时要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上

·

● 将本地分支跟踪服务器分支

$ git branch --set-upstream-to=origin/远程分支名称 本地分支名称

本地分支跟踪远程分支,在提交了数据后,上传分支只需在终端输入git push即可自动上传
·

● 从远程分支上拉取代码

$ git pull origin 分支名称

将远程分支上的代码下载并合并到本地所在分支

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此时一位小白路过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值