git版本控制工具

1 篇文章 0 订阅

先推荐一个自学git的链接,可以动态的看到分支变化
git学习

1. git配置命令

1.1 设置用户名和邮箱

git首次安装必须要设置一次(只需设置一次),否则无法提交代码;签名的作用是区分不同人的提交人。注:此处设置的用户签名和登录github的账号没有任何关系。
(邮箱虚拟的也可以,git不会验证)

git config --global user.name 用户名
git config --global user.email 用户邮箱
cat ~/.gitconfig	#查看是否设置成功

git配置

1.2 初始化本地库

目的是让 git 获取目录的管理权

git init

初始化仓库

2. git常用命令

2.1 查看本地库状态—git status

红色表示未被追踪的文件
绿色表示已追踪的文件

2.2 添加暂存区—git add

注意,此时还没有生成历史版本

2.3 提交本地库—git commit

将暂存区的文件提交到本地库,形成自己的历史版本

git commit -m "log infomation" filename

这7个字符(9ae05ae)表示版本号
git commit

2.4 查看版本信息
  1. git reflog
    查看版本信息
    9ae05ae—提交的版本号
    HEAD—当前的指针
    HEAD->master—表示当前的指针指向master
  2. 查看详细信息:git log
    git log详细日志
2.5 修改文件

git 是按行来追踪文件的,即使修改一行,它也是先删除原来的一行,然后再添加新增的一行
修改一行
此时可以看到已经有三个提交记录了
提交记录

2.6 版本穿梭—git reset

如果想回退到之前的结点,可以使用命令

git reset --hard 版本号

可以根据版本号回退到任意一个结点
版本回退
原理是移动head指针,因为此处只有一个master分支,所以head一直指向master。
reset原理

3. git分支操作

在版本控制过程中,同时推进多个任务,就可以为每个任务创建单独的分支。使用分支意味着程序员可以把自己的工作从主线上分离出来,开发自己的任务的时候,并不会影响主线分支的运行。
使用分支可以同时并行推进多个功能的开发,提高开发效率;各个分支之间不会影响,如果一个分支开发失败,不会对其它分支造成任何影响。
所谓创建分支的本质就是多穿件一个指针。
如果HEAD指针指向哪个分支,那么当前就在哪个分支上。
分支开发

git branch 分支名		#创建分支名
git branch -v			#查看分支
git branch -d 分支名		#删除分支
git branch -D 分支名		#强制删除分支
git checkout 分支名		#切换分支
git checkout -b 分支名	#创建并切换分支
git merge 分支名			#把指定的分支合并到当前分支上

1.创建分支是基于当前切换的分支创建的,所以两个分支刚开始是一模一样的,版本号也相同
创建分支
2. 如果master分支没有修改代码,且hot-fix分支是基于master分支创建出来的,那么在hot-fix分支上修改代码再合并到master分支的时候是不会产生冲突的。
3. 如果两个分支在同一个文件的同一个位置有两种不同的修改,那么合并分支的时候就会产生冲突,必须人为解决冲突。产生冲突必须手动打开有冲突的文件,然后人工确认需要保留哪部分的代码。(可以用git status查看哪些文件产生冲突)
产生冲突
查看冲突的文件
4. 冲突代码的格式

<<<<<<<HEAD		# 当前分支
当前分支的代码
=======
要合并的代码
>>>>>>>hot-fix	# 要合并的分支
#根据实际情况选择要保留的代码,并把>、<、==全部删掉

在修改代码解决完冲突之后还需添加到暂存区,然后执行提交,注:提交的时候不能带文件名,否则会报错,因为git不知道用哪个分支的文件
提交错误
正确合并

4. github远程仓库

4.1 创建远程仓库别名

为了方便操作,首先会给远程仓库起别名,来代替一串链接

git remote -v					# 查看所有远程地址别名
git remote add 别名 远程地址		# 给远程地址起别名

在这里插入图片描述

4.2 推送到远程分支
git push 别名 分支名		# 推送分支到远程

推送分支
问题描述:不能连接到远程仓库
解决办法:没有秘钥或者ssh秘钥过期了

ssh-keygen
cd ~
cd .ssh/
cat id_rsa.pub

将一串秘钥复制到github仓库即可
添加秘钥
添加完之后再次推送即可
推送分支

4.3 拉取远程分支
git pull 别名 远程分支名		#拉取远程仓库分支的代码

拉取分支

4.4 克隆远程库

克隆相当于:拉取代码、初始化本地仓库、创建别名origin

git clone github链接

链接
克隆仓库
如果是别的电脑可以直接克隆仓库,因为是开源的,但是如果想要让其他人能够推送代码则必须要将这个人加入到团队中去。
添加权限
将邀请函发送给对方,对方登陆github账户后点击邀请函,接收邀请即可。这样不仅可以拉取代码,还可以推送自己修改的代码!

5. git进阶命令

5.1 git rebase

当执行rebase操作时,git会从两个分支的共同祖先开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。

//将master分支衍合到feature分支
git checkout feature
git rebase master
//这两条命令等价于git rebase master feature

如图,master指基分支、目标分支;feature指待变基分支;衍合完后虚线内的分支就不存在了(和merge不一样)
git rebase
git merge会合并分支,相当于多了一次提交记录,git rebase是变基操作,就是改变你代码分支的基底(分支是从哪个节点开始的)

//将master分支合并到feature分支
git checkout feature
git merge master

git merge
推荐两个链接:
git rebase
git rebase 和 git merge的区别

5.2 版本回退git reset

硬回退

git reset --hard 版本号
git reset --hard HEAD^
#重置 HEAD 指针、index 暂存区和工作区。这个才是完整的版本回退
#如果本次修改未提交,那么硬回退后本次修改永久被删掉了

软回退

git reset --soft 版本号
git reset --soft HEAD^
#仅重置HEAD指针,即只改变 HEAD 的指向,但保持工作区和暂存区不变
#只回退了commit的信息,如果还要提交,直接commit即可;

比如现在有三个提交
在这里插入图片描述
我想要将最后两个提交合并为一个提交,那么我首先应该软回退到上一个节点,毕竟我的修改不能丢失,应该执行

git reset --soft HEAD^

此时发现暂存区有个未提交的修改,也就是我们想要合并提交的那个文件
在这里插入图片描述
执行

git commit --amend

会将这次的提交追加到上一次的提交日志中,这样后两个提交日志就合并成一个提交了
软回退

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值