Git命令,分支合并,版本回退(个人理解)

Git介绍

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds(林纳斯)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Git基础命令

Git中任何已提交的东西几乎总是可以恢复的

git config --global user.name 用户名 设置用户签名

git config --global user.email 邮箱 设置用户签名

git init 初始化本地库

git status 查看本地库状态

git add 添加到暂存区

git commit -m “日志信息” 文件名 提交到本地库

git commit -a -m “日志信息” 直接添加暂存区并且提交 (需要添加过一次暂存区以后才可以使用)

git .gitignore 需要忽略的文件

git log 查看详细版本信息

git reflog 查看历史记录查看前7位精简版的版本号

mv test.txt mry.txt 修改文件名

git status -s 显示简洁的状态

  • ?? 表示为跟踪
  • A 表示添加到了暂存区
  • M 修改过的文件

git diff 修改之后还未添加到暂存区中的内容

git diff staged 添加到暂存区后还未提交的内容

rm 文件 在工作区移除文件

git rm 文件 在git中移除文件

git rm log/*.log 删除log/目录下的所有扩展名为.log的文件

如果仅仅需要不让git管理这个文件
git rm --cached 文件名 : 工作区还有文件,本地仓库没有文件

git mv test.txt mry.txt 修改暂存区中文件名称
相当于下面三句:
mv test.txt mry.txt
git rm test.txt
git add mry
要在提交前删除旧的文件名

git reset HEAD 文件名 取消暂存区中的文件
(默认使用的mixed,命令比较危险)

git checkout – 文件名 撤销之前所做的修改
(这个命令非常危险,他会用最近一次提交的版本覆盖掉它)

cat 文件名查看文件内容

git remote 远程仓库URL

git remote -v 远程仓库对应的URL,以及简写

git remote add 简洁名称 远程仓库URL

git remote rename 名称 重命名名称

git remote remove 仓库 移除远程仓库

git fetch origin 与服务器同步。从服务器取得所有本地尚未包含的数据,然后更新本地数据库,最后把origin/master指针移动到最新的位置上

git checkout 分支名称 切换分支

$ git log --oneline --decorate --graph --all 查看分支历史

git branch -v 查看分支上的最新提交

git branch -u 远程分支名 可以更改当前分支与远程分支绑定

git checkout -b 分支名称 创建并且切换到那个分支上

是下面两句的简写:
git branch 分支名称
git checkout 分支名称
git push origin --delete 远程分支名 删除远程分支

git log --oneline --decorate --graph --all 查看历史分叉情况

git branch -d 分支名 删除分支

git merge 需要合并的分支 分支合并

git mergetool 可视化工具分支合并用

gitlab生成SSH秘钥 ssh-keygen -t rsa -C 账号

暂存区和工作区是各个分支公用的部分
git stash,在当前分支git statsh的内容可以在其他分支git statsh pop出来.

merge合并

原分支图
merge分支合并: 实际上是一个三方合并。分别对比C2与C3,C2与C4,C3与C4,这三项都没有冲突时可以直接合并。如果合并时出现了代码冲突(不同的版本修改了同一部分代码),需要手动解决冲突,利用Git中的git mergetool可以解决代码冲突。找到两个分支的末端,将它们合并到一起
merge合并

rebase分支合并(变基)

rebase分支合并: rebase其实是变基,就是改变了基础节点。节点改变1
节点改变2
首先将提交到C4的部分提取出来,放到临时区保存,接着将整个dev分支重置为master分支,最后再将临时区中的C4拿回来。
可以用命令git rebase --abort 是无风险的操作,会回到rebase操作之前的状态,2个分支的commits毫发无损。 --abort取消错误的操作
git rebase --skip 是高风险的操作,引起冲突的commits会被丢弃(这部分代码修改会丢失)。 --skip跳过错误的操作

总结: 变基操作是把某条开发分支线上的工作在另一个分支线上按顺序重现。而合并操作是找出两个分支的末端,并把它们合并到一起

版本回退

版本回退的本质其实就是工作区,暂存区,本地仓库这三者之间的交互。
在这里插入图片描述

revert版本回退

HEAD相当于眼睛正在看的位置
revert版本回退:
Git的版本就像放书一样一层一层往上放的,比如一开始是A,我们可以看到,当更新到B时,我们就只能在上面看到B,往后同理。已经到版本C时,如果想要退到版本B,revert所做的就相当于在C版本后添加一个与C相反的镜像,这样C-C抵消了,我们就可以看到B了,如果想要在看到A,那就再继续在后面填一个与B相反的镜像,这样就可以看到A。

reset版本回退

首先reset版本回退有4中方式:
hard , soft , mixed , keep


  • hard:
    1.移动本地库HEAD指针
    2.重置暂存区
    3.重置工作区
    彻底回退,所有改动的内容都会消失,本地代码就是回退的版本的代码
  • soft(最常用的):
    1.移动本地库的HEAD指针
    回滚后仅仅是把本地库的指针移动了,暂存区和本地的代码是没有任何改变的,而上次改动已提交committed到本地库的代码显示是绿色即未提交状态(一般用这个)
    相当于撤销提交
  • mixed:
    1.移动本地库HEAD指针
    2.重置暂存区
    回滚后,不仅移动本地库的指针,同时上一次添加到暂存区的文件也没有了
    相当于撤销添加暂存区
  • keep:
    1.移动本地库HEAD指针
    2.暂存区不变
    3.重置工作区
    本地代码是当前回退的版本代码(类似hard操作),但是还没有提交的更改内容依旧还在(跟hard的区别)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我想睡到自然醒y

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

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

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

打赏作者

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

抵扣说明:

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

余额充值